プロが教えるわが家の防犯対策術!

以下のWEBページの通り、vimで複数行の行頭に同じテキストを挿入する方法があります。
これと同じことをコマンドモードでする方法はありますでしょうか?
もし、そのような方法があればご教授ください。よろしくお願いいたします。

https://maku77.github.io/vim/edit/insert-to-head …

A 回答 (3件)

「選択範囲の~~」ということであれば、コマンドモードには選択範囲という概念がありません。



行番号を指定して(わからなければ :set nu で表示)
:3,13s/^/aaaaa/
のようにすれば3行目から13行目まで、行頭にaaaaaが挿入されます。

行番号の指定を避けるのであれば、
・開始行にカーソルを移動して ma と打つ(aというマークを付ける)
・終了行に移動して、
:'a,.s/^/aaaaa/
です。「'a 」で、aというマークの付いた行、「.」で今カーソルのある行、
「'a,.」で「aというマークの付いた行から今カーソルのある行まで」が対象になります。
終了行で mb して、
:'a,'bs/^/aaaaa/
でもいいですが。

あるいは、行数を数えるのがいやでなければ、
:.-2,.s/^/aaaaa/
で、カーソルのある2行前からカーソルのある行までというのが簡単かも。
    • good
    • 0
この回答へのお礼

まさに私が知りたい内容でした。
コマンドモードで、行を指定して、その範囲内でテキストを挿入する方法を知ることができて、本当に満足しています。さらに、上級のテクニックまで教えていただき、感謝しています。
ありがとうございました。

お礼日時:2022/10/21 07:53

:%s/^/test/g

    • good
    • 0
この回答へのお礼

ありがとうございました。
その方法で文字列を挿入することができました。

お礼日時:2022/10/21 07:53

例えば、ファイル...



1sdlkfls
2oijosdifu09s
3987y9sdcsdc
4okjdovidjv
5098usdfv
698sudv
7opidsjvf
80posdv
9sv-90i
8-09sdvc
909ijsvc

に対して、コマンドライン上で次のコマンドを実行すれば...

$ sed -e "s/^/____/" tmp1

次のような表示が行われます。

____1sdlkfls
____2oijosdifu09s
____3987y9sdcsdc
____4okjdovidjv
____5098usdfv
____698sudv
____7opidsjvf
____80posdv
____9sv-90i
____8-09sdvc
____909ijsvc
    • good
    • 0
この回答へのお礼

コマンドライン上でsedコマンドが実行できるんですね。
大変勉強になりました。
ありがとうございました。

お礼日時:2022/10/21 07:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!