手把手教你把Vim改裝成一個IDE編程環境(圖文) -- 續1

手把手教你把Vim改裝成一個IDE編程環境(圖文)

By:

吳垠

Date:

2007-12-27

Email:

lazy.fox.wu#gmail.com

Homepage:

http://blog.csdn.net/wooin

Copyright:

該文章版權由吳垠和他可愛的老婆小包子所有。可在非商業目的下任意傳播和複製。對於商業目的下對本文的任何行爲需經作者同意。
聯繫方式:lazy.fox.wu#gmail.com


16

代碼摺疊 (fold)

 

代碼摺疊功能是現在流行的IDE中都具備具備的最基礎的一項功能, 甚至一些編輯器也有代碼摺疊的功能了, 比如UltraEdit, Kate....等等, vim當然在這方面也不會落後與人, 關於代碼摺疊的介紹大家可以看看幫助手冊中的這些章節, 反正都是中文, 不會讓我再翻譯成漢語拼音給你看吧^_^

:help usr_28.txt
:help fold.txt

我簡單摘抄一點, 省得我自己還要打字....
*28.1*    什麼是摺疊?
摺疊用於把緩衝區內某一範圍內的文本行顯示爲屏幕上的一行。就像一張紙,要它縮短
些,可以把它摺疊起來:
    +------------------------------------+
    | 行 1                              |
    | 行 2                             |
    | 行 3                             |
    |________________________|
    /                                            /
     /________________________/
     / 被摺疊的行                        /
    /________________________/
    | 行 12                                  |
    | 行 13                            |
    | 行 14                                  |
    +-----------------------------------+

那些文本仍然在緩衝區內而沒有改變。受到摺疊影響的只是文本行顯示的方式。
摺疊的好處是,通過把多行的一節摺疊成帶有摺疊提示的一行,會使你更好地瞭解對文本
的宏觀結構。
真實的情景見下圖(圖19):


(--- 圖19 ---)
vim提供以下6種方法來選定摺疊方式:

manual

手工定義摺疊

indent

更多的縮進表示更高級別的摺疊

expr

用表達式來定義摺疊

syntax

用語法高亮來定義摺疊

diff

對沒有更改的文本進行摺疊

marker

對文中的標誌摺疊

可用選項 'foldmethod' 來設定摺疊方法。比如, 如果想按照語法高亮來定義摺疊, 則在
~/.vimrc中增加下面這行:

set foldmethod=syntax
set foldlevel=100  啓動vim時不要自動摺疊代碼

這裏主要是講編程的, 所以我就只介紹按照語法高亮來摺疊代碼, 其他的摺疊方法如果大家想用的話可以自己看看幫助手冊, 大同小異的.

按照語法高亮來摺疊代碼, 其實就是按照代碼中的一些括號來定義摺疊位置, 比如: "{ }", "/* */". 現在練習一下, 就在nomal模式下輸入命令"za", 你會發現當前光標所在的最近的一層括號被摺疊起來了, 再輸入一遍"za"命令, 這個摺疊又打開了, "za"命令就是打開/關閉當前摺疊用的, 下面是常用的一些命令:

za

打開/關閉當前摺疊

zA

循環地打開/關閉當前摺疊

zo

打開當前摺疊

zc

關閉當前摺疊

zM

關閉所有摺疊

zR

打開所有摺疊

其他還有一些我不常用的設置和命令大家可以自己看看幫助手冊吧, 我就不羅嗦了.

17

提示函數原形-- 插件: echofunc

 

下載地址

http://www.vim.org/scripts/script.php?script_id=1735

版本

1.18

安裝

把echofunc.vim 文件丟到 ~/.vim/plugin 文件夾就好了

手冊

 

當編程調用一個函數時, 最可惡的是忘了這個函數參數列表的詳細定義了, 然後要跳轉到定義處看看, 再跳轉回來繼續寫, 如果參數列表太長了, 還要來回跳轉多次, 對我等記性不好的人來說簡直是折磨, 還好有貼心的人寫了這個插件, 讓我可以把精力放在Coding上, 真是偉大呀, 作者的名字叫:
Ming Bai <mbbill AT gmail DOT com>
Wu Yongwei <wuyongwei AT gmail DOT com>
看樣子是漢人, 而且還有一個是我本家, 這個猜測令我興奮不已呀...

言歸正傳, 該插件的作用是當你在vim插入(insert)模式下緊接着函數名後輸入一個"("的時候, 這個函數的聲明就會自動顯示在命令行中. 如果這個函數有多個聲明, 則可以通過按鍵"Alt+-"和"Alt+="向前和向後翻頁, 這個兩個鍵可以通過設置EchoFuncKeyPrev和EchoFuncKeyNext參數來修改. 見下圖(圖20)就是這種應用, 你先不要急着試, 先看完我下面的介紹


(--- 圖20 ---)
如果想看到上圖的效果, 還有一個要注意的地方, 這個插件的功能需要tags文件的支持, 並且在創建tags文件的時候要加選項"--fields=+lS", 整個創建tags文件的命令如下:

$ ctags -R --fields=+lS

如果你還不會用tags文件, 先看看前面的章節<在程序中跳來跳去: Ctags 的使用>吧. 當tags文件都弄好了後, 就可以試試效果了, 是不是跟我上圖一樣呀^_^

還有一個小技巧告訴你, 當你把鼠標放在函數名上的時候會有一個tip窗口彈出, 該窗口中也會有函數的聲明, 這個功能需要你在編譯vim時編譯"+balloon_eval"特性了.

發佈了41 篇原創文章 · 獲贊 38 · 訪問量 42萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章