2011-11-17 44 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 =' - 這會調整顯示或隱藏所有窗口的大小,但通常這就是我想要的。 –