コマンドラインで vim を使用してファイルの途中にテキストを追加するにはどうすればよいですか?

コマンドラインで vim を使用してファイルの途中にテキストを追加するにはどうすればよいですか?

次のようなコマンドを記述しようとしています。

vim -c "XXXXXX" myFile

「XXXXX」の代わりに、正確な行番号を指定するか、別のシナリオでは特定の行を検索して上の行に挿入することによって、ファイル内の任意のポイントにテキストを追加するコマンドを vim に提供したいと思います。

私がやろうとしているのは、スクリプト内のコード ブロックまたは関数に行を追加できる、一種の巧妙な「追加」です。最終的には、おそらく 12 個のシステム ファイルを変更するセットアップ スクリプトを作成することを目指しています。

理想的には、これには -c フラグが 1 つだけ含まれ、通常モードのコマンドを理解できる人なら誰でも読めるはずです。私の頭の中では、最初は"ggjjjiInsertingOnLine4:wq"通常モードにできるようなことを考えていました。

答え1

コマンドライン範囲を使用して、編集が必要な特定の行を選択できます。次に、置換パターンを使用して編集 (追加) を実行できます。

たとえば、3 行目の先頭にテキスト「hi」を追加するには、次のようにします。

vim -c "3 s/^/hi/" -c "wq" file.txt

3 行目の末尾にテキスト「hi」を追加するには:

vim -c "3 s/$/hi/" -c "wq" file.txt

その他のオプションと説明については、以下をご覧ください。

vim -c "help cmdline-range"

その他の例

検索文字列「hi」を検索し、3 行目に文字列「everyone」を追加するには、次のようにします。

vim -c "3 s/\(hi\)/\1 everyone/" -c "wq" file.txt

検索文字列「hi」を検索し、3 行目に文字列「say」を追加するには、次のようにします。

vim -c "3 s/\(hi\)/say \1/" -c "wq" file.txt

行番号が不明な場合は、各行に最初に出現する文字列「hi」を「all」で追加します。

vim -c "1,$ s/\(hi\)/\1 all/" -c "wq" file.txt

「 all 」を使用して、各行の文字列「hi」のすべての出現箇所を追加します。

vim -c "1,$ s/\(hi\)/\1 all/g" -c "wq" file.txt

代替品に関する詳細情報:

vim -c "help substitute"

関連情報