2011-11-17 80 views
3

我正在寻找一种方法来(自动)在左侧彼此正上方打开NERDTree和Tlist,以便每个插件占用屏幕高度的一半。我已经找到了this question,其中穆罕默德的答案是我所寻找的。不过,我想知道是否有更直接的方式来做到这一点。在Vim中打开NERDTree和Tlist对方

+0

[在垂直分割的水平分割中打开窗口]的可能的重复(http://stackoverflow.com/questions/6005874/opening-a-window-in-a-horizo​​ntal-split-of-a-垂直分裂) – lucapette

+0

@lucapette是的,当然它是一种重复。但是这个问题没有得到令人满意的答案,并且在几个月内没有看到任何活动。那么我怎么去重新激活这个问题,而不是把它扩展到一个新的问题呢? – hennes

回答

6

这是一个需要对'taglist.vim'脚本进行小编辑的解决方案。我还没有研究出所有潜在的后果,但目前看起来效果很好。修改“Tlist_Window_Create”功能“taglist.vim”包括这里显示的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 
... 

我插入这个在最新的标记列表(V4.5)起始于线1290。 然后将以下添加到您的.vimrc

let Tlist_Use_Split_Window = 1 
com TT NERDTree | TlistToggle 

现在:TT命令打开在一个垂直窗口NERDTree上面标记列表。由于它不完全分裂,但它很接近。如果您更喜欢上面的树,请将上面的abo更改为split

+0

谢谢,这很有价值。 – hennes

+0

此外,您定义的TT并不完全切换NERDTree,理想情况下,使用TT两种方式都应打开它们并关闭它们。 –

+0

@Adam在定义TT时,如果您使用NERDTreeToggle而不是NERDTree,它将适当关闭NERDTree。但是,这只适用于在win_dir中使用'abo'的情况。如果你使用'分割',taglist会抱怨窗口没有打开,并打开一个新窗口,这会弄乱一些东西(但是如果你使用'分割',窗口会中途分割)。我在TT定义之后定义的是'noremap :TT =' - 这会调整显示或隐藏所有窗口的大小,但通常这就是我想要的。 –