たとえば、実行してVimでいくつかのファイルを開きます
vim a/*.php
23個のファイルを開きます。
次に、編集を行い、次を2回実行します
:q
すべてのバッファを閉じます。
Vimで1つのバッファだけを閉じるにはどうすればよいですか?
これが前の回答で明らかにされていない場合:
:bdは現在のバッファを閉じます。バッファリストを取得したくない場合。
:buffers を使用してバッファ ID を確認します
そこにバッファのリストが表示されます
1 a.php
2 b.php
3 c.php
バッファから b.php を削除したい場合
:2bw
バッファからすべてを削除/閉じたい場合
:1,3bw
:ls コマンドの出力をブラウズして番号を指定してバッファーを削除 (アンロード、ワイプなど) するよりも、ファイル名を使用する方が効果的であることがよくあります。
たとえば、いくつかの細かい点の記憶をリフレッシュするためにいくつかの .txt ファイルを開いた後、いくつかのテキスト行をコピーして貼り付け、ある種のテンプレートとして使用します..など.次のように入力します。
:bd txt <Tab>
一致する文字列がファイル名の先頭にある必要はないことに注意してください。
上記は、画面の下部に「txt」に一致するファイル名のリストを表示し、最初に入力した :bd コマンドをそのままにして、完了できるようにします。
次に例を示します。
doc1.txt doc2.txt
:bd txt
「txt」ビットをバックスペースして、削除したいファイル名を入力することもできますが、これが本当に便利なのは、その必要がないことです: Tab キーをもう一度押すと、Vim は自動的にコマンドを完了します。最初の一致で:
:bd doc1.txt
この特定のバッファを取り除きたい場合は、Enter キーを押すだけです。
そして、削除したいバッファがたまたま 2 番目 (3 番目など) の一致である場合、Tab キーを押し続けるだけで、:bd コマンドが一致のリストを循環します。
当然のことながら、このメソッドは :b.. :sb.. などのコマンドを介して特定のバッファに切り替えるためにも使用できます。
このアプローチは、'hidden' Vim オプションが設定されている場合に特に便利です。バッファー リストがすぐに非常に大きくなり、複数の画面にまたがり、探している特定のバッファーを見つけるのが難しくなるためです。
この機能を最大限に活用するには、おそらく次の Vim ヘルプ ファイルを読み、それに応じて Tab コマンド ライン補完の動作を微調整して、ワークフローに最も適したものにすることをお勧めします。
:help wildmode
上記の動作は、bash の完了をエミュレートするために一貫性を保つために選択した次の設定の結果です。
:set wildmode=list:longest,full
バッファ番号を使用するのとは対照的に、このアプローチの利点は、通常、指定されたファイル名の少なくとも一部を覚えているため、最初に :ls コマンドで番号を検索するのではなく、バッファを直接ターゲットにできることです。
使用する:
:ls
- バッファを一覧表示する:bd#n
- #n がバッファ番号であるバッファを閉じる (ls
取得に使用)例:
バッファ 2 を削除するには:
:bd2
次と前をファンクション キーにマップすることもできるので、バッファを簡単に切り替えることができます。
map <F2> :bprevious<CR>
map <F3> :bnext<CR>
私のvimrcから
[編集: これは、私が Vim をよく知らなかったときからの愚かな提案でした。バッファの代わりにタブを使用しないでください。タブは Vim の「ウィンドウ レイアウト」です]
多分タブの使用に切り替えますか?
vim -p a/*.php
タブで同じファイルを開く
gt
gT
タブを前後に切り替えます
:q
現在のタブのみを閉じます
:qa
すべてを閉じて終了します
:tabo
現在のタブ以外のすべてを閉じます
どうですか
vim -O a a
そうすれば、左側で単一のファイルを編集し、右側でディレクトリ全体をナビゲートできます...解決策ではなく、単なる考えです...
Buffergator や NERDTree などのバッファまたはツリー ナビゲーション プラグインを使用している人は、現在のバッファを破棄する前にこれらの分割を切り替える必要があります。
私が使う:
"" Buffer Navigation
" Toggle left sidebar: NERDTree and BufferGator
fu! UiToggle()
let b = bufnr("%")
execute "NERDTreeToggle | BuffergatorToggle"
execute ( bufwinnr(b) . "wincmd w" )
execute ":set number!"
endf
map <silent> <Leader>w <esc>:call UiToggle()<cr>
そのリストの「NERDTreeToggle
」は、入力するのと同じ:NERDTreeToggle
です。この関数を変更して、独自の構成に統合できます。