此文在vim中完成,全文較長,請耐心閱讀。自從去年開始嘗試使用神器vim,經(jīng)過數(shù)月使用,我對編輯器有了新的認識。觀念可以說是發(fā)生了翻天覆地的變化。
即以此文獻給在vim學(xué)習(xí)中的人們。
編譯及配置好的windows版vim包,linux版的配置包,vim hacking等資料(見此鏈接):
http://cid-5f8d83c1437ef717.office./browse.aspx/vim
vim 配置&插件分享
Date: 2010/07/23
version: 0.7
0. 引言
俗話說,工欲善其事,必先利其器。
一個好的順手的工具,可以大大的提供工作的效率??梢宰屔钭兊酶篮谩?/p>
目前在linux下做開發(fā),最常用最強大的兩種編輯器為vim和emacs。
vim稱得上是編輯器之神,幾乎所有的平臺都有提供,簡單快捷。
而emacs是神用的編輯器,emacs更像是一個操作系統(tǒng)(據(jù)說emacs還提供了煮咖啡的接口
)。關(guān)于emacs有一個笑話,使用emacs的人只需要longin -> run emacs -> logout即可。
vi還是emacs更好的爭論,已經(jīng)持續(xù)了幾十年,而且也將繼續(xù)進行下去。我們無意爭論這
些,適合自己的才是最好的。
有很多朋友都在用vim,也經(jīng)常聽到有人抱怨“vim怎么那么難用”,不可否認vim確實
有一個比較陡峭的學(xué)習(xí)曲線,但是一旦掌握,將會受益終身。不過有很多人都是在用默
認的配置,或者在使用vi,這樣不能說是錯,但是效率會低很多~要高效率的使用工具,
必須對它進行很好的調(diào)整。今天跟大家分享一下我的vim的配置及常用插件。
1. 安裝vim
1.1 下載vim
vim的最新版可以從官方網(wǎng)站 http://www. 下載到,目前最新版為7.2。不過
如果你有興趣,推薦下載源碼編譯,目前svn上的源碼已經(jīng)patch到了7.2.446,7.3已經(jīng)
進入beta階段。
1.2 在windows下安裝vim
windows下安裝vim只需要執(zhí)行安裝程序,選擇安裝路徑,然后一路next即可完成。
windows下安裝vim完成后通常會有如下目錄結(jié)構(gòu):
E:\Vim\vim72\ vim主程序,及其默認插件的安裝目錄
E:\Vim\vimfiles\ 自行安裝插件的目錄
E:\Vim\_vimrc vim配置文件
1.3 在Linux下安裝vim
通常linux的發(fā)行版都會自帶編譯好的vim在內(nèi),不過這個通常版本會比較老,或者是一個
small版的,所以我們需要從源碼編譯最新的huge版(huge為vim編譯時的一個參數(shù),
huge版會包含最多的程序特性,tiny版為最少)
1.3.1 下載
通過svn下載vim源碼:
cd ~/
svn co https://vim.svn./svnroot/vim/vim7
1.3.2 編譯 & 安裝
windows下編譯
可以使用vc2008也可以使用MinGW或者gcc等都可以。
VC2008,打開cmd,進入源碼所在的目錄,執(zhí)行src目錄下的msvc2008.bat
然后,分別執(zhí)行
編譯gvim
nmake -f Make_msvc.mak FEATRUES=HUGE GUI=YES OLE=YES
編譯vim
nmake -f Make_msvc.mak FEATURES=HUGE GUI=NO
其他編譯器基本一致,只需要替換對應(yīng)的指令及makefile即可。
linux下編譯
cd ~/vim7
./configure --with-features=huge
make
make install
1.3.3 創(chuàng)建配置文件
將現(xiàn)有的vim配置文件復(fù)制到 ~/ 下,或者新建配置文件。
cp dest_path/.vimrc ~/.vimrc
or
touch ~/.vimrc
1.3.4 創(chuàng)建插件目錄
mkdir ~/.vim
1.3.5 懶人的方法
直接將我提供的壓縮包解壓到 ~/ 下即可
cd ~/
tar zxvf vimconfig.zip
1.4 vim使用
如果你是vim新手,推薦先花幾十分鐘時間看一遍vimtutor,了解基本的操作。
windows下執(zhí)行對應(yīng)的快捷方式。
linux下需要執(zhí)行vimtutor命令。
2. vim配置文件簡介
2.1 vimrc簡介
.vimrc(linux)/_vimrc(windows),這個文件是vim的標準配置文件名,實質(zhì)上就是一堆
vim的腳本,命令的集合。這里我只介紹關(guān)鍵的一些設(shè)定,更多的設(shè)定可以看vimrc,
里面每項設(shè)定都有注釋。
2.1.1 set nocompatible
關(guān)閉vi兼容模式,只有關(guān)閉了兼容模式之后,vim添加的那些功能及設(shè)定才可以生效。
2.1.2 filetype plugin indent on
打開文件類型,插件及縮進功能。
2.1.3 leader鍵
vim定義了一個按鍵,稱為leader鍵,用于和其他按鍵組合,默認為"\",為了方便按我把
它map到了","上。leader鍵在定義快捷鍵的時候會寫為<leader>,此時只要按逗號就可以
了。
2.1.4 Fast Saving
vim默認保存文件需要使用:write或簡寫為:w,為了方便保存文件,我添加了一個
快捷鍵來保存(隨時保存文件是一個好習(xí)慣)
nmap <leader>w :w!<cr>
在正常模式下leader鍵,然后按w即可。
2.1.5 syntax enable
打開語法高亮,設(shè)定此項后,對于不同的關(guān)鍵字,變量等就會以不同的顏色顯示,在
很多編輯器中都有此功能。
2.1.6 字體設(shè)置
此項的設(shè)置方法見vimrc中第49-54行
2.1.7 colorscheme
此命令用來設(shè)置vim的配色,在vim官網(wǎng)中大概有上千種不同的配色,下載后放入
~/.vim/color目錄中,然后使用colorscheme命令來指定對應(yīng)的配色即可。比如我要使用
自帶的desert,只需在vimrc添加如下命令,或者在運行時動態(tài)指定。
:colorscheme desert
見vimrc文件第56-66行。
2.1.8 set cursorline
高亮光標所在行,如果你不喜歡這個特性,注釋配置文件中的此句即可。
2.1.9 顯示tab及行尾空格
set listchars=tab:>-,trail:-
set list
將tab符顯示為>---,并將行尾的空格顯示為-。如果你不喜歡這個特性,注釋這兩句
即可。
2.1.10 移除行尾空格
按F2移除行尾空格,美化代碼
map <F2> :%s/\s*$//g<cr>:noh<cr>''
2.1.11 顯示/隱藏工具欄和菜單欄(僅對于gvim有效)
"默認不顯示工具欄和菜單欄
set guioptions-=m
set guioptions-=T
按F顯示/隱藏工具欄和菜單欄
map <silent> <F4> :if &guioptions =~# 'T' <Bar>
\set guioptions-=T <Bar>
\set guioptions-=m <Bar>
\else <Bar>
\set guioptions+=T <Bar>
\set guioptions+=m <Bar>
\endif<CR>
2.2 vim幫助
vim的幫助功能非常好用,任何命令的用法都可以打:help xx 進行查詢。
vim的幫助文件格式為txt,保存在doc目錄下,使用:help xx 調(diào)用之后可以按
ctrl+]進行跳轉(zhuǎn),ctrl+t返回。
因為幫助的跳轉(zhuǎn)功能需要用到特殊的tag,而此tags需要在vim 中使用
:helptags ~/.vim/doc
命令生成,每當添加或刪除了幫助文件之后都需要進行此操作。
3. 插件簡介
以下為我所安裝的一些插件,為了更便于理解,我為每個插件錄制了一段演示視頻。
3.1 GetLatestVimScript
介紹自定義插件之前,先要介紹一個特殊的文件GetLatestVimScripts.dat,位于
~/.vim/GetLatest/ (linux)
或者
$vim\vimfiles\GetLatest\ (windows)
目錄下。
此文件為vim自帶插件GetLatestVimScripts的配置文件,用來更新插件之用,格式如下:
ScriptID SourceID Filename
--------------------------
31 7218 :AutoInstall: a.vim
前兩行為必須內(nèi)容,第三行第一個參數(shù)是此插件在 www. 上對應(yīng)的ID號,第二個
參數(shù)為你當前使用的版本號,第三個參數(shù)表示此腳本會在下載完成后自動安裝(
windows下無效),第四個為插件名。
執(zhí)行:GVLS或:GetLatestVimScripts命令即可自動開始下載插件。
更詳細幫助,可以用:help GeLatestVimScript命令查詢。
3.2 a
用于在.h與.c/.cpp之間快速切換,在normal模式下輸入命令:A
http://www./scripts/script.php?script_id=31
3.3 drawit
這是一個很有趣的插件,可以很方便的使用ascii碼繪圖,使用:help drawit 查詢
drawit的用法。<leadr>di為開始繪圖,<leader>ds為停止繪圖。
http://www./scripts/script.php?script_id=40
3.4 bufexplorer
vim中可以同時打開多個文件,可以在不同的tab中打開,也可以在同一個tab中分割或者
同一個tab中后臺打開,雖然vim本身提供了后臺切換的命令,不過比較繁瑣,要很方便的
進行切換就需要用到此插件了。此插件默認的快捷鍵為<leader>be
http://www./scripts/script.php?script_id=42
3.5 TeTrIs
這個插件不解釋。??吹矫趾芏嗳似鋵嵕投?span style="color: #ff00ff;">(哥你懂的),快捷鍵是<leader>te
http://www./scripts/script.php?script_id=172
3.6 cvim
這個插件是c/cpp的插件,把vim變成c/c++的IDE,在gvim中會多出一個菜單,在vim中就
只能用快捷鍵來進行對應(yīng)的操作了。相關(guān)的快捷鍵較多,可以查看幫助獲得更多的信息。
:help csupport
常用快捷鍵有以下幾個:
\rr 運行
\rc 編譯
\rl 連接
\rm make
\ra 設(shè)定運行的參數(shù)
http://www./scripts/script.php?script_id=213
3.7 taglist
此插件的作用是分割出一個窗口用來現(xiàn)在當前打開的文件的tag,:Tlist即可打開tag窗口
還有其他:Tlistupdate, :tlisttoggle等命令,詳見幫助:help taglist.txt
順帶一提~此插件我在vimrc中映射的快捷鍵為<leader>t
http://www./scripts/script.php?script_id=273
3.8 bash-support
此插件與cvim一樣,都是功能增強類的插件,不過這個插件從名字就可以看出,是用來支
持bash腳本的,做bash腳本開發(fā)的人可以用到,其他人其實也就沒什么必要了,完全可以
刪掉對應(yīng)的文件。
http://www./scripts/script.php?script_id=365
3.9 mru
這個插件用來記錄最近打開過的文件,gvim中增加了一個菜單列表,在vim中需要使用命
令查看:MRU或:Mru
http://www./scripts/script.php?script_id=521
3.10 NERD_commenter
這個插件是用來添加注釋的??梢杂脕碜⑨尩粢恍谢蛉舾尚校旖萱I為
<leader>cc 添加注釋
<leader>cu 取消注釋
http://www./scripts/script.php?script_id=1218
3.11 yankring
vim的剪貼板支持多重記錄,也就是說凡是你復(fù)制過的文字都已經(jīng)被收集了,在以后可以
直接從剪貼板中選取。不過同樣自帶的功能不是很方便,所以就有了這個插件,此插件的
常用命令如下:
:YRShow 打開yank窗口
:YRClear 清除所有的記錄
更多命令請查看幫助:help yankring
順帶一提~ :YRShow在vimrc中映射的快捷鍵為<leader>y
http://www./scripts/script.php?script_id=1234
3.12 mark
這個插件呢~如其名mark,呃還真不好解釋,直接看視頻吧~
常用的快捷鍵有
<leader>m 標記某symbol
<leader>n 清除某symbol的mark
# 向上搜索同色的mark
* 向下搜索同色的mark
http://www./scripts/script.php?script_id=1238
3.13 FencView
這個插件用于檢測文件的編碼(unicode,utf8,gbk,euc-jp等等),在打開一個文件的
時候會自動進行編碼檢測,有些文件有可能自動檢測失敗,此時只要執(zhí)行
:FencAutoDetect 來重新偵測即可。
PS:此插件需要iconv支持,windows下需要自行下載iconv.dll放入vim.exe所在目錄,
linux一般都自帶了iconv,所以不需要進行下載。
http://www./scripts/script.php?script_id=1708
3.14 echofunc
此插件用來提示c/c++函數(shù)的原型,在寫函數(shù)調(diào)用的時候比較有用。
當輸入到xx(的時候,就會在狀態(tài)欄提示對應(yīng)的函數(shù)原型。
當有多個原生存在的時候,按ALT+, ALT-進行切換。
此插件需要生成對應(yīng)tags文件,在生成tags時加上--fileds=+lS即
ctags -R --fields=+lS
順帶一提~ vimrc中生成tags文件的快捷鍵為F12
http://www./scripts/script.php?script_id=1735
3.15 vim-autocomplpop
這個插件是用來自動彈出補全列表,也就是傳說中的自動補全了,不用解釋~ 也沒有啥快
捷鍵啥的,just typing~
http://www./scripts/script.php?script_id=1879
3.16 EasyGrep
這個插件,是對vim的grep命令進行了封裝,如果沒有此插件,要進行g(shù)rep搜索,需要鍵
入:vimgrep xx ** 然后在搜索完成后再鍵入:cope打開Quickfix列表。有了這個插件只需
將光標移動到要搜索的單詞上,然后<leader>vv即可~ 也可以<leader>vo來設(shè)定EasyGrep
的參數(shù)。更多的命令及快捷鍵,去看幫助吧~
http://www./scripts/script.php?script_id=2438
3.17 vimim
這個插件呢。。是利用vim的智能補全功能實現(xiàn)中文輸入法(拼音,雙拼,五筆,及各種
形碼),在插入模式下按CTRL+\切換到中文模式,然后輸入對應(yīng)的字即可。
vimim在沒有本地詞庫的情況下會進行云輸入,連接搜狗,QQ等云輸入法的在線詞庫,云
輸入對整句組詞等支持較好,不過對網(wǎng)絡(luò)的依賴也比較大。
當然也可以自己下載本地的詞庫,速度更快,不受網(wǎng)絡(luò)影響,不過組句什么的就要比在
線的云輸入法差很多了。
這篇文章有很大一部分就是使用vimim完成的~
vimim我就不錄視頻了,官方提供的三個視頻要比我做的好的多~
vimim官方網(wǎng)址
http://vimim./svn/vimim/vimim.html
3.18 sinpMate
這是一個非常傳奇的插件,代碼片段完成,支持c/c++,python,javascript,html,perl
,php等語言,并且可以通過自定義來實現(xiàn)更多功能。
此插件使用非常簡單,只要輸入某些可以完成的提示符,然后按Tab鍵即可。
http://www./scripts/script.php?script_id=2540
3.19 txtbrowser
這個插件有兩個作用:
1) 用來按照固定格式高亮txt文件中的關(guān)鍵字
2) 將固定格式的標題輸出到taglist中顯示
不需要啥快捷鍵,在vim啟動時自動加載只要是固定格式即可。
http://www./scripts/script.php?script_id=2899
3.20 histwin
vim7之后提供了一個非常有用的特性——undo-branch,不過同樣自帶的并不是很
好用,所以我們需要使用這個插件。這個插件非常易用,只需要輸入:UB即可看到
undolist的內(nèi)容。并可以對不同的branch進行對比,或者回到以前的某個修改版,不過
undo list 的缺點是在vim關(guān)閉之后就失效了,它只能記錄vim在運行時的修改記錄。
http://www./scripts/script.php?script_id=2932
3.21 zencoding
此插件用于快速編輯html文件,和snipMate插件比較類似,不過功能更強大一些。
默認激活補全的快捷鍵為Ctrl+y,
由于我本身寫html也不是很多,所以此插件的演示視頻請看官方提供的
http:///7405114
另外這里還有一篇網(wǎng)友寫的教程
http:///blog/tag/ZenCoding/
http://www./scripts/script.php?script_id=2981
3.22 cscope_maps
cscope_maps并沒有出現(xiàn)在GetLatestVimScript.dat中的插件,此插件的作用為給vim添加
cscope的快捷鍵。
cscope是個是東西呢~ cscope和ctags差不多,但是它僅支持c語言。不過cscope的功能要
比ctags強大的多,ctags進支持definition查詢,而cscope支持call,reference,
definition,include等等查詢,在比較大的項目中可以很方便的查看函數(shù)間的調(diào)用關(guān)系
等。
在cscope的官方網(wǎng)站,有一篇專門介紹在vim中使用cscope的文章
英文:http://cscope./cscope_vim_tutorial.html
中文:http://www./manual/cscope_vim_tutorial_zh.html
3.23 CppOmniComplete
vim目前自帶的智能補全不支持c++,而且因為一些奇怪的原因,性能非常之差,每次彈出
補全菜單都需要等很久。還好vim是支持擴展的,有一個第三方的插件可以使用。
cppomnicomplete支持c++/c的智能補全,不過因為需要tag支持,所以在建立tags時需要
加上特殊的參數(shù)。
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
在生成了對應(yīng)的tags文件后,只要在輸入結(jié)構(gòu)體或者類對象的時候按.或者
->就會彈出補全菜單,有時候可能未彈出補全菜單只需按Ctrl+X Ctrl+O即可手動彈出
菜單。
http://www./scripts/script.php?script_id=1520
4. 其他
vim作者Bram Moolenaar曾經(jīng)做過一個演講叫《7 Habits For Effective Text
Editing》,介紹了如何高效的使用編輯器,推薦有興趣的朋友看看.
vim的書籍比較多,vim-manuscript這本書作為入門教材非常不錯。
hacking vim算是比較新的書,作為vim進階參考也比較不錯。
vim的相關(guān)文章,網(wǎng)絡(luò)上還可以找到很多,有很多高手存在。以下是幾個比較不錯的網(wǎng)站
Wu Yongwei's Programming Page
http://wyw./
vimer的程序世界
http://www./
Vim - 閑耘 Wiki
http://hotoo./svn/vimwiki/Vim.html
vim google group(需要翻墻)
https://groups.google.com/group/Vim-cn/
水木清華vim版
http://www./bbsdoc.php?board=VIM
豆瓣vim小組
http://www.douban.com/group/vim/
善用佳軟 http:///
善用佳軟是以一個非程序員的角度來使用vim的,也有很多值得學(xué)習(xí)的地方。
5. FIN
不知不覺的扯了這么多,感謝一直到現(xiàn)在還沒有被惡心死的各位。
各位如果在使用中遇到任何問題,歡迎提出我將竭盡所能來提供幫助。
當然如果你發(fā)現(xiàn)了更加高效或者有趣的用法也請與我分享。多謝~~
|