私はvimを使って一連のファイルを開いて編集したいと思います。私が期待する動作は、vimがファイルを開いて編集し、と入力すると、vimがファイルを:wq
閉じて保存してから編集を開始できるように、すぐに次のファイルを開くことです。
グーグルをやる一部 結果vim *
vim pattern*
または、標準のUnixシェルファイルのグロービング構文を変更したソリューションが提供されます。
ただし、私のシステムでこれを試みると、予期しない動作が発生します。編集後、:wq
vimは同じ最初のファイルを(変更が保存された状態で)再び開くように見え、別のファイルが:wq
私をコマンドラインに戻します。編集用に開いている他のファイルはありません。
編集するグローバルを正しく読み取れない場合に備えて、アスタリスクを避ける2つの方法を試しました。
$ vim webform.webform.\*
$ vim "webform.webform.*"
しかし、両方の構文は、リテラル名で新しいファイルを編集するvim画面を提供します。webform.webform.*
これは最初に試しましたが、予期しない動作が発生しました。
$ vim webform.webform.*
Vimは最初のファイルを開きます:
... ...
100 draft_pending_multiple_message: ''
101 confirmation_type: page
102 confirmation_title: ''
103 confirmation_message: ''
"webform.webform.my_webform.yml" 184L, 8621C
ファイルを編集して保存して閉じます。
:wq
Vimは変更が記録されたことを確認し、編集するファイルがいくつ残っているかを表示し、何らかの理由でEnterキーを押すように指示します。
"webform.webform.my_webform.yml" 184L, 8621C written
E173: 130 more files to edit
Press ENTER or type command to continue
次に、開いたばかりの最初のファイルをもう一度開きます。
100 draft_pending_multiple_message: ''
101 confirmation_type: page
102 confirmation_title: ''
103 confirmation_message: ''
1,1 Top
保存して閉じます。
:wq
これで、vimに他のファイルが開いていない状態でbashプロンプトに戻りました。
$
ファイルを開いて編集、保存、閉じた後、次のファイルを編集したいと思います。私は何が間違っていましたか?
$ bash --version
GNU bash, version 4.4.12(1)-release (x86_64-pc-linux-gnu)
$ vim --version
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Jun 21 2019 04:10:35)
...
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
...
答え1
問題はワイルドカードではありません。各ファイルはバッファーで開き、:wq
バッファー出口は使用できません。これを使用して、:w|bd
現在のバッファを保存してアンロードできます。しかし、私はそれが薄暗いと思います。より良いアプローチは、-p
Vimを呼び出すときにこのフラグを追加することです:
vim -p webform.webform.*
これにより、各ファイルが新しいタブで開き、次に:wq
(または)を使用して:x
ファイルを保存してタブを閉じることができます。
答え2
icarusのコメントによれば、:wn
thenをwrite
代わりに使用するnext
と:wq
望ましい動作が得られ、vimに2つの別々のコマンドを入力する必要はありません。