web-dev-qa-db-ja.com

Vimで(多数のうちの)単一のバッファを閉じる方法は?

たとえば、Vimでいくつかのファイルを開く。

vim a/*.php

これで23ファイルが開きます。

それから私は私の編集を行い、二度以下を実行します

:q

これは私のバッファをすべて閉じます。

どうすればVimのバッファを1つだけ閉じることができますか?

注意の言葉: "wは書き込みを意味するのではなく、抹消を意味する!"

マニュアルからより多くの:

:bd

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

あなたがしていることを知っていれば、あなたはまた使用することができます:bw

:bw

|:bdelete |と同じですが、実際にはバッファを削除します。

507
hhh

これが前の答えではっきりしない場合:

:bdカレントバッファを閉じます。あなたがバッファリストをつかみたくないなら。

343
RedBlueThing

:buffersを使用してバッファIDを確認してください。

あなたはそこに好きなバッファのリストを見るでしょう

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

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

:2bw

バッファからすべてを削除またはクローズしたい場合

:1,3bw
95
nightingale2k1

:lsコマンドの出力をブラウズしてその番号を指定してバッファを削除(unload、wipe ..)するのではなく、ファイル名を使用するほうがより効果的であることがわかります。

たとえば、いくつかの.txtファイルを開いて思い出をリフレッシュしたあと、数行のテキストをコピーして貼り付けて、種類のテンプレートとして使用します。以下のように入力します。

:bd txt <Tab>

一致する文字列はファイル名の先頭にある必要はありません。

上記の例では、画面の下部に 'txt'と一致するファイル名のリストが表示され、最初に入力しなかった:bdコマンドをそのまま実行できるようにしています。

これが例です:

doc1.txt doc2.txt
:bd txt 

'txt'ビットの上でバックスペースして削除したいファイル名を入力することもできますが、これが本当に便利になるのは、次のようにする必要がないということです。もう一度Tabキーを押すと、Vimは自動的にコマンドを完了する最初の試合で:

:bd doc1.txt

この特定のバッファを削除したい場合は、Enterキーを押すだけです。

そして、もし私が削除したいバッファが偶然2番目(3番目など)の一致であるなら、私は私の:bdコマンドが一致のリストを循環させるためにTabキーを押し続ける必要があるだけです。

当然のことながら、このメソッドは:b ..:sb ..などのコマンドを介して特定のバッファに切り替えるためにも使用できます。

'hidden'のVimオプションが設定されている場合、このアプローチは特に便利です。バッファリストがすぐに非常に大きくなり、いくつかのスクリーンをカバーし、探している特定のバッファを見つけるのが難しくなるからです。

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

:help wildmode

上記の動作は、bashの完了をエミュレートするために一貫性を保つために選択した次の設定から発生します。

:set wildmode=list:longest,full

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

40
guv'

つかいます:

  • :ls - バッファを一覧表示する
  • :bd#n - #nがバッファ番号であるバッファを閉じる(それを取得するにはlsを使う)

例:

  • バッファ2を削除します。

    :bd2
    
35
Shaun

Nextとpreviousをファンクションキーにマップすることもできます。バッファを簡単に切り替えることができます。

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

私のvimrcから

14
Ravi

[編集:これは私がVimをよく知らなかった頃からのばかげた提案だった。バッファの代わりにタブを使わないでください。タブはVimの "ウィンドウレイアウト"です。]

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

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

gtおよびgTはタブを前後に切り替える

:qは現在のタブだけを閉じます

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

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

1
Leonid Shevtsov

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と入力するのと同じです。あなたはあなた自身の設定と統合するためにこの機能を修正することができます。

1
New Alexandria

どうですか?

vim -O a a

そうすれば、左側にある単一のファイルを編集して右側にあるディレクトリ全体を移動できます。

1
Santi