emacs斷斷續續用了好幾年了,卻還是覺得不熟練,主要是自動補全和自動提示,感覺在emacs裡弄起來太複雜了。今天準備用vim來試試,看能不能方便點。
不管在win下還是在linux下,安裝好gvim後,把taglist,minibuffer,omnicppcomplete三個外掛程式拷貝到
vim的外掛程式目錄下(linux下可以放在使用者目錄的.vim下,windows的話可以放在vim安裝目錄的vimfiles下),然後重啟gvim插
件自動就生效了。
minibuffer:當同一個vim開啟多個buffer的時候,minibuffer自動在頂頭處開啟一個小buffer,挨個顯示每個buffer,直接在buffer處雙擊就可以切換。
taglist和omnicppcomplete都需要ctags的支援,linux上可以用apt安裝,或者下載原始碼自己編譯安裝,windows可以下載官方編譯好的版本放在vim安裝目錄下。
taglist:只要vim能在path路徑中找到ctags命令,taglist就可以成功運行,方法是執行命令:Tlist,再次執行可以關
閉。taglist啟動後,開啟一個原始碼檔案會自動在左側的taglist buffer顯示檔案的tag列表,可以通過滑鼠或鍵盤在tag間跳轉。
omnicomplete是vim內建的一個外掛程式,用來實現代碼自動提示的(可以實現c但不能實現c++自動提示),先要為工程產生ctags文
件,用命令ctags -R命令產生ctags檔案,然後在vim中用命令:set
tags+=/path/to/ctags把產生的ctags檔案加入到ctags列表中,這時在結構體的.或->後按C-X,C-O就會彈出提示
列表了。另外還有C-X,C-I等選項,具體的看文檔。預設的自動提示會用一個小buffer顯示詳細資料,可以用set
completeopt=longest,menu讓它只顯示一個詳細菜單,以節約螢幕空間。
omnicppcomplete:內建的omnicomplete不能實現c++的自動提示,c++還需要另外一個外掛程式
omnicppcomplete的協助,安裝好omnicppcomplete後重啟vim,omnicppcomplete會自動註冊c++語言的自動
提示。不過用ctags -R產生的ctags檔案資訊對於c++來說還嫌不夠,需要用ctags —c++-kinds=+p
—fields=+iaS
—extra=+q來產生ctags檔案,它會加入c++一些特有的資訊,這時omnicppcomplete就可以為c++實現自動提示了。並且
omnicppcomplete會在c++中打入.或者->時自動彈出提示,不需要按C-X,C-O了,這樣就更方便了。當然,要在沒有.或
->的地方需要提示仍然可以按C-X,C-O。
自動跳轉:有了ctags檔案之後,還可以在vim中實現自動跳轉,方法是在把游標移動到要跳轉的變數上,按CTRL-],會根據ctags檔案的內容自動跳轉到相應的定義去,再按CTRL-T會跳會原先的位置。
btw:vim中實現buffer中自動補齊的按鍵是CTRL-N,類似於emacs中M-/的功能。