在Vim中同时打开NERDTree和Tlist

3
我正在寻找一种方法(自动)在左侧直接上下打开NERDTree和Tlist,以使每个插件占据屏幕高度的一半。我已经发现了这个问题,其中Mohammed的答案有点符合我的要求。不过,我想知道是否有更直接的方法来实现这个目标。

可能是在垂直分割的水平分割中打开窗口的重复问题。 - lucapette
@lucapette 当然,这有点重复了。但是那个问题没有得到令人满意的答案,并且已经几个月没有任何活动了。那么,除了将其扩展为新问题之外,我该如何重新激活该问题呢? - hennes
1个回答

6
这里有一个解决方案,需要对“taglist.vim”脚本进行小的编辑。我还没有完全了解所有可能的影响,但到目前为止它似乎运行得很好。修改“taglist.vim”中的“Tlist_Window_Create”函数,包括这里显示的elseif语句即可。
...
" Create a new window. If user prefers a horizontal window, then open
" a horizontally split window. Otherwise open a vertically split
" window
if g:Tlist_Use_Horiz_Window
    " Open a horizontally split window
    let win_dir = 'botright'
    " Horizontal window height
    let win_size = g:Tlist_WinHeight
elseif g:Tlist_Use_Split_Window
    " Open the window in a horizontal split  of current window
    let win_dir = 'abo'
    let win_size = g:Tlist_WinWidth
else
...

我在最新的TagList(v4.5)中在第1290行插入了这个内容。 然后将以下内容添加到您的.vimrc文件中。
let Tlist_Use_Split_Window = 1
com TT NERDTree | TlistToggle

现在,:TT 命令会在一个垂直窗口中打开 TagList,位于 NERDTree 的上方。虽然它没有完全均分,但是很接近。如果您喜欢将树放在顶部,请将上面的 abo 改为 split

另外,你定义的TT并不能完全切换NERDTree-理想情况下,使用TT应该同时打开它们或者同时关闭它们。 - Adam Miller
@Adam,看起来如果你在定义TT时使用NERDTreeToggle而不是NERDTree,它会适当地关闭NERDTree。但是,这仅在您使用'abo'作为win_dir时才有效。如果您使用'split',taglist将抱怨窗口未打开并打开一个新窗口,这会搞乱事情(但如果您确实使用'split',则窗口会平均分割)。我在TT定义之后定义的是noremap <S-Space>:TT<CR><C-w>= - 这会在显示或隐藏时等比缩放所有窗口,但通常这正是我想要的。 - Matt McMinn

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