Vim-1つのコマンドでバッファーを保存して閉じる


25

ディレクトリには多数のテキストファイルがあり、それぞれを個別に編集する必要があることはわかっています。

私は賞賛の行から始めます

vim *.txt

これにより、ファイルがvimの個別のバッファーとして開かれ、最初のバッファーが表示されます。それを編集します-次に、「:w」を使用して保存し、「:bd」を使用してバッファを閉じ、次のバッファに移動します。

バッファを保存して閉じるためのこの「:w:bd」は私にとって長い間感じています。そして、もっとvim忍者の方法があると思います-あなたが作業中のバッファを一度に感じて急いで保存して閉じるための推奨方法は何ですか?


私が推奨する方法は、:nextバッファに移動し、タスクが終了したらすべてを書き込み/閉じること:wqaです。これはあなたがあなたの家にいると仮定:set hiddenします~/.vimrc
ロメインル

回答:


22

コマンドラインでファイルをVimに渡すと、ファイルはバッファーで開かれるだけでなく、引数リストに入力されます。したがって、:nextやなどのコマンドを使用し:firstてそれらをナビゲートできます(そして:argdo、バッチ処理のために、これは気の利いたトリックになる可能性があります)。あなたの質問のために私がお勧めするコマンドは:wnext(省略形:wn)です。これ:writeは現在のバッファーであり、それからバッファーに進み:nextます。

:bdelete特に、一連のファイルを使用してコマンドラインからVimを起動し、作業が完了したら終了する場合は、明示的にバッファを作成する必要はありません。(私が考えることができる唯一の例外は、システムメモリを節約するために巨大なファイルをアンロードすること、または多くの異なる編集のために単一のGVIMインスタンスを再利用することです。)

ただし、本当にこれが必要な場合は、たとえば、カスタムコマンドを定義するだけです。

:command Wd write|bdelete

5
OPが要求したことを達成する2つの方法について説明しましたが、2番目の方法は明らかではありません:w|bd
on野

->これには、OPが使用するアプローチを適合させるという利点がありますが、:next場合によってはより理にかなっていると思います。
on野

4

私はあなたがいないことに同意しながら、持っているあなたが現在使用していない開いているバッファを削除するには、私は私が持っているので、それらを削除したいのvim-航空会社のトップに、のタブラインが有効になっている番組開いているすべてのバッファのすべての時間を窓。私は次のものを持っています.vimrc

nnoremap qq :w\|bd<cr>

qq 現在のバッファを保存して閉じますが、vimの「マクロの記録」機能を台無しにします(これで問題ありません)。


2
ビルトインZZが思い浮かびますが、それは単にバッファを削除するのではなく、Vimを完全に保存して終了することになります。小文字zzは、現在のカーソル行を中心にビューを配置するよりもマクロの価値が高いと思う人にとっては、興味深い代替マッピングかもしれません。
8ビットツリー

1
QVimでの録音がどれほど価値があるかを理解した後、最近、に変更しました。
-apostl3pol
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.