Green Screen

【3秒で忘れるviコマンド】行末変換

戻る

【参考元: note tai様 感謝!!】
https://note.com/t_aksak/n/n842a7caf241f

Vim便利っていうけど、都合よく行の途中から後ろだけ消すコマンドはないだろう、
と思っていたら...ありましたね。

■特定の文字をキーワードにして、その文字から行末までを書き換えるコマンド

:(開始行),(終了行)s/(キーワード).*/(キーワード)と変更語の文字/gc

※具体例として、以降説明する画像ではこのコマンドは、

:604,635s/ =.*/.place(x= , y =)/gc

になります。
======ざっと解説========
604,635 -> ,で区切った開始行と終了行
次のs ->これが、文字列置き換えを示すコマンド

1つ目のスラッシュ/ -> これが、置き換えたい文字を示す
今回の例は「 =」より後ろを「.*」で行末まで全指定という意味

2つ目のスラッシュ/ ->これ以降は、置き換え後の文字を示す

3つ目のスラッシュ/ ->この後は、コマンド実行方法。
gcのうち、 gが複数マッチした時全部やるよ、という意味で、
cは、1件ごとに置き換えするか、しないでスキップするか選べるという実行モード
=====================

・プログラムコーディングでよくある、別のところコピーしてきて、=より後ろだけ消して
書き換えたい状況。しかもファイル全体ではなくて、今コピーしてきた604行から635行の中だけでやりたい。

画像

例のコマンドを
:604,635s/ =.*
まで打つと置き換え対象範囲が決まる。
いい感じに、狙ったところがハイライト(白色付け)されている。

画像

例のコマンドをすべて打ち終わった状態。
=から後ろを、一括で「.place(x=, y =)」に変更するよう指定

画像

例のコマンド最後に「c」を指定したので、
1行毎に確認される。yがyes(置き換え実行),nがno(その行は何もしない)で、
きめ細かく決め打ちすることができる。
(y,nの他にもいろいろあるけど使ったこと無いなー。大抵はy or n で間に合う)

画像

コマンド終了した様子。

画像

=====================
特定の文字で決め打ちできる状態かどうかが鍵。
対象がハイライトされるので、ちゃんと意図した範囲化確認
しながら進められるのがとても良い。

作成日: 2025年7月25日23:32

更新日: 2025年7月25日23:57

タグ

IT

戻る