有没有一个插件或脚本可以在新标签页中打开ctags条目?我想把光标放在一个函数上,按下ctrl+],然后将条目在另一个标签页中打开。如果我选择一个条目,我也希望ctrl+]仍然可以工作,并在一个新的vim标签页中打开。
有没有一个插件或脚本可以在新标签页中打开ctags条目?我想把光标放在一个函数上,按下ctrl+],然后将条目在另一个标签页中打开。如果我选择一个条目,我也希望ctrl+]仍然可以工作,并在一个新的vim标签页中打开。
您可以使用以下操作实现:
C-wC-]C-wT
然后,您还可以进行映射:
:nnoremap <silent><Leader><C-]> <C-w><C-]><C-w>T
编辑:另外,根据您实际需要的内容,不要忘记您可以使用:ptag
在预览中打开标签,例如使用C-w}。只是提一下,以防万一...
<C-w><C-]>
的定义 - 在我的情况下,它似乎总是跳转到具有最高优先级的标签而不询问(如文档所述)。也许您有干扰映射,请参见 :verbose map <C-w>
,:verbose imap <C-w>
等命令。 - sehe:tj
和:se switchbuf=useopen,usetab
作为起点(但我没有尝试过)。我使用 YouCompleteMe 完成了 90% 的导航任务,当在文件内跳转时只需使用 C-]
。 - seheset switchbuf=useopen/usetab
做到了!你是我最喜欢的,这真是改变游戏规则的。 - Jake Byman以下是两个相当临时的映射(如果您的标签是由ctags
生成的):
nnoremap <C-]> :tabnew %<CR>g<C-]>
vnoremap <C-]> <Esc>:tabnew %<CR>gvg<C-]>
g<C-]>
相当于:tjump
),如果只有一个匹配项,则直接跳转到标记,如果有多个匹配项,则提供一个匹配列表。ctags
更好),并使用其vim映射,请将上述映射替换为以下映射:nnoremap <C-]> :tabnew %<CR><C-]>
vnoremap <C-]> <Esc>tabnew %<CR>gv<C-]>
foo:bar:baz
的类,但我的 ctags 在 :
上断开,因为我不想将 foo::bar
作为一个实体选择。所以我通常会进入 foo:bar:baz
的可视模式来跳转到它。 - Paul Tarjanfunction! 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>
~/.vim
而不是 ~/.vimrc
,那么把这一行放在一个名为 ~/.vim/plugin/ctags.vim
的文件中或类似的文件中。 - maikel
<C-\>
来切换 NERDTree。你完全可以映射<C-\>
:) - Justin Force