NERDTreeファイルを開いてエクスプローラバッファを自動的に閉じる方法


10

NERDTreeプラグインを使用する場合のデフォルトの動作は、新しいファイルを開いてNERDTreeバッファを開いたままにすることです。私がしたいのは、このデフォルトの動作を維持することですが、必要なときにオーバーライドして、ファイルを開いた後にNERDTreeバッファが閉じられるようにすることです。

let NERDTreeQuitOnOpen=1新しいファイルを開いたときにNERDTreeバッファーを自動的に閉じるために使用できることはわかっていますが、このオプションはデフォルトの動作を完全に上書きします(これは私が望むものではありません)。

理想的には、NERDTreeに私がやりたいことを実行するための組み込み機能があるかどうかを知りたいです。(私は探していましたが、そのようなものは見つからなかったので、実際には存在しないと思います)

それが存在しない場合、2つのアイデアがありました。

  • 1つ目は、に設定する関数を作成し、ファイルを開いてNERDTreeQuitOnOpenから1、再びNERDTreeQuitOnOpenに設定すること0です。

  • 2つ目は、次のマッピングを作成map d<CR> <CR> :NERDTree <CR> :bd<CR>することです。ファイルを開き(最初<CR>)、NERDTreeバッファーに戻り(:NERDTree <CR>)、このバッファーを閉じます(:bd <CR>)。私はそれを改善してマッピングがNERDTreeバッファーにのみ存在するようにする必要がありますが、それはかなり醜い解決策だと感じています。

どのアイデアが最良で、その理由は?それとももっと良い選択肢がありますか?



@ピーター:あなたのコメントをありがとう、記事はかなり興味深いです、そして私はおそらくnetrwとスプリットエクスプローラーの概念を試してみます。私は記事で説明されていることの利点を理解していると思いますが、問題はそれが実際に私の問題を解決しないことです、それは私が使用するツールを変更することをお勧めします。私は自分の習慣を変えることに反対ではありませんが、まず問題を解決してから、新しいツールを試してみたいと思います:)
statox

SUに関連して、未回答の質問:superuser.com/q/821720/334516。多分map d<cr> <cr>:NERDTreeClose<cr>マッピングのために?
muru

@muru:ありがとう、マッピングは正常に機能し、私のものよりも醜くないようです:) SUの質問については、彼がNERDTreeのバッファでファイルを開きたいので、それが完全に関連しているのかどうかはわかりませんそれを新しいバッファーで開き、次にNERDTreeバッファーを閉じます。彼は分割ウィンドウで終了しますが、分割ウィンドウではなく2つのバッファーで終了したいと思います。
statox

回答:


5

この質問では多くの回答が得られないようなので、netrwエクスプローラーに切り替える前の1週間に使用した@muruの提案で答えます。(もちろん、より良い選択肢の答えが出てきたら、私は喜んで私のマークを外し、新しいものを受け入れます)

アイデアは以下のマッピングを使用することです:

map d<cr> <cr>:NERDTreeClose<cr>

通常どおりファイルを開き、カーソルの位置に関係なくNERDTreeバッファを閉じる関数を呼び出します。

編集:私は最近NERDTreeに切り替えて私のソリューションを作り直しました:以前に提案したマッピングは機能していましたが、すべてのバッファーに存在していたため、dかなり煩わしいものを削除するたびに2回押す必要がありました。timeout設定を変更できたかもしれませんが、現在の設定方法が気に入っています。また、別のキーの組み合わせにマップしたくありませんでした)。

だから私は私の最初のソリューションを次の行に置き換えました.vimrc

autocmd BufEnter NERD_tree_* nmap  d<CR> <CR> :NERDTreeToggle <CR>
autocmd BufLeave NERD_tree_* unmap d<CR>

このようにして、マッピングはNERDTreeバッファーでのみ作成され、他のバッファーでのワークフローを乱すことはありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.