一 關於ctags
vim內建ctag外掛程式
在工程目前的目錄shell 運行 $ctags -R 會在目前的目錄遞迴產生一個tags檔案
在vim 中運行 :set tags=tags //表示指定目前的目錄tags檔案為讀取檔案
在vim中運行 :version 可以看到很多關於vim本身的資訊
說明了vim讀取vimrc設定檔的順序,開啟vim將按照上述順序尋找使用者vimrc,並執行所找到的第一個使用者vimrc中的命令,忽略其餘的使用者vimrc。在vimrc中實際上是按先後順序執行的
如果使用”vim -u filename“命令來啟動vim,則會用你指定的filename作為vim的設定檔(在調試你的vimrc時有用);
如果用”vim -u NORC“命令啟動vim,則不讀取任何vimrc檔案:當你懷疑你的vimrc配置有問題時,可以用這種方式跳過vimrc的執行。
查看tags檔案可知檔案對各個檔案中的函數和變數等進行了定位。如果沒有則找不到
使用ctags:
ctrl+] 跳轉到指定的函數
ctrl+t 和ctrl+]命令相反
:tags 可顯示跳轉深度具體資訊 如:
二 vim 快速鍵
“:tag func_name“ 跳到函數func_name處。使用tag命令時,可以使用TAB鍵進行匹配尋找,繼續按TAB鍵向下切換。
vim 快速鍵:
% 跳到匹配的括弧處("{ }""[]""()")也可以匹配if else 等
ctrl+i, tab 跳到下一個跳點
ctrl+o 跳到上一個跳點
# 從游標向後尋找整個關鍵詞 (精確完全符合尋找)
g# 可以尋找到包含它的單詞
*只尋找與當前單詞精確匹配的單詞
g*尋找包含當前單詞的所有單詞
w 跳到下一個單詞的開始
e 跳到單詞的結束
b 向後跳
r:替換游標所在處的字元。
R:替換游標所到之處的字元,直到按下「ESC」鍵為止。
「ctrl」+「g」列出游標所在位置 行列
“.” 重複上一次修改
ctrl+r和u相反的動作
y 複製
yy 複製一行
gf跳轉到檔案(gf將一個字串當做一個檔案在當前檔案夾下遞迴尋找)
Visual Mode操作:
ctrl+v 進入基於塊的可視模式
v 進入基於字元的可視模式
V 進入基於行的可視模式
c 刪除選定的塊
ctrl+z 睡眠vim
fg num 反操作 返回vim
fx:向後尋找,移動游標到當前行的下一個x處。很明顯,x可以是任意一個字母,可以使用“;”來重複上
一個f命令
tx:和上面的命令類似,但是是移動到x的左邊一個位置。
Fx:和fx類似,不過是往回找。
Tx: 同上
(小寫向後,大寫向前)
0: 移動游標到當前行首。
^:移動游標到當前行的第一個字母位置。
$: 移動游標到行尾。
):移動游標到下一個句子。
( : 移動游標到上一個句子。
ma:在當前游標的位置標記一個書籤,名字為a。書籤名只能是小寫字母。你看不見書籤的存在,但它確實
已經在那裡了。
`a:到書籤a處。注意這個不是單引號,它一般位於大部分鍵盤的1的左邊。
`.:到你上次編輯檔案的地方。這個命令很有用,而且你不用自己去標記它。
i:在當前字元的左邊插入
I:在當前行首插入
a:在當前字元的右邊插入
A:在當前行尾插入
o:在當前行下面插入一個新行
O:在當前行上面插入一個新行
c{motion}:刪除motion命令跨過的字元,並且進入插入模式。比如:c$,這將會刪除從游標位置到行尾的
字元並且進入插入模式。ct!,這會刪除從游標位置到下一個歎號(但不包括),然後進入插入模式。被
刪除的字元被存在了剪貼簿裡面,並且可以再粘貼出來。
d{motion}:和上面差不多,但是不進入插入模式。
(c和d用法相似,但會進出插入模式)
VIM是一個絕好的編輯器來寫代碼,因為它有一些特性是專門為程式員而設。
這裡是一些常用的:
]p:和p的功能差不多,但是它會自動調整被粘貼的文本的縮排去適應當前代碼的位置。
試一下!%:匹配花括弧,方括弧,括弧等。在一個括弧的上面,然後按%,滑鼠就會出現在匹配的另外一
半括弧處。
>>:縮排所有選擇的代碼
<<:和上面類似,但是反縮排
gd:到達游標所在處函數或者變數的定義處。會尋找出很多個但是跳轉到局部變數的定義處
K:在Man裡面尋找游標當前所在處的詞。
不用ctags的函數跳轉(也是字串尋找)
[+ctrl+i 跳轉到函數、變數和#define
[+ctrl+d 跳轉到#define處
ctrl+i 向前跳到前幾次游標位置
ctrl+o 向後跳到後幾次游標位置
[[ 用來跳到游標前面的一個函數開始處。如果游標在函數體內的話,那就是所在函數的開始處。
][ 用來跳到游標後面的一個函數結尾處。如果游標在函數體內的話,那就是所在函數的結尾處。
]] 用來跳到游標後面的一個函數開始處。如果游標在函數體內的話,那就是下一個函數的開始處。
[] 用來跳到游標前面的一個函數結尾處。如果游標在函數體內的話,那就是上一個函數的結尾處。
1,先想是想往前跳,還是往後跳?
如果是想往前,就摁 [,如果是想往後,就摁 ],然後指頭別鬆開。
2,再想是想到開始處,還是結尾處?
如果是開始處,就再摁一下。如果是結尾處,就摁另一個鍵。