518

たとえば、実行してVimでいくつかのファイルを開きます

vim a/*.php

23個のファイルを開きます。

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

:q

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

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

4

10 に答える 10

670
于 2009-09-04T21:34:06.293 に答える
371

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

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

于 2009-08-13T02:49:32.117 に答える
115

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

そこにバッファのリストが表示されます

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

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

:2bw

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

:1,3bw
于 2009-08-13T02:15:14.963 に答える
50

: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 コマンドで番号を検索するのではなく、バッファを直接ターゲットにできることです。

于 2012-07-20T16:59:59.533 に答える
45

使用する:

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

例:

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

    :bd2
    
于 2009-08-13T02:16:39.843 に答える
19

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

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

私のvimrcから

于 2011-11-17T05:37:51.367 に答える
3

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

多分タブの使用に切り替えますか?

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

gtgTタブを前後に切り替えます

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

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

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

于 2009-09-05T07:12:05.587 に答える
2

どうですか

vim -O a a

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

于 2009-08-13T02:14:11.720 に答える
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です。この関数を変更して、独自の構成に統合できます。

于 2013-01-02T15:38:42.613 に答える