1

別の StackOverflow ユーザー Conner からこのコードを取得しました。この質問から、NERDTree と TagList が最後で唯一のバッファーである場合、Vim を自動的に終了します。

(その質問についてコメントするオプションがなかったので、私の唯一のオプションは新しい質問をすることでした)。

問題は、残りの 2 つのバッファーが NERDTree と TagList だけの場合、(Linux Mint で) Vim エディターを閉じるにはどうすればよいかということです。

提供された答えは次のとおりです。

" If only 2 windows left, NERDTree and Tag_List, close vim or current tab
fun! NoExcitingBuffersLeft()
  if winnr("$") == 3
    let w1 = bufname(winbufnr(1))
    let w2 = bufname(winbufnr(2))
    let w3 = bufname(winbufnr(3))
    if (exists(":NERDTree")) && (w1 == "__Tag_List__" || w2 == "__Tag_List__" || w3 == "__Tag_List__")
      if tabpagenr("$") == 1
        exec 'qa'
      else
        exec 'tabclose'
      endif
    endif
  endif
endfun
autocmd BufWinLeave * call NoExcitingBuffersLeft()

しかし、それは正しく機能しません。最後の「エキサイティングな」バッファ(非NERDTreeまたは非TagListのバッファ)を閉じるたびに閉じますが、NERDTreeから新しいファイルを開こうとすると(「エクスプローラ」でファイル名をダブルクリックして)閉じます)。

正直なところ、このコードはよくわかりません。私はそれをいじってみましたが、望む結果を得ることができませんでした。

NERDTree エクスプローラーから新しいファイルを開いたときに、このコードを閉じないようにするにはどうすればよいですか?

コナー、そしてコミュニティの皆さん、ありがとう!

4

1 に答える 1

0

Taglist マニュアルから、.vimrc ファイルに置きます

let Tlist_Exit_OnlyWindow=1

私はNERDTreeを使用していませんが、次の方法で成功する可能性があります

autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif
于 2014-05-14T22:41:49.597 に答える