最近安裝的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