打开某些文件类型时启动VIM Tagbar

时间:2011-11-02 14:37:45

标签: vim tagbar

当我打开某些文件类型时,我想要启动标签栏VIM插件,所以我将以下内容添加到我的.vimrc中:

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

然而,这并不像我预期的那样有效。它打开一个侧窗,但侧窗不显示任何内容,我的光标被困在其中。我无法通过单击或使用CTRL-W移动命令切换窗口。

但是,当我手动运行TagbarOpen时,它运行正常。

其他人试过这个,或者上面发出了错误的命令?

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:3)

我实际上有这个确切的配置设置我的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

替换' php'因为' hs'或您想要的任何其他文件类型。文件类型列表:

$VIMRUNTIME/filetype.vim

让它在MacVim上运行(快照72,Vim 7.4),以及来自https://github.com/majutsushi/tagbar的最新版标记栏