web-dev-qa-db-ja.com

VIM:特定の行番号の間でのみ検索しますか?

Vimの置換コマンドを使用すると、特定の範囲の行を指定できることがわかります。

:12,24s/search/replace

通常の検索でも範囲を指定できるようにしたい。何かのようなもの

:12,24/search

(少なくとも私のVim設定では)これは機能していないようですので、これを達成する方法を誰かが知っていますか?

ありがとうございました。

42
Thomas
:help search-range

その後

:help /\%>l

本質的に:

/\%>12l\%<24lsearch
34
akira

あきらさんからの素晴らしい回答。しかし、少し掘り下げた後、代替案を見つけました。エレガントではありませんが、簡単に入力できます。

 :12,24g/search/

これにより、迷惑なプロンプトが1つ表示されますが、目的の文字列を含む範囲内の最初の行に表示されます。

38
Carl Smotricz

本当に行番号が必要ですか?別の方法は、範囲を視覚的に選択することです。

  1. v、Vなどを使用して範囲を選択します
  2. escキーを押して範囲の選択を解除します
  3. 以前に選択した範囲で「what_to_search」を検索するには、/\%Vwhat_to_searchを使用して検索します。

これはタイプするのは簡単ですが、あなたが要求したものを直接ではありません;-)

:help%Vを参照してください

[編集]すばらしい、別の範囲を選択して検索を行った後、検索範囲を変更できることを学びました。ESCを押してnを押し、この範囲を再度選択して検索を繰り返すと、範囲を選択解除できます。 Vimはいつも楽しいサプライズに最適です。

21
Habi

置換コマンドを引き続き使用しますが、元の例にgcフラグを追加します。

:12,24s/search//gc

:help search-rangeから

[範囲内を検索するには] ":substitute"コマンドに 'c'フラグを付けて使用します。

例::.,300s/Pattern//gc

このコマンドは、カーソル位置から300行目までの「パターン」を検索します。試合で「q」と入力して停止するか、「n」と入力して次の試合を検索できます。

17
michaelmichael

マークにaとbがある場合、検索はaとbの間の領域に制限できます。

/\%>'a\%<'bSearchText

これはcmapで簡略化できます

cmap vmsab /\%>'a\%<'b
cmap vmscd /\%>'c\%<'d
4
shankar

Narrow Region plugin を使用して、検索または変更する必要がある範囲で一時バッファーを開くことができます

:900,1000NarrowRegion

次に、検索を行うことができます

/thing

または変更してバッファを書き戻します

:%s/this/that/g
:wq
0
SergioAraujo

ファイルの最後まで検索する場合は、$を使用します。

:3,$s/pattern//gn

3次元の行から最後まで検索します

0
GGGuser