vim - 如何使ctags在垂直拆分上显示标签定义而不打开新的拆分?

标签 vim tags ctags

我正在使用ctags,并将map <C-]> :vsp <CR>:exec("tag ".expand("<cword>"))<CR>添加到了我的vimrc中。但是,这每次都会打开一个新的垂直拆分。有没有一种方法可以在垂直拆分中显示标签定义,而不必每次都打开一个新标签?

更新:我也想知道是否有一种方法可以正常使用ctag堆栈。也就是说,使用ctrl + t从堆栈中弹出一个位置吗?

最佳答案

以下命令可达到您想要的结果:

:execute "vertical ptag " . expand("<cword>")

因此,此映射也应该起作用:
nnoremap <C-]> :execute "vertical ptag " . expand("<cword>")<CR>

您可能需要将'previewheight'设置为更高的值。

更新

作为一种替代解决方案,如果您想继续在标签中导航,则可以使用以下内容:
function! FollowTag()
  if !exists("w:tagbrowse")
    vsplit
    let w:tagbrowse=1
  endif
  execute "tag " . expand("<cword>")
endfunction

nnoremap <c-]> :call FollowTag()<CR>

尽管如此,我认为您应该考虑以下标准的Vim快捷方式,以修改创建此类快捷方式的需求:
  • <c-]>:跳转到光标更新标签栈下的单词的标签定义。
  • <c-w>}:打开一个预览窗口,其中包含标签定义的位置。光标不会更改其位置,因此不会更新标签栈。
  • <c-w>z:关闭预览窗口。
  • <c-w>v:将当前窗口一分为二,保持光标位置。

  • 因此,如果要快速检查标签声明,可以使用<c-w>},然后使用<c-w>z将其关闭。但是,如果要导航,则可以简单地使用<c-w>v创建一个拆分,然后使用标准<c-]在标签中进行导航。完成后,只需使用<c-w>c关闭窗口。

    关于vim - 如何使ctags在垂直拆分上显示标签定义而不打开新的拆分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33600608/

    相关文章:

    vim - Sublime Text 2 复古按键映射,如 vim

    vim - "M-"iTerm2/Terminal 上 vim 中的绑定(bind)不起作用

    jquery - 使用 jQuery 像 Stack Overflow 一样悬停的标签

    objective-c - CCLOG 不显示

    tags - 使用:tjump instead of :tag vim on pressing ctrl-]

    ruby - 使用 ctags 从 Emacs 中的另一个 ruby​​ gem 快速导航到函数的定义代码

    vim 乱码

    javascript - 什么是好的命令行 JavaScript 代码美化器?

    android - 更改选项卡图标android项目

    ruby-on-rails - Vim ctags 当前目录和 gemset