web-dev-qa-db-ja.com

最後の検索ハイライトをクリアする

Vimで検索した後、すべての出現箇所が強調表示されます。無効にするにはどうすればよいですか。私は今見つけることができないちんぷんかんでもしい何かのための別の検索をします。

ハイライトを一時的に無効にしてから、必要に応じて再度有効にする方法はありますか?

1699
Gabriel Solomon

次の検索までハイライト表示をオフにするには:

:noh

または強調表示を完全にオフにします。

set nohlsearch

または、それを切り替えるには:

set hlsearch!

nnoremap <F3> :set hlsearch!<CR>
1387
Mykola Golubyev

VIMドキュメントから

最後に使用した検索パターンを消去するには

:let @/ = ""

これはパターンを空の文字列に設定しません、なぜならそれはどこでもにマッチするからです。 Vimを起動したときのように、パターンは本当にクリアされています。

654
Shaun Bouckaert

できるよ

:noh

または :nohlsearch は、次の検索まで検索の強調表示を一時的に無効にする.

562
Matt McMinn

私は何年も前にvim.orgでこの答えを見つけました:

以下を.vimrcに追加してください。

"This unsets the "last search pattern" register by hitting return
nnoremap <CR> :noh<CR><CR>

したがって、検索後、コマンドモードでもう一度returnキーを押すと、強調表示が消えます。 

277

http://Twitter.com/jonbho/status/2194406821 から

" Clear highlighting on escape in normal mode
nnoremap <esc> :noh<return><esc>
nnoremap <esc>^[ <esc>^[

2行目は エスケープキー へのマッピングに必要です。Vimは特別なキーを表すために内部的にescapeを使っているからです。

135
Baruch Even

私の最初の解決策(下)は汚れていて無駄でした。私は今:nohを使います

Vimの多くの機能のように、正しい方法はたやすく見つけられないことが多い。

-

(こんなことしないで)

ありそうもない文字シーケンスを検索します(ホーム行のキーをマッシュします)。

/;alskdjf;

これはvim以下で動作します、そして@ ShaunBouckaertの論理的によりきれいな解決策「最後に使用された検索パターンをクリアする」より覚えやすく/タイプすることは簡単です:

:let @/ = ""

潜在的なマイナス面は、それがあなたの検索履歴にジャンクを追加するということです。

35
millerdev
nnoremap <cr> :noh<CR><CR>:<backspace>

そうすれば、打ったときにコマンドラインに表示される:nohを取り除くことができます。 enter 検索後.

: 新しいコマンドを入力し始めるのと同じです。 Backspace クリアしてフォーカスをエディタウィンドウに戻します。

31
sjas

私の.vimrc.localファイルに再マッピングしました。すばやく汚いですが非常に機能的です。

" Clear last search highlighting
map <Space> :noh<cr>
30
avocade

: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

30

通常、:nohをバックスラッシュキーにマップします。強調表示を再び有効にするには、単に n、再び強調表示されます。

26
caveman

検索の強調表示を永久に無効にする

あなたが使用して検索を行うたびに一致は強調表示されません /

:set nohlsearch

次の検索までハイライトをクリア

:noh

または:nohlsearch(までクリアされます n または N 押します)


押すとクリアハイライト ESC

nnoremap <esc> :noh<return><esc>

別のキーまたはカスタムマップを押すと明確なハイライト表示

  • 押すことで明確なハイライト \ (バックスラッシュ)

    nnoremap \ :noh<return>
    
  • 打撃に関する明確なハイライト ESC 二度

    nnoremap <esc><esc> :noh<return>
    
21
Sheharyar

これが私が使っているものです(たくさんの異なる質問/回答から抜粋):

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.

次の検索までハイライト表示をオフにする

:noh

Visual Illustration

9
arcseldon

incsearch.vim plugin がインストールされている場合は、検索後にハイライトを自動的にクリアする設定があります。

let g:incsearch#auto_nohlsearch = 1

enter image description here

8
Deqing

Janus for VIMとGVIM には、私のような初心者のためのたくさんのものがあります。

<leader>hs - toggles highlight search

まさにあなたが必要としているものです。通常モードで\hsをタイプするだけです。 (リーダーキーはデフォルトで\にマッピングされています。)

HTH.

8
brokenthorn

有効/無効 強調表示 すばやく にできるようにしたい場合は、キーを

" 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

6
Amaynut

これはupdatetimeミリ秒の非アクティブ状態の後に検索のハイライトをクリアします。 

updatetimeのデフォルトは4000msまたは4sですが、私は10sに設定します。 updatetimeはこれだけではありませんので、変更する前にドキュメントを読んでください。

function! SearchHlClear()
    let @/ = ''
endfunction
augroup searchhighlight
    autocmd!
    autocmd CursorHold,CursorHoldI * call SearchHlClear()
augroup END
6
Kevin Cox

私は個人的には次のようにesc:nohコマンドにマッピングしたいと思います。

map <esc> :noh<cr>

私は最近Vim検索についての全記事を書きました :Vanilla Vimと検索機能を強化するための最良のプラグインの検索方法。

5
Matthieu

2つの重要な答えを組み合わせることによるもう1つの解決策:

"To clear the last used search pattern:
nnoremap <F3> :let @/ = ""<CR>
5
skywinder

これには2つの「必須」プラグインがあります。

  1. 賢明 - nohlsearchおよび再描画画面の場合はCtrl-l
  2. hlsearchを制御するための 無比 - [oh]ohおよびcoh.
5
dkiyatkin

以下の単純なnohlを使うだけでプラグインは必要ありません。

:nohl

4
Stryker

私の考えでは、元の質問は検索の強調表示を無効にするではなく、単に前回の検索からの強調表示をクリアすることです。最初の投稿者が述べた、ちょっとぎこちない文字列を検索するという解決策は、以前の検索から強調表示を明確にするためにしばらく使用してきたものですが、醜くて面倒です。

nnoremap ...を〜/ .vimrcに追加することを私が発見したいくつかの提案はここでは起動時にvimを置換モードにする効果がありますが、これは私が望むことでは全くありません。私が見つけた最も簡単な解決策は、行を追加することです。

nmap <esc><esc> :noh<return>

私の〜/ .vimrcへ。これはKISSの原則に反論しており、単一の<esc>を使用した場合の矢印キーには影響しません。前回の検索から強調表示をクリアするには、コマンドモード(または挿入モードまたは置換モードのトリプル<esc>)ではdouble- <esc>が必要ですが、UIの観点からすると、操作はできるだけ簡単になります。

4
Lindsay Haisley

私は私の~/.vimrcで以下を使います

nnoremap <Leader><space> :noh<Enter>

これにより、現在強調表示されている検索を簡単かつ迅速に消去できます。私のリーダーキーは\にマップされているので、これは私の右小指と親指でアクションを実行するのをとても簡単にします。

4
John Slavick

@ baruch-even answerに基づいて、上の検索語を削除できます ESC 通常モードでダブルクリック

nnoremap <esc> :let @/ = ""<return><esc>
nnoremap <esc>^[ <esc>^[
3
dinigo

このように :noremap を使って検索結果をオン/オフにすることができます

:noremap <F3> :set hls! hls?<CR>

3
caopeng

私は@ShaunBouckaertと2009年3月19日16:22の回答を混ぜるのは良い妥協案だと思います。

" Reset highlighted search
nnoremap <CR> :let @/=""<CR><CR>

押す Enter また、強調表示されたテキストは強調表示されなくなり、検索の強調表示は引き続き有効になります。

3
Ekans

vim-cool をインストールしてください。この問題を解決するために作成されました。カーソルを移動すると同時に強調表示がオフになります。ただし、最近のvimバージョンが必要です。

2
00prometheus

私も好きではありません。いつも:nohlを入力するのは面倒です…だから私の.vimrcに次のマッピングを入れます

noremap <C-_> :nohl<cr>:<backspace>

最初のビット(:nohl<cr>)は強調表示を消去します。 2番目のビット(:<backspace>)は clean コマンドラインへのトリックです。検索はまだバックグラウンドで行われているため、単にnを押すと、再度強調表示されて次の検索に進みます。 

1
ricardo

これをvimrcファイルに追加しました。 

command! H let @/="" 

使用するには、単に:Hを実行してください。

0
pixel 67