期待どおりに動作しないすべてのファイルを開くためにvimを使用するシェルグローブ

期待どおりに動作しないすべてのファイルを開くためにvimを使用するシェルグローブ

私はvimを使って一連のファイルを開いて編集したいと思います。私が期待する動作は、vimがファイルを開いて編集し、と入力すると、vimがファイルを:wq閉じて保存してから編集を開始できるように、すぐに次のファイルを開くことです。

グーグルをやる一部 結果vim *vim pattern*または、標準のUnixシェルファイルのグロービング構文を変更したソリューションが提供されます。

ただし、私のシステムでこれを試みると、予期しない動作が発生します。編集後、:wqvimは同じ最初のファイルを(変更が保存された状態で)再び開くように見え、別のファイルが: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現在のバッファを保存してアンロードできます。しかし、私はそれが薄暗いと思います。より良いアプローチは、-pVimを呼び出すときにこのフラグを追加することです:

vim -p webform.webform.*

これにより、各ファイルが新しいタブで開き、次に:wq(または)を使用して:xファイルを保存してタブを閉じることができます。

答え2

icarusのコメントによれば、:wnthenをwrite代わりに使用するnext:wq望ましい動作が得られ、vimに2つの別々のコマンドを入力する必要はありません。

関連情報