この記事では、Vim / neovim で混同しやすいキーバインドの1つ「cw と dw」について、詳しく掘り下げてご紹介します。
[解答] 単語削除後のモード、スペースの扱い
次のような明確な差があります。
- コマンド実行後はインサートモードなのが cw、ノーマルモードなのが dw。
- 単語を削除した後、単語後の空白(スペース)を残すのが cw、空白(スペース)を消すのが dw。
1については、変更したいなら代わりの単語を入力する作業へ移りたいし、削除だけなら入力ではなく移動したいよね、というユーザーの自然な編集動作を反映させた動作です。
2については、英単語を変更するなら後ろのスペースはそのまま利用しますから、スペースは維持します。一方で、削除するのであれば単語の後ろのスペースも一緒に削除しなければ、不自然になってしまいます。
例えば、「test sentence」という2つの単語に対して、それぞれを実行してみます。
いずれも動作が分かると、非常に自然な違いになることがわかります。
なお、ここまで紹介した内容は、当然それぞれの操作の意味を理解できている必要があります。
Vimキーバインド1. 単語の変更
(ノーマルモード)
cw
こちらは変更を表すオペレータ c と単語単位の移動(モーション) w の組み合わせです。
Vimキーバインド2. 単語の削除
(ノーマルモード)
dw
こちらは削除を表すオペレータ d と単語単位の移動(モーション) w の組み合わせです。
移動(モーション)部分を変えれば、異なる範囲で同じように操作を応用できます。
細かい部分の違いになりますが、知っていると1〜2ステップ節約できます。
ぜひ覚えましょう。
日本語の文章でも使える?
実は、日本語でも同じように動作をしますが、次のように若干のクセがあるので注意が必要です。
- 全角スペースと半角スペースは同じ扱い
- ひらがな/カタカナ/漢字/記号がそれぞれ連続するテキスト=単語 と認識する(文法上の単語ではない)
基本的に、ブログ記事などの長い文章を書く場合にはとても役立つ動作だと思います。
漢字の送り仮名を判定できないのは致命的ですが、日本語ワープロソフトではないので、仕方がないかもしれませんね。惜しい。
このVimコマンドの補足情報
- 利用頻度
- 便利さ
- 覚え易さ
関連するVimヘルプ
Vimのヘルプでは、それぞれ次のように記載されています。
cw cW
change – Vim日本語ドキュメント
特別な場合: “cw” と “cW” は、カーソルが単語の上にあるとき、単語のあとにつづく
空白を含めず、単語の末尾までを変更する(“ce” と “cE” と同じ働きをする)。これは
Vimが “cw” を単語の変更(change-word)として解釈し、また「単語」にはあとに続く空
白は含まれないからである。 {Vi: あとに空白が続く空白上での “cw” は、最初の空白
のみを変更する。これは多分バグである。”dw” は全ての空白を削除するからだ。とに
かく、Vi風に動作させるときには ‘cpoptions’ にフラグ ‘w’ を含めること}
“cw” の変更範囲に単語の後の空白も含めたいときは、次のマップを使うこと。
:map cw dwiまたは “caw” を使う(aw を参照)。
:c:ch:change
:{range}c[hange][!] テキストを行単位で別のテキストと置き換える。
“.” のみを含む行を打ち込むことで置換を終了する。
{range} なしの場合、現在行のみを変更する。
[!]をつけると、このコマンドを実行するときだけ
‘autoindent’ をトグルする。
dw カーソル位置から次の単語の先頭までを削除
usr_04 – Vim日本語ドキュメント
Vim上でも、下記のコマンドでヘルプを確認できます。
:help cw :help cW
ヘルプで検索するときは、通常は大文字小文字は識別されませんので、どちらでも構いません。
Vimレベルがアップする情報源
Vimmerなら皆一度は読んでいバイブルたちです。貴方は読みましたか?
Vim/neovim関連の書籍で、もっとも評判が良くてバイブルと呼んでる人もいる一冊です。Vim/neovimのバージョンに依存しない沢山のTips形式で、その表題通りに「思考のスピードで編集」できるようになるノウハウが詰まっています。その高い評価は Amazon のレビューからも分かる通りです。Vimmer なら必ず一度は読んでおいて間違いありません。
こちらもVim関連の書籍で評価が高い書籍の一冊です。vim-jpで見かける上級Vimmer(Vimサポーターズ)の皆様による、Vimを実践で使ったノウハウからプラグイン関連の情報が詰まっています。日本の Vim界隈を知る上でも是非一読しておきたい一冊です。
Vim/neovim の設定ファイルやプラグインなど、Vim script に関するノウハウがいくつも詰まった一冊です。日本で Vim Script をここまで深く解説している唯一の書籍と言えます。Vim力を伸ばしたいと考えるなら、絶対に避けては通れない書籍でしょう。