まくまくVimノート
ex コマンドの行範囲指定方法いろいろ
2007-01-30

行範囲指定の基本

ex コマンドは、: から始めるコマンドのことで、各コマンドの最初にはコマンドをどの行に対して実行するかを示す、行範囲を指定することができます。

:行範囲 コマンド

行範囲を省略した場合は、コマンドはカレント行にだけ影響を及ぼします。 行範囲に .(ドット)を指定した場合も、同様にカレント行に対してだけ実行されます。

例: カレント行を削除

:d

例: 123 行目を削除

:123 d

例: 10 行目から 20 行目をソート

:10,20 sort

行範囲指定の例

行番号ベースで指定する方法

:. <command>     " カレント行に対して command を実行(省略した場合と同様)
:3 <command>     " 3 行目に対して command を実行
:3,5 <command>   " 3 行目から 5 行目まで
:3,$ <command>   " 3 行目から最後の行まで

:%      " すべての行(:1,$ と同じ)
:.,5    " カレント行から 5 行目まで
:.;+5   " カレント行から 5 行下の行まで

パターンに一致する文字列を含む行を検索して行指定する方法

:/pattern/       " pattern を含む行(1 行のみ)
:/pattern/+1     " pattern を含む行の 1 行下の行(1 行のみ)
:/pattern/;+4    " pattern を含む行から 4 行下の行まで
:g/pattern/      " pattern を含むすべての行

:/pat1/,/pat2/   " pat1 を含む行から pat2 を含む行まで(最初に見つかった部分のみ)
:/pat1/,/pat2/g  " pat1 を含む行から pat2 を含む行まで(見つかった範囲すべて)

例: TODO というテキストを含む行をすべて削除

:g/TODO/ d

範囲指定を連続して記述すると AND 条件で絞り込むことができます。

例: 1 行目から 10 行目までで ABC で始まる行をすべて削除

:1,10 g/^ABC/ d
2007-01-30