この記事では、Vim / neovim の操作のうち、一見同じに見えて実は異なる操作についてご紹介します。
[解答] 変更する対象範囲が異なる
c と s 自体は似て非なるコマンドである点から押さえる必要があります。
c と s の違い
ヘルプを見ても、なかなか違いがわかりにくいと思いますが、次のように実際に動作を見ると違いが分かります。
s = cl ということになります。つまり、s はいきなり置換を始めてしまう一方、c は次の操作/モーションを待ちます。
この動作によって、一文字消していきなり挿入モードを始めるか、モーションで対象範囲を指定/削除してから挿入モードを始めるかの違いが出るわけです。
Vimmer の中では、対象範囲の広さから c でまかなってしまっている人が多そうです。しかし、VimGolfをやったりするなら s も活用した方が良いでしょうね。
s と S の違いは?
同じように削除して挿入モードに入るという動きは変わりませんが、その削除対象が異なります。
s は一文字ですが、Sは行末までが対象となります。
S = cc とも考えられます。Shiftキーが必要になるので、ストロークが減るかと言えば微妙なところですが。
c と C の違いは?
こちらも削除して挿入モードに入るという動きは変わりませんが、その削除対象が異なります。
こちらも削除する対象が異なります。c は一文字またはモーションで指定した範囲までですが、Cは行末までが対象となります。
C = c$ = Di とも考えられます。こちらもShiftキーが必要になるので、ストロークが減るかと言えば微妙なところですが。
C と S の違いは?
こちらも非常に微妙な違いになります。
上記のアニメーションの通り、インデントが維持されるかどうかに違いが出てきます。
それ以外にも違いがあるようですが、実用上であまり気になるほどではなさそうです。
このVimコマンドの補足情報
- 利用頻度
- 便利さ
- 覚え易さ
関連するVimヘルプ
Vim のヘルプでは下記のように解説されています。
[“x]c{motion} {motion} のテキストを [レジスタ x に入れ] 削除し、挿入
を始める。‘cpoptions’ がフラグ ‘E’ を含むときは、削除
すべきテキストがないと (例えば、”cTx” でカーソルが ‘x’
の直後にあるとき)、エラーが発生し挿入モードは始まらな
い (これはVi互換である)。
‘cpoptions’ がフラグ ‘E’ を含まないときは、コマンド
“c” は削除すべきテキストがなくても、必ず挿入モードを始める。[“x]cc [count] 行を [レジスタ x に入れ] 削除し、挿入を始める
(行単位linewise)。‘autoindent’ がオンのとき、最初の
行のインデントを保持する。[“x]C カーソル位置から行の終わりまでと、[count]-1 行を [レジ
スタ x に入れ] 削除し、挿入を始める。”c$” と同義である
(行単位でないlinewise)。[“x]s [count] 文字を [レジスタ x に入れ] 削除し、挿入を始め
る (s は Substitute –置換 を意味する)。”cl” と同義で
ある (行単位でないlinewise)。[“x]S [count] 行を [レジスタ x に入れ] 削除し、挿入を始める。
change – Vim日本語ドキュメント
“cc” と同義である (行単位linewise)。
こちらは、Vim上では下記のコマンドでヘルプを確認できます。
:help c :help C :help s :help S :help cc
ヘルプで検索するときは、通常は大文字小文字は識別されませんので、どちらでも構いません。
Vimmer 必見の参考書
今回のようなVimの挙動を知るには、こちらの書籍が参考になります。
Vim/neovim関連の書籍で、もっとも評判が良くてバイブルと呼んでる人もいる一冊です。Vim/neovimのバージョンに依存しない沢山のTips形式で、その表題通りに「思考のスピードで編集」できるようになるノウハウが詰まっています。その高い評価は Amazon のレビューからも分かる通りです。Vimmer なら必ず一度は読んでおいて間違いありません。
こちらもVim関連の書籍で評価が高い書籍の一冊です。vim-jpで見かける上級Vimmer(Vimサポーターズ)の皆様による、Vimを実践で使ったノウハウからプラグイン関連の情報が詰まっています。日本の Vim界隈を知る上でも是非一読しておきたい一冊です。
Vim/neovim の設定ファイルやプラグインなど、Vim script に関するノウハウがいくつも詰まった一冊です。日本で Vim Script をここまで深く解説している唯一の書籍と言えます。Vim力を伸ばしたいと考えるなら、絶対に避けては通れない書籍でしょう。