← Vim道場

行の中の文字を狙って飛ぶ

行の中の「あのカッコ」「あのカンマ」まで、l を何回も押さずに一発で飛ぶキーです。探す文字を自分で指定するので、行が長いほど効きます。

第1章 まず動かすレッスン 5 / 36

f と t の使い分け

止まる位置が1文字ずれるだけに見えますが、削除や書き換えと組み合わせると意味がはっきり分かれます。foo(bar)foo の先頭にいるとき、df) は閉じカッコまで消して foo が残らないのに対し、dt) はカッコを残して中身だけ消します。

「その文字も含めて」なら f、「その文字の手前まで」なら t と覚えると、あとで組み合わせるときに迷いません。

同じ文字が複数あるとき

探した文字が行の中に何度も出てくる場合、f は最初の1つで止まります。もう1つ先へ進みたいときは ;(同じ向きに繰り返す)、行き過ぎたら ,(逆向きに繰り返す)を使います。

数を指定することもできて、3fx なら3つ目の x です。ただし数えるより ; を連打したほうが速い場面が多いので、まずは ; を覚えておけば足ります。

f は行をまたがない

f t F T が探すのは、カーソルがいる行の中だけです。行内に目的の文字が無ければカーソルは動きません。次の行に同じ文字があっても飛んでいかないので、押した結果が変わらないときは行を間違えていないか確かめてください。

行をまたいで探したいときは、第5章で扱う検索の / を使います。1行の中を狙うのが f、ファイル全体を狙うのが / という住み分けです。

t を打ち直しても進まない

t) の手前まで来た状態から、もう一度 t ) と打ってもカーソルは動きません。すでに「) の直前」という条件を満たしているためです。同じ向きの次へ進みたいときは ; を使います。; なら手前で止まらず、次の ) の手前まで飛びます。

この違いは cpoptions; というフラグで決まっていて、既定では含まれていないため ; が飛び越える側の動きになります。この練習ページのエディタも既定に合わせてあります。

探した文字は削除・書き換えの範囲になる

f t が本領を発揮するのは、単独の移動ではなく削除や書き換えと組み合わせたときです。カンマ区切りの引数を1つ消すなら df,、クォートの中身だけ書き換えるなら ct" というように、行の中の「ここからここまで」を1回で指定できます。

どの文字を目印にするかを決めるのがコツで、カッコ・クォート・カンマ・セミコロンのように行の中で数が少なく目立つ記号を狙うと外しません。逆に ea のような頻出する文字を目印にすると、; を何度も押すことになって手数が増えます。

このレッスンで扱うキー

キー動き
f右へ探して、その文字へ
t右へ探して、その手前へ
F左へ探して、その文字へ
T左へ探して、その次へ
;同じ探し方をもう一度
,同じ探し方を逆向きに

関連記事

レッスン一覧へ戻るキーの逆引き一覧検定を受ける