是否有插件或脚本可以在新选项卡中打开 ctags 条目?我想将光标放在一个函数上,按下ctrl+]并在另一个选项卡中打开该条目。我还想在视觉上选择一个条目,ctrl+]以便仍然可以工作并在新的 vim 选项卡中打开。
问问题
25222 次
4 回答
100
你可以
C-wC-]C-wT
为了达到这个效果
然后你也可以映射:
:nnoremap <silent><Leader><C-]> <C-w><C-]><C-w>T
编辑: 另外,根据您的实际需要,不要忘记您可以在预览(:ptag
)中打开标签,例如C-w}。只是提到它以防万一...
于 2011-05-20T08:35:23.817 回答
6
这里有两个漂亮的临时映射(如果你的标签是由 生成的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-]>
于 2011-07-28T21:16:47.730 回答
3
以防有人仍在寻找解决方案。在此解决方案中,当未找到任何标签时,将不会留下更多空白标签。
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
于 2014-01-10T01:23:13.880 回答
3
您可以在 ~/.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”
于 2019-06-19T04:00:13.747 回答