Vimで単一のバッファ(多くのうち)を閉じるにはどうすればよいですか?


445

実行するなどして、Vimでいくつかのファイルを開きます

vim a/*.php

23ファイルを開きます。

次に編集を行い、次の2回実行します

:q

すべてのバッファを閉じます。

Vimでバッファを1つだけ閉じるにはどうすればよいですか?


8
を使用してvim -o a/*.php(または-O垂直ウィンドウを使用して)別々のVimウィンドウでファイルを開き、バッファーナビゲーションを回避できることに注意してください-これは数個のファイルのみに最適な方法ですが、23個のファイルでは数行/列しかありません各。
カスカベル

1
@Jefromi:指摘してくれてありがとう!オプション-oを使用したことがありません。
レオ・レオポルド・ヘルツ준 영

ウィンドウ分割について。すでにVimを使用していて、水平方向に:esp、垂直方向に:evspで別のファイルを開きたい場合。
Lanzafame 14

回答:


557

注意:「bwのwは書き込みではなくワイプアウトを表します!」

マニュアルの詳細:

:bd

バッファ[N](デフォルト:現在のバッファ)をアンロードし、バッファリストから削除します。バッファが変更された場合、[!]が指定されていない限り、これは失敗します。その場合、変更は失われます。ファイルは影響を受けません。

何をしているのかわかっている場合は、:bwも使用できます。

:bw

|:bdelete |に似ていますが、実際にはバッファを削除します。


4
また、 ':M、Nbd'を実行してMからNまでのバッファ番号を閉じる可能性もあります。または、 ':bd N1 N2 ...'(N#はバッファ番号です)
雪に覆われた

61
マニュアルでは:bw「あなたが何をしているのかわかっている」場合にのみ使用するように書かれていますが、私にはわかりません:bd
jberryman 2014年

1
最初はこれに戸惑いました-バッファを閉じるために新しいタブを開いていました...しかし、(ストレートを使用して:bd)タブのバッファを閉じると、タブも閉じます。あなたはおそらくしたいことはある:bd n .. [m]:n,mbdあなたがバッファを見ずに行うことができ、近い番号または番号の範囲特定のために
JonnyRaa

5
wwriteVimのマニュアルによれば、コマンドの省略形であり、「ワイプアウト」についての言及はありません。コマンドの説明(help write)は、「バッファ全体を現在のファイルに書き込む」で始まります。
16年

3
@amn私も混乱しましたが、彼はコマンドの中で彼がコマンドについて話しているのではなくワイプアウトを意味することを意味しwました。彼はこの警告をそこに置いたので、人々はコマンドがバッファの書き込みを意味するとは思わなかった(それはバッファのワイプアウトを意味するのではない。)bwwbw
John

350

これが前の回答で明らかにされていない場合:

:bdは現在のバッファを閉じます。バッファリストを取得したくない場合。


4
:bdを見つける前に、人々が:ls-> doc番号をスキャンする->番号でバッファをアンロードすることで問題がなかったことは、私にはまったく意味がありませんでした。人々は実際にこれが効果的であると思いますか?
スベン

3
@svendはある範囲のバッファでは確実ですが、単独のバッファでは:bdの方がおそらく効果的です。
ファラン


10
:bd(意味が何であれ)バッファを閉じるだけですが、:bwすべての変数をクリアし、lsバッファからREALLYで削除します。
RedX 2013年

1
以下のhhhの答えはより冗長です…

103

:buffersを使用してバッファIDを確認します

そこにあるようなバッファのリストが表示されます

1  a.php
2  b.php
3  c.php

バッファからb.phpを削除したい場合

:2bw

バッファからすべてを削除/閉じる場合

:1,3bw

4
:%bwですべてのバッファをワイプすることもできます
cdleonard

7
バッファIDを確認するためのショートカット:2 CTRL-G
雪に覆われた2014

43

: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 ..などのコマンドを介して特定のバッファに切り替えるためにも使用できます。

この方法は、「非表示」のVimオプションが設定されている場合に特に役立ちます。バッファリストがすぐに大きくなり、複数の画面をカバーし、探している特定のバッファを見つけるのが困難になるためです。

この機能を最大限に活用するには、次のVimヘルプファイルを読み、それに応じてTabコマンドライン補完の動作を微調整して、ワークフローに最適になるようにすることをお勧めします。

:help wildmode

上記で説明した動作は、bashの完了をエミュレートするために一貫性を保つために選択した次の設定の結果です。

:set wildmode=list:longest,full

バッファー番号を使用するのとは対照的に、このアプローチのメリットは通常、最初に:lsコマンドで番号を調べる必要がなく、バッファーを直接ターゲットにできるファイル名の少なくとも一部を覚えていることです。


40

使用する:

  • :ls -バッファをリストする
  • :bd#n-#nがバッファ番号であるバッファを閉じる(lsそれを取得するために使用)

例:

  • バッファ2を削除するには:

    :bd2
    

16

次と前をファンクションキーにマッピングすることもでき、バッファを循環するのが簡単になります

map <F2> :bprevious<CR>
map <F3> :bnext<CR>

私のvimrcから


2

いかがですか

vim -O a a

そうすれば、左側の単一のファイルを編集して、右側のディレクトリ全体をナビゲートできます...解決策ではなく、単なる考え...


2

[編集:これは、私がVimを十分に知らなかった時代からの愚かな提案でした。バッファの代わりにタブを使用しないでください。タブはVimの「ウィンドウレイアウト」です]

たぶんタブの使用に切り替えますか?

vim -p a/*.php 同じファイルをタブで開きます

gtそしてgTスイッチタブを前後に

:q 現在のタブのみを閉じます

:qa すべてを閉じて終了します

:tabo 現在のタブ以外をすべて閉じます


2
タブを使用することが愚かな提案であると言うのはなぜですか?私はいつもタブを使用しているので質問します...:^ /
ネイト

2

1
それは素晴らしい投稿でした-それは私をさらに深く掘り下げるように促しました-あなたは見ましたwildmenuか?これはlustyjugglerに似ていますが(単純ですが)組み込まれています(lustyjugglerが必要+rubyであり、ubuntu oneiric船のデフォルトのvim であるので、これは私にとっては良いことでした-ruby)。
ネイト

@Nate:うん、ワイルドメニューを使用してファイルを開いていますが、プロジェクトに多数のファイルがある場合、スケーリングされません。また、vim-noxUbuntu のパッケージはRubyをサポートしています。
Leonid Shevtsov 2012

1

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です。この関数を変更して、独自の構成と統合できます。


このため、またはを使用するときにウィンドウレイアウトを維持するbbyeプラグインが最適です。私の答えをください。:bdelete:bwipeout
Wolfson

0

ウィンドウを閉じずにバッファを閉じる

ウィンドウレイアウト(分割に基づく現在のレイアウト)を破壊せずにバッファーを閉じたい場合は、bbyeのようなプラグインを使用できます。これに基づいて、あなたはただ使うことができます

:Bdelete (instead of :bdelete)
:Bwipeout (instead of :bwipeout)

または、次のよう.vimrcに簡単にアクセスできるようにマッピングを作成します

:nnoremap <Leader>q :Bdelete<CR>

vimの:bdeleteおよび:bwipeoutに勝る利点

以下からのプラグインのドキュメント

  • バッファを閉じて削除します。
  • そのウィンドウに別のファイルを表示します。
  • 他に開いているファイルがない場合は、空のファイルを表示します。
  • そのウィンドウで別のファイルを編集する場合は、不要な[no file]バッファを残さないでください。
  • ファイルが複数のウィンドウで開いている場合でも機能します。
  • さまざまなバッファエクスプローラとタブバーで大丈夫です。

:bdelete対:bwipeout

以下からのプラグインのドキュメント

Vimには、バッファを閉じるための2つのコマンドが:bdeleteあり:bwipeoutます。前者はバッファリストからファイルを削除し、そのオプション、変数、マッピングをクリアします。ただし、それはジャンプリストに残っているためCtrl-o、ファイルを元に戻して再度開きます。それが必要なものでない場合は、:bwipeoutまたはBbyeの同等の機能:Bwipeoutを使用してください:bdelete

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.