2017/03/11 5:08 pm
Specifying an offset
Uncategorized, , ,

/ および ? コマンドには、デリミタに続けてオフセットを付加することができる。オフセットには符号を先行させてもよい。つまり

/foo/+
/foo/1
/foo/+1

はいずれも、カーソル行以降の foo を検索し、その次の行にカーソルを移動させる。同様に

?foo?-
?foo?-1

はカーソル行より前の foo を検索し、その前の行にカーソルを移動させる。

オフセットを付加したとき、モーションは行志向であるとみなされる。ところでこのオフセット機能は POSIX で定義されているものなのだが、オフセットを付加した時の桁位置はどうなるのかというとなぜか記述されていない。大抵の場合、行志向のモーションはカーソルをその行の最初の非空白文字に置くので、そうした。vim もそうなっている。

ちなみに POSIX ではデリミタ以降にオフセットではない余計なものがついてたらエラーにしなさいとか、オフセットを計算した後の行位置がバッファの先頭行や最終行を超えていたらエラーにしなさいとか、オフセットの他に z コマンドも有効としなさいとか言っているのだが、その辺は実装していない。vim も実装していない(たぶん)。

コメントを残す

アーカイブ