Vim 標籤篇
分類
說明
標籤是出現在 “tags” 檔案的一個識別碼。它是一種能夠跳轉的標記。例如,在 C 程式裡,每個函數名稱都可以是一個標籤。在使用標籤檔案之前,”tags” 檔案會由 ctags 這樣的程式產生。
tag-priority
如果有標籤的多個匹配,請使用以下的優先權:
註: -
是空格。
FSC
目前檔案的完全匹配靜態標籤。F-C
目前檔案的完全匹配全域標籤。F--
其他檔案的完全匹配全域標籤。FS-
其他檔案的完全匹配靜態標籤。-SC
目前檔案的忽略大小寫匹配靜態標籤。--C
目前檔案的忽略大小寫匹配全域標籤。---
其他檔案的忽略大小寫匹配全域標籤。-S-
其他檔案的忽略大小寫匹配靜態標籤。
tag-regexp
:tag
和 :tselect
命令接受正規表達式引數。pattern
可以看到如何使用特殊字元。如果引數以 /
開始,它被認為是一個模式(pattern)。如果不是,它被認為是按字面意思出現的完整的標籤名。
範例:
:tag main
跳到具有最高優先權的 “main” 標籤。
:tag /^get
跳到以 “get” 開頭且優先權最高的標籤。
:tag /norm
列出所有包含 “norm” 的標籤,例如 “id_norm”。
如果參數既能按字面意思匹配,也能按正規表達式匹配,則字面意思匹配有更高的優先權。例如,:tag /open
在 “open_file” 和 “file_open” 之前匹配 “open”。
如果使用模式,那麼忽略大小寫。 如果你想在模式中匹配大小寫,使用 \C
。
tag-!
以下是官方文件的內容,但實際上我還不清楚 !
有什麼特別之處。
如果標籤在目前檔案裡,沒有問題。不然,採取的行動取決於目前檔案是否有改變,還有命令之後是否加了 !
,以及 autowrite
選項:
標籤是否在目前檔案裡 | 檔案是否改變 | ! | autowrite 選項 | 行動 |
---|---|---|---|---|
是 | x | x | x | 轉到標籤 |
否 | 否 | x | x | 讀入其他檔案,轉到標籤 |
否 | 是 | 是 | x | 放棄目前檔案,讀入其他檔案,轉到標籤 |
否 | 是 | 否 | 開 | 寫入目前檔案,讀入其他檔案,轉到標籤 |
否 | 是 | 否 | 關 | 失敗 |
跳轉到標籤
:[count]ta[g][!] {name}
根據 tags 檔案的訊息,跳到 {name}
的定義上,並且把 {name}
放在標籤堆疊上,如果有 {name}
的多個匹配,則跳到它們中的第 [count]
個,如果 [count]
被省略,則跳到第一個。
[!]
見 tag-!。
{name}
可以是正規表達式。見 tag-regexp
。
g<LeftMouse>
<C-LeftMouse>
CTRL-]
跳到遊標所在的關鍵字的定義。和 :tag {name}
相同,只不過 {name}
是遊標之下或之後的關鍵字。
如果有 {name}
的多個匹配,則跳到它們中的第 [count]
個。如果沒有 [count]
,跳到第一個。
標籤堆疊
g<RightMouse>
<C-RightMouse>
CTRL-T
跳到標籤堆疊上第 [count]
個較早的項目 (預設為 1)。
:[count]po[p][!]
跳到標籤堆疊上第 [count]
個較早的項目 (預設為 1)。
[!]
見 tag-!。
:[count]ta[g][!]
跳到標籤堆疊上第 [count]
個較新的項目 (預設為 1)。
[!]
見 tag-!。
:tags
顯示標籤堆疊的內容。
範例輸出:
# | To | tag | FROM | line | in file/text | |
---|---|---|---|---|---|---|
1 | 1 | main | 1 | harddisk2:text/vim/test | ||
> | 2 | 2 | FuncA | 58 | i = FuncA(10); | |
3 | 1 | FuncC | 357 | harddisk2:text/vim/src/amiga.c |
啟動的項目以 ‘>’ 標示。
該列表顯示你跳到的標籤和跳轉前遊標的位置。較早的項目在頂部,較新的在底部。
ex 命令
:sts[elect][!] [name]
:tselect[!] [name]
並分割視窗以顯示選擇的標籤。
:tj[ump][!] [name]
類似於 :tselect
,但如果只有一個匹配,直接跳轉之。
:tl[ast][!]
跳到最後匹配的標籤。
:[count]tn[ext][!]
跳到向下 [count]
個匹配的標籤 (預設為 1)。
[!]
見 tag-!
。
:[count]tN[ext][!]
:[count]tp[revious][!]
跳到向上 [count]
個匹配的標籤 (預設為 1)。
[!]
見 tag-!
。
:[count]tf[irst][!]
:[count]tr[ewind][!]
跳到第一個匹配的標籤。如果給予 [count]
,跳到第 [count]
個匹配的標籤。
[!]
見 tag-!
。
:ts[elect][!] [name]
根據 tags 檔案的訊息,列出匹配 [name]
的標籤。如果 [name]
沒有給出,使用標籤堆疊上最後的標籤名稱。
關於 [!]
見 tag-!
。
[name]
可以是正規表達式。見 tag-regexp
。
範例輸出:
列表使用的優先權順序請見 tag-priority
。
# | priority | kind | tag | file |
---|---|---|---|---|
1 | F | f | mch_delay | os_amiga.c mch_delay(msec, ignoreinput) |
2 | F | f | mch_delay | os_msdos.c mch_delay(msec, ignoreinput) |
3 | F | f | mch_delay | os_unix.c mch_delay(msec, ignoreinput) |
Type number and <Enter> (empty cancels):
相關文章:
一杯咖啡的力量,勝過千言萬語的感謝。
支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!