一直用未经配置的vi,甚是麻烦,于是乎参考了几位牛人的配置,结合我自己的实际需要,把我的VIM做了一番配置,也算作是对这款神器入门了。
把/etc/vimrc做个备份,然后新建一个/etc/vimrc,内容如下:
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 显示相关 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "显示行号 set nu "不要图形按钮 set go= "高亮语法 syntax on "允许折叠 手动折叠 set foldenable set foldmethod=manual set foldcolumn=0 set foldlevel=3 "黑色背景 set background=dark "去掉vi一致性模式 set nocompatible "显示中文帮助 if version >= 603 set helplang=cn set encoding=utf-8 endif "配色方案 "colorscheme murphy "字体 if(has("gui_runing")) set guifont=Bitstream\Vera\Sans\Mono\10 endif "打开状态栏标尺 set ruler "突出显示当前行 set cursorline "设置魔术 set magic "隐藏工具栏 set guioptions-=T "隐藏菜单栏 set guioptions-=m "自动缩近 set autoindent set cindent "Tab键的宽度 set tabstop=4 "统一缩近为4 set softtabstop=4 set shiftwidth=4 "不用空格代替制表符 set noexpandtab "在段和行开始处使用制表符 set smarttab """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 其它实用设置 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "当文件被改动时自动载入 set autoread "共享剪贴板 set clipboard+=unnamed "从不备份 set nobackup set noswapfile "自动保存 set autowrite "处理未保存或只读文件时弹出确认 set confirm "搜索忽略大小 set ignorecase "搜索逐字符高亮 set hlsearch set incsearch "退格键正常处李indent,eol,start等 set backspace=2 "允许退格键和光标键跨越行边界 set whichwrap+=<,>,h,l "通过:commands命令输出文件哪一行被修改过 set report=0 "高亮显示匹配的括号 set showmatch "自动补全括号 :inoremap ( ()<ESC>i :inoremap ) <c-r>=ClosePair(')')<CR> :inoremap { {<CR>}<ESC>O :inoremap } <c-r>=ClosePair('}')<CR> :inoremap [ []<ESC>i :inoremap ] <c-r>=ClosePair(']')<CR> :inoremap " ""<ESC>i :inoremap ' ''<ESC>i :inoremap < <><ESC>i :inoremap > <c-r>=ClosePair('>')<CR> function! ClosePair(char) if getline('.')[col('.')-1] == a:char return "\<Right>" else return a:char endif endfunction filetype plugin indent on set completeopt=longest,menu "编码 set enc=utf-8 set fencs=utf-8,gb18030,gbk,gb2312,cp936,usc-bom,shift-jis set termencoding=utf-8 set encoding=utf-8 set fileencodings=utf-8,ucs-bom,cp936 set fileencoding=utf-8 "语言设置 set langmenu=zh_CN.UTF-8 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 新建文件标题 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetFileTitle()" "定义函数 func SetFileTitle() if $filetype == 'sh' call setline(1,"\#####################################################################") call append(line("."), "\# File Name:".expand("%")) call append(line(".")+1, "\# Author:") call append(line(".")+2, "\# Mail:@") call append(line(".")+3, "\# Created Time:".strftime("%c")) call append(line(".")+4, "\#####################################################################") call append(line(".")+5, "\#!/bin/bash") call append(line(".")+6, "") else call setline(1, "/*********************************************************************") call append(line("."), " > File Name:".expand("%")) call append(line(".")+1, " > Author:") call append(line(".")+2, " > Mail:@") call append(line(".")+3, " > Created Time:".strftime("%c")) call append(line(".")+4, "**********************************************************************/") call append(line(".")+5, "") endif if &filetype == 'cpp' call append(line(".")+6, "#include<iostream>") call append(line(".")+7, "using namespace std;") call append(line(".")+8, "") endif if &filetype == 'c' call append(line(".")+6, "#include<stdio.h>") call append(line(".")+7, "") endif autocmd BufNewFile * normal G endfunc """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 键盘命令 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "去空行 nnoremap <F2> :g/^\s*$/d<CR> "比较文件 nnoremap <C-F2> :vert diffsplit "按F5编译运行C/C++ map <F5> :call CompileRunGcc()<CR> func! CompileRunGcc() exec "w" if &filetype == 'c' exec "!gcc % -o %< && ./%<" elseif &filetype == 'cpp' exec "!g++ % -o %< && ./%<" elseif &filetype == 'sh' :!./% endif endfunc "按F8调式C/C++ map <F8> :call Rungdb()<CR> func! Rungdb() exec "w" exec "!g++ % -g -o %< && gdb ./%<" endfunc """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 插件设置 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "ctags设置 set tags=tags let Tlist_Auto_Open=1 let Tlist_Sort_Type="name" let Tlist_Use_Right_Window=0 let Tlist_Compart_Format=1 let Tlist_Exit_OnlyWindow=1 let Tlist_File_Fold_Auto_Close=0 let Tlist_Enable_Fold_Column=0 let Tlist_Show_One_File=1 "NERDTree树形文件导航插件 map <F10> :NERDTreeToggle
其中用到了几个插件,需要安装一下,fedora下 # yum install vim-taglist ctags vim-nerdtree即可,其中前两个是ctags插件,可以迅速定位变量、函数的声明和调用位置,显示程序中所有定义的变量和函数清单等;最后一个插件可以显示树形的目录和文件清单,我的配置中按F10键打开。
几个常用的技巧
1、切换分隔的不同窗口(或文件) Ctrl+w ,连续两次即可
2、改变分隔窗口的位置 Ctrl+W j 移到下边,h移到左边,k移到上边,l移到右边
3、改变分隔窗口的大小 n Ctrl+W >,其中>为增大,<为减小,n为增大或减小的数量
4、横向分隔 split,横向分隔并打开一个新文件 split 文件路径,纵向分隔vsplit