vim函數跳轉

#pwdlinux

#/usr/src/linux-2.6.37程序員

#ctags –R  *      ##  遞歸創建 tags文件vim

$vi -t tag                 ##   -t  是參數   tag是要查找的變量/函數名編輯器

ctrl+]   跳轉函數定義函數

ctrl+t   跳回函數調用處工具

-----------------------------學習

若一個函數在多個地方定義,則可使用:  :ts  :tp :tn  ,  : 是vim的最後一行模式ui

另外有單個文件中函數跳轉工具,方括號組合,跟使用命令模式同樣編碼

[ [,    函數首花括號,向前spa

] ],     函數首花括號,向後     

[ ],     函數尾花括號,向前

] [,     函數尾花括號,向後

 

 

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

如下轉載

http://blog.csdn.net/ducduc/archive/2009/05/25/4214555.aspx

 

Vi你們都很熟悉,某些狀況下它是咱們在Linux下惟一可用的文本編輯器。其實咱們平時所指的VI實際上是VIM(ViImproved,VI加強版)。有人經常拿VIM和emacs比較,VIM儘管不象emacs那樣有那麼多的功能,可是比emacs更方便、好用。VIM簡單易用,只要看看VIM自帶的vitutor,大約只要20分鐘就能掌握VIM的用法。對於Linux下的C/C++的程序員,使用VIM+Ctags的組合來寫程序也許是最佳的選擇。^_^

VI的使用方法這裏就不羅嗦了,本文假設你們已花了20分鐘學習過了vitutor。 ^_^
        本節咱們主要講一下Ctags這個程序。儘管ctags也能夠支持其它編輯器,可是它正式支持的只有VIM。而且VIM中已經默認安裝了Ctags,它能夠幫助程序員很容易地瀏覽源代碼。
熟練的使用ctags僅需記住下面七條命令:(很簡單吧,呵呵)
        1. $ ctags –R *      ($ 爲Linux系統Shell提示符)
        2.  $ vi –t tag         (請把tag替換爲您欲查找的變量或函數名)
        3.:ts                                (ts 助記字:tags list, 「:」開頭的命令爲VI中命令行模式命令)
        4.:tp                                (tp 助記字:tags preview)---此命令不經常使用,能夠不用記
        5.:tn                                (tn 助記字:tags next) ---此命令不經常使用,能夠不用記
        6. Ctrl + ]
        7. Ctrl + T
        
下面咱們逐條的解釋上面的命令:
「$ ctags –R *」:「-R」表示遞歸建立,也就包括源代碼根目錄(當前目錄)下的全部子目錄。「*」表示全部文件。這條命令會在當前目錄下產生一個「tags」文件,當用戶在當前目錄中運行vi時,會自動載入此tags文件。Tags文件中包括這些對象的列表:
用#define定義的宏
枚舉型變量的值
函數的定義、原型和聲明
名字空間(namespace)
類型定義(typedefs)
變量(包括定義和聲明)
類(class)、結構(struct)、枚舉類型(enum)和聯合(union)
類、結構和聯合中成員變量或函數
VIM用這個「tags」文件來定位上面這些作了標記的對象。

剩下的命令就是定位這些對象的方法:
「$ vi –t tag」 :在運行vim的時候加上「-t」參數,例如:
[/usr/src]$ vim -t main
這個命令將打開定義「main」(變量或函數或其它)的文件,並把光標定位到這一行。若是這個變量或函數有多處定義,在VI命令行模式「:ts」命令就能列出一個列表供用戶選擇。    「:tp」爲上一個tag標記文件,「:tn」爲下一個tag標記文件。固然,若當前tags文件中用戶所查找的變量或函數名只有一個,「:tp,:tn」命令不可用。:(
最方便的方法是把光標移到變量名或函數名上,而後按下「Ctrl+]」,這樣就能直接跳到這個變量或函數定義的源文件中,並把光標定位到這一行。用「Ctrl+t」能夠退回原來的地方。即便用戶使用了N次「Ctrl+]」查找了N個變量,按N次「Ctrl+t」也能回到最初打開的文件,它會按原路返回。 ^_^

注意:運行vim的時候,必須在「tags」文件所在的目錄下運行。不然,運行vim的時候還要用「:settags=」命令設定「tags」文件的路徑,這樣vim才能找到「tags」文件。在完成編碼時,能夠手工刪掉tags文件(帚把不到,灰塵不會本身跑掉^_^)。ctags的使用

1        $ ctags -R
        「-R」表示遞歸建立,也就包括源代碼根目錄下的全部子目錄下的源程序。「tags」文件中包括這些對象的列表:

2        用#define定義的宏
        枚舉型變量的值
        函數的定義、原型和聲明
        名字空間(namespace)
        類型定義(typedefs)
        變量(包括定義和聲明)
        類(class)、結構(struct)、枚舉類型(enum)和聯合(union)
        類、結構和聯合中成員變量或函數

3        $ vim -t foo_bar
        這個命令將打開定義「foo_bar」(變量或函數或其它)的文件,並把光標定位到這一行。

4        在vim編輯器內用「:XX」命令,例如:
        :cstag main                        列出全部main所在位置
        :ta foo_bar                        跳轉到foo_bar函數位置

5        把光標移到變量名或函數名上,而後按下「Ctrl-]」。用「Ctrl-o」退回原來的地方。

還有一個工具能自動將代碼整理成gnu的風格
        indent filename
vim

        在VIM編輯器的環境下用「:make」就能夠編譯程序,固然其前提是在當前目錄下有Makefile文件。運行完「: make」以後,若是程序中有錯誤,就會顯示出來。
        這時候,光標會自動指向第一個出現錯誤的地方,並且你還能夠看到錯誤的提示。而後,你就能夠改正錯誤,而不用手工找到出錯的那一行。記住下面幾個有用的命令:
        「:cl」列出錯誤
        「:cn」讓光標指向下一個錯誤
        「:cp」讓光標指向上一個錯誤
        「:cnew」從頭開始
        你甚至可讓VIM識別出其它編譯器而不是gcc的錯誤提示。這對一些開發嵌入式系統的程序員這頗有用,由於他們極可能用的不是gcc而是其它編譯器。
        經過設置「errorformat」的值,可讓VIM識別出編譯器的出錯提示。由於不一樣的編譯器的出錯提示是不一樣的,因此若是用的不是gcc就要從新設置。
        「errorformat」的值是一個字符串,它的格式和C語言的scanf的字符串格式相識。
        gcc的「errorformat」的值爲:%f:%l:%m。其中「%f」表示文件名,「%l」表示行號,「%m」表示出錯信息。
        用「:h errorformat」查看詳細的幫助信息。
        用「:h quickfix」、「:h make」、「:h makeprg」、「:h errorfile」查看其它的信息。
        有用的快捷鍵
        下面的這些快捷鍵對程序員頗有幫助:
        在函數中移動光標
        [[ 轉到上一個位於第一列的「{」
        ]] 轉到下一個位於第一列的「{」
        { 轉到上一個空行
        } 轉到下一個空行
        gd 轉到當前光標所指的局部變量的定義
        * 轉到當前光標所指的單詞下一次出現的地方
        # 轉到當前光標所指的單詞上一次出現的地方
        括號的匹配
        % 用來進行小括號、中括號和大括號的匹配。這要看當前光標指向的是什麼符號了。
        其它
        VIM的配置文件是「.vimrc」,用這個文件能夠配置VIM。VIM的圖形界面的版本叫gvim。VIM也有用於Windows平臺的版本。

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

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

此外還有[[]][]再加上][一共是 4 個在段落(對於 C 來說就是函數)間跳轉的命令。總結是:1,相同就跳到函數的開頭:(若是都是左括號或者都是右括號),不一樣就跳到函數的結尾:     { 和 } 用來跳到函數的開頭。     [] 和 ][ 用來跳到函數的結尾。2,左右左右,「左」在前面。先後先後,「前」也在前面。所以左括號打頭則表示向前,右括號打頭則表示向後:     [[ 和 [] 用來向前跳     ]] 和 ][ 用來向後跳結合起來就是:[[ 用來跳到光標前面的一個函數開始處。若是光標在函數體內的話,那就是所在函數的開始處。][ 用來跳到光標後面的一個函數結尾處。若是光標在函數體內的話,那就是所在函數的結尾處。]] 用來跳到光標後面的一個函數開始處。若是光標在函數體內的話,那就是下一個函數的開始處。[] 用來跳到光標前面的一個函數結尾處。若是光標在函數體內的話,那就是上一個函數的結尾處。1,先想是想往前跳,仍是日後跳?若是是想往前,就摁 [,若是是想日後,就摁 ],而後指頭別鬆開。2,再想是想到開始處,仍是結尾處?若是是開始處,就再摁一下。若是是結尾處,就摁另外一個鍵。

相關文章
相關標籤/搜索