web-dev-qa-db-ja.com

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

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

私は表彰行から始めます

vim *.txt

これは、ファイルをvimの個別のバッファーとして開き、最初のファイルを調べます。編集します。次に、「:w」を使用して保存し、「:bd」を使用してバッファを閉じて次のバッファに移動します。

バッファを保存して閉じるこの ':w:bd'は私には長く感じられますが、もっとvim忍者の方法があると思います-作業中のバッファを一度に感じて一気に保存して閉じるには、どのような方法が推奨されますか?

26
Joe

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

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

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

:command Wd write|bdelete
22
Ingo Karkat

現在使用していない開いているバッファを削除するしないことに同意しますが、 vim-airline のタブ行が有効になり、開いているすべてのバッファーが常にウィンドウの上部に表示されます。私は.vimrc

nnoremap qq :w\|bd<cr>

qqは、現在のバッファーを保存して閉じますが、vimの「マクロの記録」機能(これで大丈夫です)を混乱させます。

4
apostl3pol