試験期間中なのでneovim設定ファイルのコミットが増えてます。
NERDTreeを自動的に起動する
自動的に起動するだけならば以下のコマンドで実現できます。
autocmd vimenter * NERDTree
ただこれだと起動時にツリーの方へフォーカスが移り、やや不便です。
そこで起動時にwincmd p
でツリーからファイルにフォーカスを移してやります。
autocmd vimenter * NERDTree | wincmd p
引数なしで起動した場合とディレクトリを指定して起動した場合はツリーにフォーカスがあって欲しいのでargcを見て場合分けしてやります。
if argc() == 0 || argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") autocmd vimenter * NERDTree else autocmd vimenter * NERDTree | wincmd p endif
NERDTree以外のバッファが閉じられるとNERDTreeも閉じる
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
winnr("$") == 1
が現在のウィンドウ数が1、exists("b:NERDTree")
でNERDTreeが存在するか確認、b:NERDTree.isTabTree()
でNERDTreeの状態を見てq
で終了します
まとめ
augroup NERDTreeSetting autocmd! autocmd StdinReadPre * let s:std_in = 1 if (argc() == 0 || argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in")) autocmd vimenter * NERDTreeToggle else autocmd vimenter * NERDTreeToggle | wincmd p endif autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif augroup END
以上の内容は殆どNERDTreeのREADMEに書いていました。適当にググるよりまずREADMEを読みましょう(自戒)。