在home目录下编辑.vimrc(无则新建)。
syn on "语法支持
"common conf {{ 通用配置
set ai "自动缩进
set bs=2 "在insert模式下用退格键删除
set showmatch "代码匹配
set laststatus=2 "总是显示状态行
set expandtab "以下三个配置配合使用,设置tab和缩进空格数
set shiftwidth=4
set tabstop=4
set smartindent
set cursorline "为光标所在行加下划线
set number "显示行号
set autoread "文件在Vim之外修改过,自动重新读入
set ignorecase "检索时忽略大小写
set fileencodings=uft-8,gbk "使用utf-8或gbk打开文件
set fileencoding=utf-8
set termencoding=utf-8
set encoding=utf-8
set enc=utf-8
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
set hls "检索时高亮显示匹配项
set helplang=cn "帮助系统设置为中文
"set foldmethod=syntax "代码折叠
"set background=dark
colorscheme darkblue "配色方案
set clipboard+=unnamed "共享剪贴板
imap { {}<ESC>i<CR><ESC>V<O
imap ( ()<ESC>i
imap [ []<ESC>i
"}}
"conf for tabs, 为标签页进行的配置,通过ctrl h/l切换标签等
let mapleader = ','
nnoremap <C-l> gt
nnoremap <C-h> gT
nnoremap <leader>t : tabe<CR>
"conf for plugins {{ 插件相关的配置
"状态栏的配置
"powerline{
set guifont=PowerlineSymbols\ for\ Powerline
set nocompatible
set t_Co=256
let g:Powerline_symbols = 'fancy'
"}
"}}
"ctrl-F5编译且运行
map <C-F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
exec "w"
if &filetype == 'c'
exec "!g++ % -o %<.out"
exec "! ./%<.out"
elseif &filetype == 'cpp'
exec "!g++ % -o %<.out"
exec "! ./%<.out"
elseif &filetype == 'java'
exec "!javac %"
exec "!java %<"
elseif &filetype == 'sh'
:!./%
endif
endfun
map <F5> :call Compile()<CR>
func! Compile()
exec "w"
if &filetype == 'c'
exec "!g++ % -o %<.out"
elseif &filetype == 'cpp'
exec "!g++ % -o %<.out"
elseif &filetype == 'java'
exec "!javac %"
endif
endfun
注意中间两行imap是设置大中小括号的自动匹配与且完成大括号的缩进
解释一下。
imap是vim配置中的指令,就是做一个映射,语法就是
imap 要映射的东西 被映射成什么东西
按照这种理解,上面的那句就可以理解为:
映射“{”为
{}<ESC>i<CR><ESC>V<O
后面的东西就是vim中依次执行这些操作,一一分解如下:
{} 就是直接插入左右括号
<ESC> 就是按键盘的ESC键,切换到命令行模式
i 按键盘的i键,进入插入模式
<CR> 按回车,此时将右括号换行
<ESC> 就是按键盘的ESC键,切换到命令行模式
V 按住shift+v,就是选中当前行就是右括号所在的行
< 按住shift+,将当前行向左移动一个tab,此时右括号已经和左括号对齐
O 按住shift +o,在当前行(右括号)的前一行插入
其实就是告诉vim如果我们输入{ ,那就接下来做上面一系列操作。
至于 ( 和 [ 则是一个道理了。