← Vim研究所

Vimの単語移動8種類 w/b/e/geとW/B/E/gEの違い

2019-05-24 公開 ・ 更新: 2026-08-20

vim-config.jsonのような記号混じりの文字列でwを押したら、思ったより手前で止まってしまいました。単語の区切り方には2つの流儀があり、これを知らないと単語移動が思い通りに動きません。

目次(10項目)
キーこれだけ覚える
w次の単語の先頭へ
b前の単語の先頭へ戻る
e / ge単語末尾へ進む / 戻る
W / B / E / gE大文字版:空白でしか区切らない

基本の4つ

キー動作
w次の単語の先頭へ進む
b前の単語の先頭へ戻る
e今の(または次の)単語の末尾へ進む
ge前の単語の末尾へ戻る

先頭/末尾×進む/戻るの組み合わせで4種類になります。geだけ見慣れない形ですが、「go end backward」のイメージで覚えると分かりやすいです。

大文字版:記号を無視する4つ

キー動作
W次の単語(記号無視)の先頭へ進む
B前の単語(記号無視)の先頭へ戻る
E今の(または次の)単語(記号無視)の末尾へ進む
gE前の単語(記号無視)の末尾へ戻る

ここが最初の疑問に対する答えになります。小文字のwvim-config.jsonvim-config.jsonのように記号ごとに区切って移動するのに対し、大文字のWは空白でしか区切らず、vim-config.json全体を1つの単語として一気に飛び越えます。

BEFORE
vim-config.json
^ カーソル
w
AFTER
vim-config.json
   ^ カーソル

wを1回押しただけで、記号1文字の-自体が独立した単語として扱われてカーソルが止まります。

アンダースコアだけは例外

-.のような記号は区切りになりますが、_(アンダースコア)だけは例外でキーワード文字の一部とみなされ、区切りになりません。snake_caseのような命名ではwを押しても止まらず一気に飛び越えます。

文字単語の区切りになるか
_(アンダースコア)ならない('iskeyword'に含まれる)
- . ( ) など記号全般なる(1文字ごとに単語として区切られる)
Vimでapp.jsを開き、4行目でwを5回押したあとの画面。カーソルはconfig.hostの直後のプラス記号にあり、ステータス行の右端に4,32と桁位置が出ている
Vim 9.1.1752。4行目の行頭から w を5回押したところ。記号のかたまりでも1回止まるので、5回で + まで進む

ビジュアルモードでも同じキーが使える

ここまで紹介したキーはすべてビジュアルモードでも同じ意味で動きます。v3wのように選択範囲を単語単位で広げていくこともできるので、単語の切れ目を目で確認しながら選択したいときに便利です。ノーマルモードでオペレータと組み合わせるか、ビジュアルモードで範囲を目視してから操作するかは、状況に応じて使い分けて構いません。

使い分けの目安

場面使うキー
ハイフンやドット区切りの一部だけを細かく操作したい小文字(w/b/e
URLやファイルパスを記号ごと一気に飛ばしたい大文字(W/B/E

コードを書くときは小文字を多用し、自然文やログの中を大きく移動したいときは大文字に切り替える、という使い分けが実用的です。

要点:小文字は記号も区切りとして認識します(ただし_は例外)。大文字は空白だけで区切ります。プログラミング中の細かい移動は小文字、記号混じりの塊をまとめて飛ばしたいときは大文字を使うと動きが直感に合います。
使ってみて

ケバブケースのCSSクラス名を編集しているとき、wだとハイフンの位置でいちいち止まってしまい思ったより移動が細かすぎると感じたことがあります。大文字のWに切り替えたら一気に飛び越えられて、場面によって使い分ける意味がようやく体感できました。逆にスネークケースの変数名はwで止まらず素通りしてしまい、最初は「区切ってくれない」と戸惑ったことも覚えています。今ではコードを書くときは小文字、Markdownやログを読むときは大文字、と無意識に切り替えられるようになりました。

オペレータと組み合わせる

dw    " 次の単語の頭まで削除
d3w   " 3単語分まとめて削除
cW    " 記号込みの単語を変更

単語移動はそれ単体で使うより、dcのようなオペレータと組み合わせて初めて真価を発揮します。移動の感覚が身についたら、次はオペレータとの組み合わせに慣れていくと上達が早いです。

cw だけが例外的な動きをする

単語移動をオペレータと組み合わせるとき、cw だけが例外です。dw が次の単語の先頭まで(後ろの空白まで)消すのに対し、cw は単語の末尾までしか消しません。つまり ce と同じ動きになります。

単語を差し替えるときに後ろの空白まで消えると、打ち終わったあとに空白を入れ直すことになります。実際の使われ方に合わせた特例で、Vimの中でも珍しい種類の例外です。

dw    " 次の単語の先頭まで(空白ごと消える)
cw    " 単語の末尾まで(= ce、空白は残る)

もう1つの例外として、行の最後の単語で dw を押しても次の行までは消えません。改行を巻き込まないようにVimが範囲を切り詰めています。

日本語の文章では細かく止まる

日本語には空白が無いのに w が何度も止まります。Vimがひらがな・カタカナ・漢字・英数字を別の種類として扱い、種類が切り替わるところを境目と見なすためです。

「Vimの練習をする」なら Vim練習をする のあたりで止まります。文節とは一致しないので、日本語の文章では単語移動より f や検索のほうが当てになります。単語移動が主役になるのはコードを触っているときです。

大文字版を使うのはパスと識別子

W B E が効くのは、記号を含むひとかたまりを1単位で扱いたいときです。ファイルパス、URL、user.profile.name のようなドット区切りの識別子、--option=value のようなコマンドライン引数が典型的な例になります。

逆に、識別子の一部だけを直したい場面では小文字が向きます。user.namename だけを書き換えるなら w で刻んで進むほうが目的に合います。どちらを使うかは「いま扱いたいかたまりの大きさ」で決めてください。1文字単位まで詰めたいときはf と tを組み合わせます。

まとめ

単語移動は記号の扱い方が小文字と大文字で違うだけで、覚える形自体は同じパターンの繰り返しです。1文字単位の移動をあわせて使いたい場合はf/Fによる文字検索移動も参照してください。ここで覚えたweは、そのままオペレータと組み合わせるときの範囲指定にも使えます。

ここで扱ったキーは、ブラウザ上で動くVim道場の単語単位に移動するでそのまま試せます。インストールもログインも要りません。

関連記事

← Vim研究所 トップへ戻る