いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

vimで c,C s,S を使って編集を楽にする

f:id:gsf_zero1:20211217140202g:plain

概要

よく忘れるのでここにメモメモ。。。知っているとちょっと楽できます。

vimの初心者向けの記事とかでは、よく 挿入モード のコマンドとして

  • i or I
  • a or A

が書かれていますが、同じ用途で使えるコマンドとして

  • c or C
  • s or S

というのもあります。

んで、何気にこちらが便利です。

以下のような動きとなります。

  • c は、その後にモーションをつけて、指定した分を削除してから挿入モードに入る。
    • カーソルがある文字を削除して挿入モードに入りたい場合は cl 。
  • Cは、現在カーソルがあるところから行末までを削除して挿入モードに入る。
  • s は、前にカウントを付与して、指定した文字数分を削除してから挿入モードに入る
    • デフォルトが 1s となるので、これは cl と同じことになる。
  • Sは、前にカウントを付与して、指定した行数を削除してから挿入モードに入る
    • Cと違って、行末までではなく行全体を削除してくれる

i, a と c, s の一番の違いは何らかの部分を削除してから挿入モードに入ってくれる点です。

新規で入力したい場合は i, a (I, A) がいいですが、もう行が存在している部分で、既存の部分を一部削除してそのままコードを書いていきたい場合に c, s (C, S) をよく使います。

例えば、以下のようなコードがあるとして(コードに意味はありません)

f:id:gsf_zero1:20220307135425p:plain

今、13行目にカーソルがいます。この部分のコードを修正したいので、この行を消して新たに書きたい場合

i, a を使う場合だと、最初に dd とかして行を削除して、その後 i なり a なりで挿入モードに入って書いたりします。

これが、c, s の使い方だと S 一発で

f:id:gsf_zero1:20220307135606p:plain

行が削除されて即挿入モードになります。

また、元のコードで 左辺 の ch って名前を変えたい場合でも cw って打つと

f:id:gsf_zero1:20220307135716p:plain

と単語が削除されて即挿入モードに入れます。

参考情報

vim-jp.org


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。