Vimで「次を検索」


536

Vimでを前方検索するにはcake、と入力/cakeしますが、returnキーを押すと、カーソルが最初の一致にジャンプします。「次を検索」に類似したVimコマンドはありますか?


33
に慣れる:help:help /検索に関するヘルプが表示され、質問への回答がページの少し下に表示されます。
Chris Morgan

回答:


877

それはn次とN前のためです。

また、の代わりに?(たとえば?cake)を使用して逆検索を使用すると、その逆になります/

システムにインストールされている場合はvimtutor、端末からコマンドを実行して、基本的なVimコマンドのチュートリアルを開始する必要があります。

ロブ・ウェルズのアドバイスについて*#も非常に適切です。


1
インデックス検索プラグインvim.org/scripts/script.php?script_id=1682
SergioAraujo

(現在の行ではなく)次の一致にジャンプする方法はありますか?
user13107 14

@ user13107:nとNは、バッファ/ファイル全体で機能します。現在の行に限定されません。
ザビエルT.

@XavierT。任意のアイデア、検索で一定数の結果をジャンプする方法。たとえば、10番目の一致する行にジャンプします
GPサイボーグ

@GPcyborg:nほとんどのvimオペレーターのように、コマンドを繰り返すために番号を前に付けることができます。入力10nすると、最初の結果の10番目の結果に移動します。また、3j3行下がるようなすべてのモーションオペレーターでも機能します。
ザビエルT.

210

Vimで最も便利なショートカットはIMHO *です。

カーソルを単語の上に置いて*キーを押すと、その単語の次のインスタンスにジャンプします。

#キーは同じことを行いますが、それは言葉の前のインスタンスにジャンプします。

本当に時間の節約になります。


6
そして、それが明白ではない場合に備えて、nを押したらN*試合を前後に進めます*。(それとも単に押し続けることができ*前進するか、#後方に行くことが、これらのシフト・キーを使用することは一般的に、最適である。)
ハーバート半身

3
@ハーバート、実際にはnとNは、「前方」と「後方」の応答を取りません。@Xavierが前述したように、nは次で、Nはです。前方検索と後方検索の制御は、「/」キーと「?」のどちらかで検索を示すことによって行われます。キー、または「*」キーと「#」キー。
ロブ・ウェルズ

*はそんなに便利だとは思いません...ほとんどの場合、単語の断片(たとえば、関数名の一部)を検索しています。私はしたくない/Func、それが私を取る持っているSomeFuncの次のインスタンスに移動するには「*」、その後、プレスSomeFuncの次のインスタンスがときFuncにありますSomeOtherFunc
weberc2 2013

さらに悪いことに、C ++では、/\<foo\>一致しないため、メソッドの呼び出しからメソッドの実装に移行しないことがわかります"className::foo()"
puk

84

私が始めていたとき、私はデモなければなりませんでした。

Vimで検索する方法

  1. タイプ /
  2. 検索語を入力します(例: "var")
  3. 押す enter
  4. 以下のための次のインスタンスプレスn(のための前の N

2
入力*が正しくありません。すなわちファイルaa aaa。検索/aa、一致する必要があります。最初の一致でを押すと*、検索語が変わります。
Bernhard

1
nは「次の」ではなく、「最後の検索を繰り返す」です。したがって、?varと入力すると、現在の位置から「var」の上方検索が開始されます。そして、「N」は実際には「反対方向に最後の検索を繰り返す」ので、この例では、現在の位置から「var」を下向きに検索します。
Rob Wells



13

説明したように、検索にはいくつかの方法があります。

/pattern
?pattern
* (and g*, which I sometimes use in macros)
# (and g#)

さらに、およびでprev / nextをナビゲートNnます。

/で検索プロンプトを表示し/C-p/で循環させることで、検索履歴を編集/呼び出すこともできますC-n。さらに便利なのはq/、検索履歴をナビゲートできるウィンドウに移動することです。

また、考慮すべき点はすべて重要です'hlsearch':hls有効にするタイプ)。これにより、パターンの複数のインスタンスを見つけやすくなります。次のようなものを使用して、マッチをさらに明るくすることもできます。

hi Search ctermfg=yellow ctermbg=red guifg=...

しかし、画面全体で黄色の色が一定していることに夢中になる可能性があります。したがって、を使用することがよくあります:noh。これは非常に一般的であるため、マッピングが適切です。

nmap <leader>z :noh<CR>

私は強調表示をクリアzするために常にタイプする/zz<CR>(タイプするのは珍しいことです)ので、いつもこれを覚えています。しかし、:nohマッピングははるかに優れています。


2
に触発されているq/場合は、で遊ぶこともできますq:。どちらも本当に便利です!(ただし、この質問には実際には関連していません。)
Micah Elliott

ありがとう、ミカ。「q:」についてはすでに知っていましたが、あまり使用していません。しかし、私のvim教育では「q /」が完全に欠落しており、私は多くの利用が得られると思います。
Stabledog、2015

2

押すとCtrl+ Enterあなたは「/ wordforsearch」のようなものを押した後、あなたは現在の行に単語「wordforsearch」を見つけることができます。次に、を押しnて次の試合に進みます。N前の試合を押してください。


1
「検索を実行すると、Vimは現在のカーソル位置から前方にスキャンし、見つかった最初の一致で停止します。」実用的なVimが指摘するように。
ベースチャック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.