Vim:テキストを効率的に検索するにはどうすればよいですか?


30

vimでテキストを検索するときはいつでも、入力してから探して/いる文字列を入力します。

しかし、文字列が長い場合、これを複数回実行したい場合、複数回入力する必要がないようにする方法はあり/andthisreallylongstringますか?


12
VimチートシートまたはVimのヒントを簡単に確認することをお勧めします。vimをさらに活用する方法は他にもたくさんあります。
RedGrittyBrick

ヒント:Linuxには、使用するために何週間も勉強する必要のないテキストエディターがあります。
BlueRaja-ダニーPflughoeft

4
@BlueRaja:これがエディター戦争に適した場所かどうかはわかりません。また、WindowsまたはMac OS用の便利で使いやすいテキストエディタもあるため、OS戦争にも対応できます。エディターで効率を上げる方法を勉強しなければならないので、基本的な機能にこだわるよりも、おそらく最終的に効率が上がるでしょう。
ブノワ

回答:


61

検索が完了したら「n」を押すと、前のアクション(検索)が繰り返されます。


12
また、N前の結果に移動します。
ジン

15
また、打った後上向きの矢印を押すと、/最後の検索用語を思い出します
bastibe

6
またq/、すべての最近の検索語を含む編集可能なウィンドウが表示されます。
UncleZeiv

7
また、/Enterキーを押すと、前の検索が繰り返されます。叩く?と前回の検索後方を繰り返すことになります入力します。
アンディレスター

3
/Ctrl-Fそれに代わるq/ものは、より簡単なニーモニックかもしれません(ctrl-f == find)。qと同様に、コマンドモードでも機能します。
idbrii


19

私が通常検索する方法は次のようなものです。

  1. 押す '/'
  2. 検索語を入力
  3. Enterを押す
  4. 「n」と「N」を使用して、検索内を前後に移動します。

Vimは検索の履歴を保持するため、以前の検索が必要な場合は、「/」を押して、上下キーまたは<Ctrl-P> <Ctrl-N>を使用して検索履歴を参照できます。

「?」も使用できます 「/」の代わりに逆方向に検索します。

私も使用したい:

set ignorecase smartcase

検索文字列に大文字が含まれている場合、大文字と小文字を区別する検索のみになります。


15

あなたの検索をより効率的にできる2つの追加のヒントがあるset hlsearchset incsearch

  • set hlsearch、まあ、検索結果を強調表示します。:noh不要になったら入力してオフにします。

  • set incsearch インクリメンタル検索をオンにします。

    から抽出 :help incsearch

    検索コマンドの入力中に、これまでに入力したパターンが一致する場所を表示します。一致した文字列が強調表示されます。パターンが無効であるか見つからない場合、何も表示されません。画面は頻繁に更新されますが、これは高速端末でのみ役立ちます。

    を使用しないincsearch場合、<CR>検索キーワードを押した後にのみ結果が表示されます。

    例:

    検索したい wildignore

    ここに画像の説明を入力してください

    入力する/wildと、最初の一致が自動的に強調表示されます。

    ここに画像の説明を入力してください

    次に入力するiと、次の正しい一致に進みます。

    ここに画像の説明を入力してください


13

まだ説明されていない別のヒント:文字qを押してからを押すと、/以前の検索語のリストが表示されます。ドキュメント内の他の行と同様に編集し、Enterキーを押して新しい検索に再利用できます。


3
これを探していました。これは重要な注意事項であり、非常に話題です。
シンコデナダ

8

を押し/て検索を開始した後、上矢印キーを使用して検索履歴をスクロールできます。

正規表現を入力すると、検索語全体を入力する必要がなくなります。 and.*longstring


7

次の引数なしで/を押すだけではうまくいきませんか?すべてのシステムで、最後に実行された検索が繰り返されます。


6

ヤンクされたテキスト検索するために従うことができる素敵なパターンがあります。その後、検索以外の方法でナビゲートした場合、単語を入力する必要さえありません。要約すると、検索する単語の最初の文字にいる場合:

v
e
y
/
Ctrl-r
0
Enter

(その後、nまたはNで次の一致を続行します)

ただし*(または#)は、これらすべてのコマンドとほぼ同じことを実現します。唯一の違いは、指定する単語の量によって柔軟にできることです(eではなく、単語の最後まで、必要なだけ選択できます(9lなど))



1

プログラミングするときには多くの時間を検索したいと思いますaVeryLongVariableNameInTheProgram

vimでは、テキストをバッファ/レジスタに簡単にヤンクしてから検索できます。

  • 単語の最初の文字にカーソルを置きます
  • "BywテキストaVeryLongVariableNameInTheProgramをバッファB にヤンクするには(お気に入りを選択し、Bを使用しました)
  • /^RB (スラッシュ、Ctrl-R、B)検索バッファにバッファーBを貼り付ける

もちろん、単一の単語をヤンクする代わりに、行の終わりなどにヤンクすることもできます-私はたまたま上記のシーケンスを使用しています。


1

さらに、Ctrl+ Rを押してからレジスタの名前(例:/ Ctrl+ R0)を押すと、レジスタの内容を検索プロンプトに貼り付けることができますEnter


一言。
dotancohen

0

変数名を入力している長い文字列ですか?または、テキストに含まれる長い文字列ですか?次に、ヒット*してカーソルの下の単語/文字列を検索します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.