現在的工作是在unix平臺,平時是用UE的ftp功能來寫代碼的,有時候文件大了,傳輸就很慢,而且經常不是很穩定。
下定決心要學學Vim(現在應該沒有人用原始的vi了吧),在經過二周的使用后,發現Vim實在是非常不錯的一個editor,現在我在Windows上也裝了一個Vim,使用起來頗為順手,基本上已經替代了UE。

下面介紹一些我在使用Vim的過程中得到的一些心得:
1. 在使用Vim之前一定要進行一些設置,否則你使用起來肯定會很不爽,下面是我的配置

?1 " ==============================================
?2 " ?General?settings
?3 " ==============================================
?4
?5 set?nocp
?6 set?ru
?7 " ?使用cindent
?8 set?cin
?9 set?cino = :0g0t0(sus
10
11 set?sm
12 set?ai
13 " ?縮近
14 set?sw=4
15 set?ts=4
16 " ?不展開tab為空格,反之set?et
17 set?noet
18
19 set?lbr
20 set?hls
21 set?backspace = indent , eol , start
22 set?whichwrap = b , s , < , > , [ , ]
23 set?fo+ = mB
24 set?selectmode =
25 set?mousemodel = popup
26 set?keymodel =
27 set?selection = inclusive
28 set?matchpairs+ = <:>
29
30 " ==============================================
31 " ?Cursor?movement
32 " ==============================================
33 nnoremap?<Down>?gj
34 nnoremap?<Up>?gk
35 vnoremap?<Down>?gj
36 vnoremap?<Up>?gk
37 inoremap?<Down>?<C-o>gj
38 inoremap?<Up>?<C-o>gk
39
40 nnoremap?<End>?g$
41 nnoremap?<Home>?g0
42 vnoremap?<End>?g$
43 vnoremap?<Home>?g0
44 inoremap?<End>?<C-o>g$
45 inoremap?<Home>?<C-o>g0
46
47 nmap?<C-F4>?:confirm?bd<CR>
48 vmap?<C-F4>?<ESC>:confirm?bd<Enter>
49 omap?<C-F4>?<ESC>:confirm?bd<Enter>
50 map!?<C-F4>?<ESC>:confirm?bd<Enter>
51
52 " ?打開語法高亮
53 syntax?on
54 " ?使用語法進行折疊
55 set?foldmethod=syntax
56
57 if?(has( " gui_running " ))
58 ????set?nowrap
59 ????set?guioptions+=b
60 ????colo?inkpot
61 else
62 ????set?wrap
63 ????colo?ron
64 endif
65
66 " ?設置swap文件的目錄
67 set?dir = D:\vim\tmp
68 " 設置備份文件的目錄
69 set?backupdir=D:\vim\bak
70
71 " ?設置leader的快捷鍵,原來的“\”太遠了,而且位置還不固定
72 let?mapleader = " , "

這里是一些基本設置
如果有什么不太清楚的,可以在Vim里normal模式下
:h 關鍵字
查看幫助

2. Vim教程
推薦先看看Vim自帶的Tutor(這可是位好老師)
用vimtutor啟動Vim
或者在Vim里面用:h?tutor來啟動
中文教程我推薦李果正的《大家來學Vim》
這里還有Vim的鍵位示意圖,可以打出來隨時查看哦

?
3. Vim的插件
有幾個插件強烈推薦
(1) A:在同名的cpp和h文件之間切換 http://www.vim.org/scripts/script.php?script_id=31
(2) NERD_comments:超強的注釋插件,支持很多語言的注釋風格,按照上面的設置,只需要",cc"就可以添加注釋了 http://www.vim.org/scripts/script.php?script_id=1218
(3) csupport:寫C/C++代碼必備 http://www.vim.org/scripts/script.php?script_id=213
(4) LargeFile:再也不用擔心打開大文件會慢了 http://www.vim.org/scripts/script.php?script_id=1506
(5) TipOfTheDay:多讀讀vim的tips會有很多收獲的,記得要經常更新tips文件啊 http://www.vim.org/scripts/script.php?script_id=88
(6) cppomnicomplete:提供C++中類/對象成員的補全(需要Vim7) http://www.vim.org/scripts/script.php?script_id=1520
(7) ColorSamplerPack:提供上百種顏色主題,必有一款適合你,不過大多數都是在GUI下才有相應的效果 http://www.vim.org/scripts/script.php?script_id=625
(8) vimcdoc:漢化的vim幫助 http://vimcdoc.sourceforge.net/

3. 在telnet中使用vim的顏色
如果是在linux中使用telnet,SecureCRT會自動使用合適的顏色來顯示vim不同的顏色,但是如果在其他unix下就會無法顯示正確的顏色,所有的東西都是同一種顏色。

在.vimrc中加入(^[的輸入方式是Ctrl-v然后輸入Esc):
if !has("gui_running")
set t_Co=8
set t_Sf=^[[3%p1%dm
set t_Sb=^[[4%p1%dm
endif
并在SecureCRT的模擬終端類型選擇ANSI,并鉤上ANSI Color,就可以顯示不同的顏色了

4. vim的自動補全功能
一般使用Ctrl+n就可以自動補全了,從Vim7后,C/C++的函數、變量或者是類的成員,使用Ctrl+x,Ctrl+o也可以自動補全。在安裝了cppomnicomplete后,對象的成員也可以用Ctrl+x,Ctrl+o來補全

5. 代碼折疊
許多editor都支持代碼折疊,Vim也不例外
常用的快捷鍵
zc 折疊代碼
zo 打開折疊的代碼
還有其他的快捷鍵可以查看幫助
:h fold

6. 自動格式化代碼
在Visual模式下,選中代碼按=就可以了
Normal模式下,按=會格式化光標所在行

7. 腳本支持
Vim不僅有內建的腳本功能,還支持Perl,Python,Tcl,Ruby和MzScheme這些流行的腳本語言編寫Vim的擴展

Vim的功能是不是很強大?
經過1年多的測試Vim 7.0也release了,還不快下載來試試
http://www.vim.org

Happy Vimming!

對于已經習慣了使用Vim但是要在Windows下編程的用戶
我還推薦
ViEmu,可以在VisualStudio下模擬Vi的編輯操作
不過只有30天的試用期