私は私の.vimrcに以下を持っています:
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Open NERDTree by default
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
autocmd VimEnter * NERDTree
autocmd VimEnter * wincmd p
そう、
% vim file.txt
nERDTreeを開き、file.txtバッファにカーソルを合わせます。編集を行い、バッファで:qを押すと、が残ります。 。 。 NERDTree。これは迷惑です。
:qaを使用してすべてのバッファーを閉じ、vimを終了することもできますが、私は:qロープに慣れています。だから私は残っている唯一のバッファーがNERDTreeであることを検出し、:qの目的で2つのバッファーを「統合」する方法があるかどうか疑問に思っています
編集
質問し、あなたが受け取るもの: https://github.com/scrooloose/nerdtree/issues#issue/21
function! s:CloseIfOnlyControlWinLeft()
if winnr("$") != 1
return
endif
if (exists("t:NERDTreeBufName") && bufwinnr(t:NERDTreeBufName) != -1)
\ || &buftype == 'quickfix'
q
endif
endfunction
augroup CloseIfOnlyControlWinLeft
au!
au BufEnter * call s:CloseIfOnlyControlWinLeft()
augroup END
私の vimrc から janus repo のバージョンに基づいています。
機能強化:クイックフィックスウィンドウのみが残っている場合も閉じます。代わりにBufEnter
自動コマンドを使用します。これは&bt
が正しく機能するために必要です。
実装が必要なアイデア:
呼び出されたときに、残っている唯一のバッファー(または必要に応じて唯一の非ヘルプバッファー)がNERDTreeバッファーであるかどうかをチェックし、そうである場合は削除する(または単に終了する)関数を記述できます。
次に、バッファが削除されたり、非表示になったり、実際に:qのときに何が起こっても、autocmdで実行するようにします(完全にわからないことを認めるのは恥ずかしいことです!)。
私はこれをするのが好きです:cmap bq :bufdo q<CR>
コマンドモードで2つのキーストロークですべてのバッファを閉じます。
@MrDの答えは私にはうまくいきます。私はmacOSでvim
のbrew
8.1を使用しています。
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif
あなたは出来る :cabbrv q qa
ですが、実際にはq
が必要なときに忘れてしまうため、これはお勧めしません。