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

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

次のコマンドを作成しようとしています。

vim -c "XXXXXX" myFile

「XXXXX」以外のいくつかのコマンドをvimに提供したいと思います。正確な行番号を指定するか、他の場合は特定の行を検索し、上の行。

私が望むのは、コードブロックまたはスクリプト内の関数に行を追加できるきちんとした「追加」です。最終的に私の目標は、約12個のシステムファイルを変更するインストールスクリプトを作成することです。

理想的には -c フラグだけを含み、理想的には通常モードコマンドを理解できる人が読める必要があります。私の頭の中の初期の考えは、通常"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

各行に「hi」文字列をすべて追加するには、「all」を使用します。

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

交換に関する追加情報:

vim -c "help substitute"

関連情報