2012-07-04 25 views
4

我最近在我的vim配置中添加了NERDTree和NERDTreeTabs,我對此很滿意。如何自定義NERDTree行爲

不過,我想將其配置一點,並有以下行爲:

按Ctrl +

  • 如果NERDTree裏面,什麼都不做。

  • 如果在編輯的文件中,轉到打開的NERDTree,如果沒有任何打開的NERDTree,則先打開一個。我想應該使用NERDTreeTabsToggle,但是要使用它,我必須能夠檢測NERDTree是否已經打開,而不是通過「切換」它來關閉它。

按Ctrl +

  • 如果NERDTree內,回到編輯的文件,但不關閉NERDTree。 (就像什麼按Ctrl - 瓦特會做)

  • 如果裏面的編輯過的文件,隱藏/關閉NERDTree。

但是,我的Vim腳本技巧是低的方式得到任何滿意的結果。例如,我不知道如何檢查當前活動窗口是什麼或如何編寫適當的條件語句。

有人可以幫我嗎?

謝謝。

回答

5

如果終於找到了方法。

我編輯了nerdtree_plugin/vim-nerdtree-tabs.vim文件,添加這些功能:

" === Stepped Open/Close functions === 
" focus the NERDTree view, creating one first if none is present 
fun! s:NERDTreeSteppedOpen() 
    if !s:IsCurrentWindowNERDTree() 
    if s:IsNERDTreeOpenInCurrentTab() 
     call s:NERDTreeFocus() 
    else 
     call s:NERDTreeMirrorOrCreate() 
    endif 
    endif 
endfun 

" unfocus the NERDTree view or closes it if it hadn't had focus at the time of 
" the call 
fun! s:NERDTreeSteppedClose() 
    if s:IsCurrentWindowNERDTree() 
    call s:NERDTreeUnfocus() 
    else 
    let l:nerdtree_open = s:IsNERDTreeOpenInCurrentTab() 

    if l:nerdtree_open 
     silent NERDTreeClose 
    endif 
    endif 
endfun 

我也做了pull-request撰文,如果他想增加上游論文功能向他請教。

作者將我的pull請求添加到主存儲庫,因此在下一個版本中,您可以直接調用函數。

希望它可以幫助人們。