[英]vim: Open tag in new tab
是否有插件或腳本可以在新選項卡中打開 ctags 條目? 我想將光標放在一個函數上,按ctrl+]並在另一個選項卡中打開該條目。 我還希望我在視覺上選擇一個條目,以便ctrl+]仍然有效並在新的 vim 選項卡中打開。
你可以
Cw C-] Cw T
為了達到這個效果
然后你還可以映射:
:nnoremap <silent><Leader><C-]> <C-w><C-]><C-w>T
編輯:另外,根據您的實際需要,不要忘記您可以使用例如Cw }在預覽( :ptag
)中打開標簽。 只是提一下以防萬一...
這里有兩個非常特別的映射(如果你的標簽是由ctags
生成的):
nnoremap <C-]> :tabnew %<CR>g<C-]>
vnoremap <C-]> <Esc>:tabnew %<CR>gvg<C-]>
首先我們在一個新選項卡中打開當前緩沖區; 然后我們嘗試跳轉到光標下的標簽( g<C-]>
,它等於:tjump
,如果只有一個匹配項,則直接跳轉到該標簽,或者如果有很多匹配項,則提供一個匹配列表)。
優點:
缺點:
PS 你能提供一個視覺模式映射的用例嗎?
PPS 如果您使用cscope (比ctags
更好)生成標簽並使用其vim 映射,請將上述映射替換為以下映射:
nnoremap <C-]> :tabnew %<CR><C-]>
vnoremap <C-]> <Esc>tabnew %<CR>gv<C-]>
如果有人仍在尋找解決方案。 在此解決方案中,當未找到標簽時,將不會留下更多空白選項卡。
function! w:GoToTag(tagWord)
let l:tagfile = &tags
:tabe
execute 'set tags=' . l:tagfile
execute ':silent tjump ' . a:tagWord
let l:tagFilename = expand('%:t')
if l:tagFilename == ''
:tabclose
:tabprevious
endif
endfunction
您可以在 ~/.vimrc 中設置鍵盤快捷鍵,'g' 后跟 CONTROL-],如下所示:
nmap g<C-]> :execute 'tab tag '.expand('<cword>')<CR>
nmap means 'when in normal mode'
g<C-j> is the shortcut, 'g' followed by CTRL-]
execute is a means of executing a command passed as a string
tab tag means "open a new tab and run 'ta'"
expand is used to expansion of a vim item
<cword> means a word the same as used for '*'. See also <cWORD>
您可以通過 :tab tag functionname測試“tab ta”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.