40
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

vimの範囲を使いこなす

Last updated at Posted at 2014-11-17

vimのコマンドには適用する範囲を指定出来るものがあります。
たとえば:%s/hoge/fuga/g%の部分が範囲指定になります。

基本

文字 意味
% バッファ全体
n n行目
n,m n行目からm行目まで
.,m 現在カーソルがある行からm行目まで
.,$ 現在カーソルがある行から最終行まで
.+3,$-5 現在カーソルがある行+3行目から最終行-5行目まで
'a,'b マーク'aがある行からマーク'bがある行まで
'<,'> ビジュアル選択されている行

ビジュアル選択の開始位置はマーク'<、終了位置は'>で参照出来るので
結果として'<,'>でビジュアル選択している行を示すことになります。
(ただし、ビジュアル選択されている「範囲」ではなく「行」であることに注意)

パターンマッチ

/?で検索したときのように、範囲にもパターンを使用することが出来ます。

文字 意味
/hoge/,/fuga/ 「現在のカーソル位置」から最初に/hogeがマッチした行から、「現在のカーソル位置」から最初に/fugaがマッチした行まで
/hoge/,?fuga? 「現在のカーソル位置」から最初に/hogeがマッチした行から、「現在のカーソル位置」から最初に?fugaがマッチした行まで
/hoge/;/fuga/ 「現在のカーソル位置」から最初に/hogeがマッチした行から、「/hogeがマッチした行」から最初に/fugaがマッチした行まで
/hoge/;+3 「現在のカーソル位置」から最初に/hogeがマッチした行から3行
/hoge/+1,$ オフセットや他との組み合わせも使える

/?の違いは通常と同じで順方向に検索するか逆方向に検索するかです。
区切りの,;の違いは、終了位置をパターン指定する際(表でいう/fuga等)の検索基準位置の違いです。
,は現在のカーソル位置から検索するのに対し、;は前にマッチした行から検索を始めます。

細かい話

以下のヘルプに詳しく載ってます。
:help 10.3
:help cmdline-range

40
36
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?