Vimで検索した後、すべての出現箇所が強調表示されます。無効にするにはどうすればよいですか。私は今見つけることができないちんぷんかんでもしい何かのための別の検索をします。
ハイライトを一時的に無効にしてから、必要に応じて再度有効にする方法はありますか?
次の検索までハイライト表示をオフにするには:
:noh
または強調表示を完全にオフにします。
set nohlsearch
または、それを切り替えるには:
set hlsearch!
nnoremap <F3> :set hlsearch!<CR>
最後に使用した検索パターンを消去するには
:let @/ = ""
これはパターンを空の文字列に設定しません、なぜならそれはどこでもにマッチするからです。 Vimを起動したときのように、パターンは本当にクリアされています。
私は何年も前にvim.orgでこの答えを見つけました:
以下を.vimrcに追加してください。
"This unsets the "last search pattern" register by hitting return
nnoremap <CR> :noh<CR><CR>
したがって、検索後、コマンドモードでもう一度returnキーを押すと、強調表示が消えます。
http://Twitter.com/jonbho/status/2194406821 から
" Clear highlighting on escape in normal mode
nnoremap <esc> :noh<return><esc>
nnoremap <esc>^[ <esc>^[
2行目は エスケープキー へのマッピングに必要です。Vimは特別なキーを表すために内部的にescapeを使っているからです。
私の最初の解決策(下)は汚れていて無駄でした。私は今:noh
を使います
Vimの多くの機能のように、正しい方法はたやすく見つけられないことが多い。
-
(こんなことしないで)
ありそうもない文字シーケンスを検索します(ホーム行のキーをマッシュします)。
/;alskdjf;
これはvim以下で動作します、そして@ ShaunBouckaertの論理的によりきれいな解決策「最後に使用された検索パターンをクリアする」より覚えやすく/タイプすることは簡単です:
:let @/ = ""
潜在的なマイナス面は、それがあなたの検索履歴にジャンクを追加するということです。
nnoremap <cr> :noh<CR><CR>:<backspace>
そうすれば、打ったときにコマンドラインに表示される:noh
を取り除くことができます。 enter 検索後.
: 新しいコマンドを入力し始めるのと同じです。 Backspace クリアしてフォーカスをエディタウィンドウに戻します。
私の.vimrc.localファイルに再マッピングしました。すばやく汚いですが非常に機能的です。
" Clear last search highlighting
map <Space> :noh<cr>
:noh
または :nohlsearch
(例:Matt McMinn's)を提案する答えは、一時的に一時的に検索の強調表示を無効にするためのものです。
Normalモードで便利なマッピングを提供したいと思いました。
nnoremap <C-L> :nohlsearch<CR><C-L>
デフォルトでは、 CtrlL in Vimは画面をクリアして再描画します。多くのコマンドラインプログラム(ほとんどの場合、Bashなどの GNU Readlineライブラリ を使用するもの)は、画面をクリアするために同じキーの組み合わせを使用します。この機能は、バックグラウンドで実行中のプロセスが端末に出力し、フォアグラウンドプロセスの一部を上書きしている状況で役立ちます。
この通常モードのマッピングでは、画面を再描画する前に最新の検索語の強調表示も消去されます。この2つの機能は互いに補完し合っているので、どちらを使用するのが便利です。 CtrlL 検索の強調表示を無効にするための個別のマッピングを作成するのではなく、両方のアクションをまとめて実行します。
NB:noremap
ではなくmap
が使用されます。そうでない場合、マッピングは再帰的になります。
ヒント:私は通常リマップします Caps Lock に Ctrl そのようなキーの組み合わせを入力しやすくするため。これを行うための詳細は、OS /ウィンドウシステムの選択によって異なります(そしてこの答えについては話題になりません)。以下の両方のヒントには、マッピングに関する情報が含まれています Caps Lock に Ctrl と同様 Esc:
通常、:noh
をバックスラッシュキーにマップします。強調表示を再び有効にするには、単に n、再び強調表示されます。
あなたが使用して検索を行うたびに一致は強調表示されません /
:set nohlsearch
:noh
または:nohlsearch
(までクリアされます n または N 押します)
nnoremap <esc> :noh<return><esc>
押すことで明確なハイライト \ (バックスラッシュ)
nnoremap \ :noh<return>
打撃に関する明確なハイライト ESC 二度
nnoremap <esc><esc> :noh<return>
これが私が使っているものです(たくさんの異なる質問/回答から抜粋):
nnoremap <silent> <Esc><Esc> :let @/=""<CR>
「ダブル」とは Esc 強調表示は解除されますが、もう一度検索すると強調表示が再び表示されます。
もう一つの選択肢:
nnoremap <silent> <Esc><Esc> :noh<CR> :call clearmatches()<CR>
Vimのドキュメントによると:
クリアマッチ()
Clears all matches previously defined by |matchadd()| and the |:match| commands.
Janus for VIMとGVIM には、私のような初心者のためのたくさんのものがあります。
<leader>hs - toggles highlight search
まさにあなたが必要としているものです。通常モードで\hs
をタイプするだけです。 (リーダーキーはデフォルトで\
にマッピングされています。)
HTH.
有効/無効 強調表示 すばやく にできるようにしたい場合は、キーを
" Press F4 to toggle highlighting on/off, and show current value.
:noremap <F4> :set hlsearch! hlsearch?<CR>
上記のスニペットをあなたの.vimrcファイルに入れるだけです。
これは私が歌のキーストロークで検索ハイライトを表示したり隠したりするのに最も便利な方法です。
より詳しい情報はドキュメントをチェックしてください http://vim.wikia.com/wiki/Highlight_all_search_pattern_matches
これはupdatetime
ミリ秒の非アクティブ状態の後に検索のハイライトをクリアします。
updatetime
のデフォルトは4000msまたは4sですが、私は10sに設定します。 updatetime
はこれだけではありませんので、変更する前にドキュメントを読んでください。
function! SearchHlClear()
let @/ = ''
endfunction
augroup searchhighlight
autocmd!
autocmd CursorHold,CursorHoldI * call SearchHlClear()
augroup END
私は個人的には次のようにesc
を:noh
コマンドにマッピングしたいと思います。
map <esc> :noh<cr>
私は最近Vim検索についての全記事を書きました :Vanilla Vimと検索機能を強化するための最良のプラグインの検索方法。
2つの重要な答えを組み合わせることによるもう1つの解決策:
"To clear the last used search pattern:
nnoremap <F3> :let @/ = ""<CR>
以下の単純なnohlを使うだけでプラグインは必要ありません。
:nohl
私の考えでは、元の質問は検索の強調表示を無効にするではなく、単に前回の検索からの強調表示をクリアすることです。最初の投稿者が述べた、ちょっとぎこちない文字列を検索するという解決策は、以前の検索から強調表示を明確にするためにしばらく使用してきたものですが、醜くて面倒です。
nnoremap ...
を〜/ .vimrcに追加することを私が発見したいくつかの提案はここでは起動時にvimを置換モードにする効果がありますが、これは私が望むことでは全くありません。私が見つけた最も簡単な解決策は、行を追加することです。
nmap <esc><esc> :noh<return>
私の〜/ .vimrcへ。これはKISSの原則に反論しており、単一の<esc>を使用した場合の矢印キーには影響しません。前回の検索から強調表示をクリアするには、コマンドモード(または挿入モードまたは置換モードのトリプル<esc>)ではdouble- <esc>が必要ですが、UIの観点からすると、操作はできるだけ簡単になります。
私は私の~/.vimrc
で以下を使います
nnoremap <Leader><space> :noh<Enter>
これにより、現在強調表示されている検索を簡単かつ迅速に消去できます。私のリーダーキーは\
にマップされているので、これは私の右小指と親指でアクションを実行するのをとても簡単にします。
@ baruch-even answerに基づいて、上の検索語を削除できます ESC 通常モードでダブルクリック
nnoremap <esc> :let @/ = ""<return><esc>
nnoremap <esc>^[ <esc>^[
このように :noremap を使って検索結果をオン/オフにすることができます
:noremap <F3> :set hls! hls?<CR>
私は@ShaunBouckaertと2009年3月19日16:22の回答を混ぜるのは良い妥協案だと思います。
" Reset highlighted search
nnoremap <CR> :let @/=""<CR><CR>
押す Enter また、強調表示されたテキストは強調表示されなくなり、検索の強調表示は引き続き有効になります。
vim-cool をインストールしてください。この問題を解決するために作成されました。カーソルを移動すると同時に強調表示がオフになります。ただし、最近のvimバージョンが必要です。
私も好きではありません。いつも:nohl
を入力するのは面倒です…だから私の.vimrc
に次のマッピングを入れます
noremap <C-_> :nohl<cr>:<backspace>
最初のビット(:nohl<cr>
)は強調表示を消去します。 2番目のビット(:<backspace>
)は clean コマンドラインへのトリックです。検索はまだバックグラウンドで行われているため、単にn
を押すと、再度強調表示されて次の検索に進みます。
これをvimrc
ファイルに追加しました。
command! H let @/=""
使用するには、単に:H
を実行してください。