7

ファイル内で検索したいテキスト ブロックがあるとします。そのテキストのビジュアル ブロック選択を行い、それを現在の検索語にする方法はありますか? そうすれば、代替コマンドの左側にすべてを入力せずに s//replacementText/g を実行できます。

4

2 に答える 2

4

ビジュアル ブロックを作成し、それを名前のないレジスタにヤンクします。""ビジュアル ブロックを選択した状態で、タイプyしてヤンクします。検索を/- またはで開始し、次に:s/入力して、名前のないレジスタの内容を検索語として挿入します。Ctrl-r"

これでブロックが現在の検索になるわけではありませんが、ほぼ同じくらい簡単です。

Ctrl-rコマンドラインのどこでも使用できるため、これを使用して、たとえば置換または置換テキストを入力したり、挿入モードで使用したりすることもできます。

于 2012-09-08T13:42:22.280 に答える
3

あなたは私を許さなければならないでしょう、私はこれをどこで見つけたか思い出せません、しかしそれは不思議に働きます。に追加するだけ.vimrcです。典型的なものを使用*し、#視覚的に選択した後:

" Search for selected text, forwards or backwards.
vnoremap <silent> * :<C-U>
  \let old_reg=getreg('"')<Bar>let old_regtype=getregtype('"')<CR>
  \gvy/<C-R><C-R>=substitute(
  \escape(@", '/\.*$^~['), '\_s\+', '\\_s\\+', 'g')<CR><CR>
  \gV:call setreg('"', old_reg, old_regtype)<CR>
vnoremap <silent> # :<C-U>
  \let old_reg=getreg('"')<Bar>let old_regtype=getregtype('"')<CR>
  \gvy?<C-R><C-R>=substitute(
  \escape(@", '?\.*$^~['), '\_s\+', '\\_s\\+', 'g')<CR><CR>
  \gV:call setreg('"', old_reg, old_regtype)<CR>

ここでの本当の利点は、検索コマンドに貼り付けるだけでなく、特別な文字をエスケープできることです。また、キーストロークが少なくなり、タスクの活気が最大になります。

于 2012-09-08T13:47:10.347 に答える