🦔

Vim再入門_期待する位置にカーソルを飛ばす(行内編)

2024/12/24に公開

Vimをすこし学べば、行内の移動はできます。ただしそれは「とりあえずwbを何度か押して、あとはhlで調整してたどり着く」ケースがほとんどでした。

この記事では、Vimを使いこなすため、より正確に自分が期待する箇所にカーソルを飛ばすコマンドを整理してみます。

前提となる知識

  • hjkl: カーソルを上下左右に動かす
  • w: 次の単語の先頭に移動
    • b: 前の単語の先頭に移動
  • f<char>: 現在のカーソル位置より右側にある<char>へ移動
    • ;: 直前のf(または後述のt)を繰り返す
    • ,: 直前のf(または後述のt)を逆方向へ繰り返す
  • F<char>: 現在のカーソル位置より左側にある<char>へ移動

単語移動のボキャブラリーを増やす

eで、現在の単語の末尾に移動できます。whの複合技のような感じで、「いったん飛んでからよく戻っている」という場合は、eで一発移動できるようにしておきたいです。

空白区切りを考慮する

w,b,eはそれぞれW,B,Eのパターンがあります。これはそれぞれ空白区切りを考慮した単語移動になります。

指定文字の直前へ移動する

t<char>は、wに対するeのような感じで、f<char>+jつまり指定文字の"直前"に移動することができます。
なお逆方向へ移動するT<char>もあります。

実行例

以下のコードを使って具体例を示します。

printf("Hello, World!");

1. 単語の末尾に移動 (e)

  • 現在位置: printf("Hello, World!");
  • 結果: printf("Hello, World!");

2. 空白区切りで次の単語に移動 (W)

現在位置: printf("Hello, World!");
結果: printf("Hello, World!");

3. 指定文字の直前に移動 (t<char>)

t!を実行したとき

現在位置: printf("Hello, World!");
結果: printf("Hello, World!");

Discussion