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