Vimで選択したテキストを検索する方法は?


61

/正規表現を使用して何かを検索できることを知っています。そして、?後方検索に使用できます。また、とを使用nNて、検索を前後に繰り返すことができます。

また、2つの便利なショートカットがあります:*または#、カーソルの下の単語を検索します(前方/後方)。それはとても便利です!(またg*g#バリアントがあります)

しかし... ビジュアルモード(v)を使用してテキストを選択したら、そのテキストを正確に検索するようにVimに依頼するにはどうすればよいですか?ざっと見て:helpも…ハァ…助けてくれ。



ヒントをありがとう *#!あなたの質問も何g*を説明し、何をg#するのでしょうか?)
winklerrr

回答:


22

次のシーケンスは、既に選択されているテキストブロックを指定すると、必要な処理を実行します。

  • y(選択したテキスト"をデフォルトでレジスタにヤンクします)
  • / (検索モードに入る)
  • \ V)(オプション、「マジックなし」モードを入力*)
  • Ctrl+ r ""登録簿からテキストを挿入)
  • Enter (エンゲージ!)

(*)「非常に魔法のない」モードは、次のテキストを正規表現としてではなくプレーンテキストとして解釈します。ただし、\/はまだ特別であり、他の方法で処理する必要があることに注意してください。テキストに特殊と見なされる文字が含まれていない場合は、この手順をスキップできます。

ソース:Vim Tips Wiki


1
ありがとうございました!これは、vim.wikiaページの「How-To」よりもはるかに理解しやすい
-winklerrr

64

最初に強調表示されたテキストをヤンクできます。それから

  • /

  • Ctrlr

  • "

あなたがヤンクしたものをペーストします/


7
良いアイデア...貼り付けられたテキストが正規表現として解釈されることを除いて、これは望ましくありません。:-(
デニルソンサマイア

4
これで十分であれば、/\V<C-r>"代わりに行うことができます。\V検索クエリの先頭に追加することにより、vimに「非常に魔法のない」を使用するように指示します。バックスラッシュは依然として問題を引き起こす可能性があります。参照:help \V
idbrii

3
それがCtrl+Rレジスタにアクセスする方法であり、*単にシステムのクリップボードレジスタであると説明するのに役立つかもしれません。たとえば、次の操作も実行できます。yaw単語をレジスタ"(既定のレジスタ)にヤンクして/<C-r>"から、その文字列を検索します。
ベンデイビス

5
@DenilsonSá-このソリューションを使用できますが、逆検索ではデフォルトでスラッシュがエスケープされるため、/検索の代わりに使用してください ?。次に、ヒットNして前方に検索を続けることができます。
ブラッドパークス

7

私はそのような機能の必要性を感じたことはありませんが、Vimの機能の必要性を見つけることができることを考えると、私はそれが助けになると思います:

視覚的に選択されたテキストを検索する

私はテストしませんでしたが、コードを見ると、まさにあなたが探しているもののようです。



1

このソリューションは、複数行やエスケープ文字を使用しても、vim検索で視覚的に選択されたコンテキストを強化します。

次のコードを追加して.vimrc、視覚的に選択したコンテンツをで検索します//。選択したコンテンツをでグローバルに置換することもでき/sます。または、選択したコンテキストを//最初にローカルで置換し、次に地域を視覚的に選択し、を選択します:'<,'>s//{new_text}

set incsearch
set hlsearch
set ignorecase
function GetVisualSelection()
  let raw_search = @"
  let @/=substitute(escape(raw_search, '\/.*$^~[]'), "\n", '\\n', "g")
endfunction
xnoremap // ""y:call GetVisualSelection()<bar>:set hls<cr>
if has('nvim')
  set inccommand=nosplit
  xnoremap /s ""y:call GetVisualSelection()<cr><bar>:%s/
else
  xnoremap /s ""y:call GetVisualSelection()<cr><bar>:%s//
endif

上記の構成は、検索に関するものです。すべてのvim設定については、.vimrcにアクセスしてください。


0

2台の別々のマシンでの構成で、テキストを選択してヒット/すると、選択したテキストが自動的に検索されます。


これはデフォルトの動作ではありません。ここでは、(ビジュアルモードで)/を押すと、空の正規表現プロンプトが表示され、何か入力するのを待っています。
デニルソンサマイア

奇数、私はそれを有効にするために何もしなかったため。
ネイサンフェルマン

3
多くのディストリビューションでは、非標準のvim構成がデフォルトとして出荷されています(おそらく、標準のvim構成では、主にviの互換性のために多くの便利な機能が無効になっているためです)。
-sleske
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.