2013年5月26日 星期日

ctags在vim裏的常用操作

最近又開始想用vim+ctags功能了, 紀錄一下常用的快速指令囉!

ctags in vim
Keyboard Command Action
Ctrl-] 或是 Ctrl-Left_MouseClick 跳到tag所定義的地方
Ctrl-t 或是 Ctrl-Right_MouseClick          返回
:ts <tag>  <RET> Search for a particular tag
:tn Go to the next definition for the last tag
:tp Go to the previous definition for the last tag
:ts List all of the definitions of the last tag

cscope_maps.vim plugin
這邊的用法是Ctrl+\按完後, 全放開, 再去按後面的字母

ctrl+\ s    "s表Symbol,列出所有參考到游標所在字串的地方,包含定義和呼叫。
ctrl+\ g    "g表Global,與ctags的Ctrl+]相同。
ctrl+\ c    "c表Caller,列出所有會呼叫到以游標所在字串當函數名的地方。
ctrl+\ t     "t表Text,列出專案中所有出現游標所在字串的地方。
ctrl+\ f     "f表File,以游標所在字串當檔名,開啟之。
ctrl+\ i     "i表Include,以游標所在字串當檔名,列出所有include此檔的檔案。
ctrl+\ d    "d表calleD,以游標所在字串當函式名,列出所有此函式內呼叫的函式。

在使用cscope時,需注意,cscope.out這個資料庫是否有被connect起來,如果沒有connect那搜尋功能當然就會失效。
發現一件事情,ctags的關聯都是用絕對路徑的,所以就算我任意切目錄,只要database有認到就沒問題。
但是cscope看起來是不行的,它用相對路徑的,一切目錄,就算database認到了,看起來也開不了檔案。

Vim 快速指令
在command mode底下(不用打:)
gf (goto file)
  比如:當你的游標停在#include , 此時直接打gf, 就會自動幫你開啟該header file
  先決條件是,你必需先指定好path, 參考方法是":set path=include;/usr/include"
  當你要返回時,使用ctrl+o返回
* 搜尋字串
  游標停在你要尋找的字串上,直接按shift+8(相當於按*),
  然後就可以用n往下搜尋,按N往上搜尋了
gd 查區域變數, gD查全域變數
  追蹤某個變數宣告時,可以用gd或gD去跳轉
% 括號跳轉
  有時function非常的長, 每次都要用page up/down一直換頁, 還要擔心跳過頭
  %可以幫你直接跳到左括號或右括號上, 也適用於C的#def喔.
  當然, 同樣的你要先把游標移到括號上喔.
mx及'x   標記及返回
          你可以在任意地方標記該行, 然後亂跑後, 再打'x來返回剛剛標記的地方

Linux Trace Tool Introduction

沒有留言: