4

最近、virdTreeとNERDTreeTabsをvim構成に追加しましたが、とても満足しています。

ただし、もう少し構成して、次のように動作させたいと思いました。

Ctrl+ Left

  • NERDTree内の場合は、何もしません。

  • 編集したファイル内にある場合は、開いているNERDTreeに移動し、存在しない場合は最初に1つ開きます。使用する必要があると思いNERDTreeTabsToggleますが、使用するには、NERDTreeがすでに開いているかどうかを検出できなければならず、「切り替える」ことによって閉じることはできません。

Ctrl+ Right

  • NERDTree内の場合は、NERDTreeを閉じずに編集したファイルに戻ります。(ちょうど何のようにCtrl- wRightするでしょう。)

  • 編集したファイル内にある場合は、NERDTreeを非表示/閉じます。

しかし、私のVimスクリプトのスキルは、満足のいく結果を得るには非常に低いものです。たとえば、現在アクティブなウィンドウが何であるかを確認する方法や、適切な条件ステートメントを作成する方法がわかりません。

誰かがそれを手伝ってくれる?

ありがとうございました。

4

1 に答える 1

6

最終的に方法を見つけた場合。

ファイルを編集して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

また、これらの関数をアップストリームに追加するかどうかを作成者に尋ねるプルリクエストを作成しました。

著者は私のプルリクエストをメインリポジトリに追加したので、次のリリースでは、関数を直接呼び出すことができます。

それが人々に役立つことを願っています。

于 2012-07-04T09:57:17.017 に答える