当打开特定文件类型时如何启动VIM Tagbar

7

我想让Tagbar VIM插件在打开某些文件类型时自动启动,因此我将以下内容添加到我的.vimrc文件中:

if has("gui_running")
    autocmd BufEnter *.hs nested TagbarOpen

然而,这并不像我预期的那样有效。它打开了一个侧边窗口,但是这个侧边窗口没有显示出任何内容,我的光标被困在其中,我无法通过点击或使用CTRL-W移动命令切换窗口。
然而,当我手动运行TagbarOpen时,它却可以正常工作。
有其他人尝试过这个命令吗?还是上面的命令不正确?
2个回答

6
有趣的是,这是一项我没有预料到的方便功能的副作用。发生的情况是:如果在窗口已经打开的情况下调用TagbarOpen,则Tagbar会使光标跳转到它的窗口,而不仅仅是什么都不做(为了方便像我说的那样)。因此,每次您尝试通过切换到Haskell窗口离开窗口时,自动命令会导致它立即跳回。我已经推出了一个删除此功能的更改--它可能从一开始就不是很有用。因此,如果您尝试GitHub上的开发版本(https://github.com/majutsushi/tagbar),它应该可以工作。

窗口为空的原因是不同的:默认情况下,Exuberant Ctags不支持Haskell。但是有人写了一个很好的替代方案,适用于Haskell与Tagbar: https://github.com/bitc/lushtags


4

我实际上已经在我的vimrc中为php文件设置了这个精确的配置。Tagbar打开时加载函数/变量,当Vim加载时光标留在php源文件中:

autocmd FileType php call SetPHPOptions()
function! SetPHPOptions()
setlocal shiftwidth=4 tabstop=4 softtabstop=4 expandtab makeprg=php-xdebug\ %
    :call tagbar#autoopen(0)
endfunction

将“hs”替换为“php”或您想要的任何其他文件类型。 文件类型列表位于:

$VIMRUNTIME/filetype.vim

我已经在 MacVim (快照 72,Vim 7.4) 上运行,并使用来自 https://github.com/majutsushi/tagbar 的最新版本构建。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接