🦔
Vim再入門_期待する位置にカーソルを飛ばす(行内編)
Vimをすこし学べば、行内の移動はできます。ただしそれは「とりあえずwかbを何度か押して、あとはhやlで調整してたどり着く」ケースがほとんどでした。
この記事では、Vimを使いこなすため、より正確に自分が期待する箇所にカーソルを飛ばすコマンドを整理してみます。
前提となる知識
-
hjkl: カーソルを上下左右に動かす -
w: 次の単語の先頭に移動-
b: 前の単語の先頭に移動
-
-
f<char>: 現在のカーソル位置より右側にある<char>へ移動-
;: 直前のf(または後述のt)を繰り返す -
,: 直前のf(または後述のt)を逆方向へ繰り返す
-
-
F<char>: 現在のカーソル位置より左側にある<char>へ移動
単語移動のボキャブラリーを増やす
eで、現在の単語の末尾に移動できます。wとhの複合技のような感じで、「いったん飛んでからよく戻っている」という場合は、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