vim代替source insight(eexpress關於vim的文章)

仔細看了一下help的說明,寫了一 個“類”插件,竟然工作得爽快。只要按F5就可以搜索當前光標所在詞的grep結果,並可以選擇跳轉。其中vimgrep沒加j的參數。光標取詞,也沒作 有效的判斷,因爲這個不重要,一般自己操作的時候,已經目的性很強了,就是要搜索當前詞嘛,不判斷的結果,最多就是出個空的窗口而已。

 在vimrc裏面這樣定義:

 " 搜索當前詞,並打開quickfix窗口
 map <F5> :call Search_Word()<CR>

 在插件目錄加了一個vim文件:

$cat /home/exp/.vim/plugin/Search_Word.vim 
 " au! QuickFixCmdPre *.[ch] call Search_Word() 
 func Search_Word() 
 let w = expand("<cword>") " 在當前光標位置抓詞 
 exe "vimgrep " w " *.c *.h" 
 exe 'copen' 
 endfun

在瀏覽和修改稍微複雜的程序時候,確實source insight是個非常好的工具。轉到Linux以後,我一直在找替代工具。最先是等anjuta,結果苦苦等到了一個雞肋的2.02。然後,認真配置了 下wine,用wine把si跑了起來,只是si的開發有些非常規,就算在win下面,中文注視等都是類似半角漢字的那樣,而且,在實際使用中,快速查找 參考的功能,有bug,曾經搞得我冒汗。試想下,你在一堆源碼裏面通篇修改了一個變量的處理方式,等一個星期以後,發現si原來的搜索不全,有2個需要修 改的地方漏了,不冒汗纔怪。(anjuta也有類似的問題)。

我當初使用vi,純粹是爲了能在任何時候(比如tty下面)都有個熟悉的編輯器而已。偶爾一次看到了別人的vim的截圖,發現支持一些函數列表, 就趕緊搜索了一下,首先找到了一箇中文的vim在線幫助(我已經貼論壇了),有了中文幫助,當然中國人才最能理解其中的命令的確切含義,不想讀英文幫助, 半懂而已。想起以前,看fvwm的英文幫助,是何等的艱難。這下終於開始了逐篇的閱讀。才慢慢熟練了:h查找幫助的方法。通過2天的奮鬥,幾乎讀完了在線 幫助,搜索了幾個小時的vim.org的插件。才發現vim竟然完全可以達到si的常用的那些非常有特色的功能。雖然界面還是有些簡陋。

 下面列舉一下我認爲需要實現的si的功能:
 1。函數和變量的定義的即時瀏覽。這個是非常有用的功能。成千的變量,對於C/C++來說,一個類型錯誤都可能導致極難發現的問題,運行時出現無法預料的結果。vim裏面使用taglist實現的。並且多個文件的列表都在一起,還可以按照類型摺疊,以便於瀏覽。

 2。變量調用的通篇搜索。涉及到一個全局變量的時候,可能10來個文件包括。排錯的時候,需要一個一個的地方去認真確認的。在vim.org搜索的結果 是,中文都支持不好,因爲多數使用外部的grep。後來憋了很久,仔細研究了別人的插件,自己寫個簡單的,調用vimgrep,這樣中文就顯示完美了。

3。函數和類/結構成員的補全。我的結構經常是2到3層的套用,加上經常用到相對地址的宏定義,經常是一個變量一長串的。自己輸入真的苦難,有點 想碰死的感覺。vim本身就帶了全能補全,就是C-x C-o,我把這個綁定到F8就是了。vim.org裏面的一些補全的插件,我都試過,發現就本身的這個好。

 4。方便的快速查找。一個變量不要輸入,光標定位後,按鍵就可以上下搜索。vim裏面直接就是#*索引當前詞,我還加了mark插件和設置了incsearch參數和hlsearch參數。就更加直觀了。

 5。文件內部的函數和變量列表。長長的文件,幾十個函數的時候,沒有一個列表,會頭暈的。這裏使用taglist插件實現就是。

 6。函數和變量的上下層調用的結構關係圖。這個在vim的字符方式下,還是比較不直觀的。不好實現。

 7。函數和不同變量的顏色定義,包括字體,陰影效果以及定義的繼承性能。這個是GUI的強項。vim還作不到這麼好。

 接着就說說vim的配置。
 其實vim的配置很簡單,而且規範。插件,比如*.vim文件放到~/.vim/plugins下面;文檔放到~/.vim/doc裏面;顏色配置放到~/.vim/syntax裏面。主配置文件就是~/.vimrc。下面先列出vimrc文件。比較簡單。
 ------------------------------ 代碼:
$cat ~/.vimrc
 " 開啓語法高亮
 syntax on
 " 設置文字編碼自動識別
 set fencs=utf-8,cp936
 " 使用鼠標
 set mouse=a
 " 設置高亮搜索
 set hlsearch
 " 輸入字符串就顯示匹配點
 set incsearch
 " 輸入的命令顯示出來,看的清楚些。
 set showcmd
 " Tlist的內部變量。函數列表。
 let Tlist_Use_Right_Window=1
 let Tlist_File_Fold_Auto_Close=1
 " 打開當前目錄文件列表
 map <F3> :Explore<CR>
 " 函數和變量列表
 map <F4> :TlistToggle<CR>
 " 搜索當前詞,並打開quickfix窗口
 map <F5> :call Search_Word()<CR>
 " 全能補全
 inoremap <F8> <C-x><C-o>
 " 沒事,鼠標畫線玩的。
 " noremap <F9> :call ToggleSketch()<CR>
 " 啓動函數變量快速瀏覽的時間設置
 set updatetime=100


 -------------------------------

列出現在使用的插件。其中AutoExplorer和Search_Word,一個是在線幫助裏面的,一個是我自己寫的。其他的都是 vim.org下的。下載的插件如果是壓縮包,把裏面的*.vim文件放出來就是,下次啓動vim,這些功能就自動被讀入並執行了。本身*.vim文件裏 面就都有用法幫助的。 代碼:
$l ~/.vim/plugin/
 AutoExplorer.vim  EnhancedCommentify.vim  Search_Word.vim  tabbar.vim
 bufexplorer.vim   mark.vim                sketch.vim       taglist.vim



 我自己寫的那個簡單得很。 代碼:
$cat ~/.vim/plugin/Search_Word.vim
 " au! QuickFixCmdPre *.[ch] call Search_Word()
 func Search_Word()
   let w = expand("<cword>")             " 在當前光標位置抓詞
   exe "vimgrep " w " *.c *.h"
   exe 'copen'
 endfun


 插件說明:
引用:
插件名稱 說明 主要按鍵
 -------------------------------------------------
 EnhancedCommentify 當前行或者多行可視模式下的註釋/反註釋 \x
 SuperTab 在插入狀態使用TAB鍵補全,現在被自己定義的F8代替了 <TAB>
 taglist 函數和變量定義的窗口,並可以雙擊跳轉 :TlistToggle綁定到F4
 tabbar 用標籤窗口形式,顯示打開的文件 Alt-1,2切換
 AutoExplorer help裏面剔出的快速瀏覽函數和變量的定義
 bufexplorer 瀏覽打開的緩衝文件 \be \bv \bs
 mark 不同顏色標記當前詞,支持多次高亮標記 \m
 sketch 可切換到鼠標畫線,好玩的功能而已 F9綁定
 Search_Word 自己寫的簡單的函數,搜索當前詞,在quickfix窗口顯示 F5綁定


 給出一個截圖。見本文中間的第二個圖。


原文地址(已不能訪問):http://eexpress.oldblog.ubuntu.org.cn/page/54/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章