Vim実行の繰り返し[閉じる]

Vim実行の繰り返し[閉じる]

私はユーザーが複数のファイルを編集できるスクリプトを作成しています。各ファイルを起動しようとしていますvim

私はファイル名を配列に入れ、配列の各要素を繰り返し、繰り返しごとにvimを始めました。ただし、これはvim最初の要素に対してのみ開始され、スクリプトは停止します。私の目標をどのように達成できますか?

答え1

ループ内で対話型コンテンツを実行するには、標準入力とは異なるファイル記述を使用する必要があります。

#!/bin/bash

while read -r file <&3; do

  vim "$file" || break

done 3< <(find . -type f)

または、異常なファイル名をサポートするには、ヌルバイト区切り文字を使用します。

#!/bin/bash

while IFS= read -r -d '' file <&3; do

  vim -- "$file" || break

done 3< <(find . -type f -print0)

の出力は、findプロセス置換を介してファイルディスクリプタ3に供給され、次に転送されreadます<&3

/編集:コメントでWolfeの提案に基づいています。

答え2

私にとってこれはうまくいきます:

#!/bin/sh

for f in *.txt
do
    vim "$f"
done

各ファイルに対してvimを開き、前のファイルを閉じてから、次のファイルを開きます。

関連情報