58

.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

4

5 に答える 5

109

これを正確に行うためのスクリプトがNERDTreeの問題リストに掲載されています。nerdtreeのGitHubで問題21をチェックアウトします。

これはあなたのvimrcのための単一行コマンドにここにつながります:

autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
于 2010-11-30T22:05:52.610 に答える
14
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から、 janusrepoのバージョンに基づいています。

機能強化:クイックフィックスウィンドウのみが残っている場合も閉じます。BufEnter代わりに、&bt正しく動作するために必要な自動コマンドを使用します。

于 2011-03-23T10:30:40.783 に答える
1

実装が必要なアイデア:

呼び出されたときに、残っている唯一のバッファー(または必要に応じて唯一の非ヘルプバッファー)がNERDTreeバッファーであるかどうかをチェックし、そうである場合はそれを削除する(または単に終了する)関数を作成できます。

次に、バッファが削除/非表示になるたびにautocmdを実行します。これは、:qのときに実際に発生することです(完全に確信が持てないことを認めるのは恥ずかしいことです)。

于 2010-01-14T18:54:01.883 に答える
0

できますが:cabbrv q qa、実際に必要なときに忘れてしまうので、それはお勧めしませんq

于 2010-01-14T20:17:44.303 に答える
0

私はこれを行うのが好きです:cmap bq :bufdo q<CR>コマンドモードで2回のキーストロークですべてのバッファを閉じます。

于 2010-01-15T03:19:11.333 に答える