最近安装的suse enterprise 10上面,vim还是默认的设置,使用起来很不顺手,花了一晚上的时间做了一下配置,从网上差了许多资料,整理一下,为以后做个备份~~
vim版本:7.3,suse10默认安装的版本是6.4有点老,nerdtree不支持,先从vim官网上下载个最新版本,root用户安装;
1. vimrc基础配置:
set nocp
syntax on "语法高亮"
set nocompatible "使用vim的键盘模式"
set nu "设置行号"
set nobackup "不需要备份"
set confirm "未保存或者只读时,弹出确认"
set mouse=a "鼠标可用"
set selection=exclusive
set selectmode=mouse,key
set showcmd "显示未完成命令"
set tabstop=4 "tab为4个空格"
set shiftwidth=4 "行交错"
set cindent "c文件类型自动缩进"
set autoindent "自动对齐"
set smartindent "智能缩进"
set hlsearch "高亮查找匹配"
set background=dark "背景色"
set showmatch "显示匹配"
set ruler "右下角显示光标位置"
set fillchars=vert:/ ,stl:/ ,stlnc:/ "被分割的窗口之间显示空白"
set noerrorbells "不发出警告声"
set foldenable
set foldmethod=syntax
nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR> "空格控制折叠"
filetype plugin indent on
set fileencodings=gbk,utf-8,gb2312,gb18030,cp936
set termencoding=gbk,utf-8,gb2312,gb18030,cp936
2. 树状结构
需要NERDTree插件,我这边下载的是5.8的版本,下载完之后在.vim文件夹下解压即可;
在vimrc中添加快捷键:
nnoremap <F1> :NERDTree <cr>
F1可以显示目录树状结构。(也可以替换为其他的键,我比较习惯与F1)
3. 自动补全和ctags设置
我用vim主要是用来写c和c++代码,偶尔也会有一些sh脚本,所以如果有c和c++类型的自动补全,会方便很多。
这里需要两个插件,一个是ctags,用来生成tags文件;一个是omnicppcomplete,自动补全的插件。与NERDTree一样,直接解压到.vim文件夹下。
设置生成tags的快捷键:
nnoremap <F2> :sil !find -maxdepth 1 -name '*.[ch]' -print0 -o
/ -name '*.cpp' -print0 /| xargs -0 ctags --c++-kinds=+p --fields=+iaS --extra=+q <cr>
nnoremap <F3> :sil !find -maxdepth 1 -name '*.[ch]' -print0 -o
/ -name '*.h' -print0 /| xargs -0 ctags --c++-kinds=+p --fields=+iaS --extra=+q <cr>
分别设置F2和F3为生成C++ tags的快捷键,有了tag文件,在编辑文件的时候,直接ctrl+n,ctrl+p就可以自动补全了。
如何在多个文件(一个工程中)做到自动补全,这个还没有研究过,有知道的朋友可以指导下?
4. 自动生成文件头
主要就是一些日期,作者等描述信息,自己写一个模版放到.vim文件夹下,假设叫做skeleton,在vimrc中编辑下面的命令:
"预生成文件头"
fun! LoadSkeleton()
let file = $HOME . "/.vim/skeleton"
if filereadable(file)
exe "0read " . file
exe "normal! G"
endif
exe "call CreateTime()"
exe "normal! G"
endfun
"生成时间"
fun! CreateTime()
if line("$") > 20
let l = 20
else
let l = line("$")
endif
exe "1," . l . "s/date: .*/date: " . strftime("%Y %b %d %X") . "/e"
endfun
"设置预加载文件头的文件类型"
au BufNewFile *.c call LoadSkeleton()
au BufNewFile *.h call LoadSkeleton()
au BufNewFile *.cpp call LoadSkeleton()
au BufNewFile *.sh call LoadSkeleton()
我这边skeleton的格式如下:
/************************************************
*
* author: ####
* date: 2011 Mar 19 00:57:10 AM
* mail: ####
* version: 1.0.0.0
* function:
*
* **********************************************/
一个很简单的头,vimrc中替换了时间,并对于.c,.cpp,.h,.sh结尾的文件自动加载这个头;
5. 关于折叠
如下设置,可以用空格键直接控制折叠
set foldenable
set foldmethod=syntax
nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo') <CR>
基本上vim就配置ok了,用起来也比较顺手,宽屏下vsp加tree看起来确实很舒服,hiahia。
我的vim配置文件上传到了资源里面,nerdtree,ctags和omnicppcomplete都已经在里面(vim版本7.3)。地址是http://download.csdn.net/source/3107162