2171

Vim で検索を行った後、すべての出現箇所が強調表示されます。どうすれば無効にできますか?私は今、見つからない意味不明なものをもう一度検索します。

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

4

32 に答える 32

1880

次の検索まで強調表示をオフにするには:

:noh

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

set nohlsearch

または、切り替えるには:

set hlsearch!

nnoremap <F3> :set hlsearch!<CR>
于 2009-03-18T09:02:47.920 に答える
761

VIM ドキュメントから

最後に使用した検索パターンをクリアするには:

:let @/ = ""

どこでも一致するため、これはパターンを空の文字列に設定しません。Vimを起動したときのように、パターンは本当にクリアされます。

于 2009-03-18T09:12:09.690 に答える
617

できるよ

:noh

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

于 2009-03-18T14:26:22.183 に答える
147

http://twitter.com/jonbho/status/2194406821より

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

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

于 2009-06-24T08:53:24.267 に答える
43

私の元の解決策 (以下) は汚くて無駄でした。今使ってる:noh

Vim の多くの機能と同様に、正しい方法は簡単には見つけられないことがよくあります。

--

(こんなことしないで)

ありそうもない文字列を検索します (ホーム行のキーを連打します):

/;alskdjf;

これはvim以下で機能し、@ShaunBouckaertの「最後に使用した検索パターンをクリアする」という論理的にクリーンなソリューションよりも覚えたり入力したりするのが簡単です。

:let @/ = ""

潜在的な欠点は、検索履歴にジャンクが追加されることです.

于 2012-03-17T15:38:09.950 に答える
34

私の .vimrc.local ファイルに再マップされました。すばやく汚れていますが、非常に機能的です。

" Clear last search highlighting
map <Space> :noh<cr>
于 2011-10-23T19:48:21.273 に答える
34
nnoremap <cr> :noh<CR><CR>:<backspace>

そうすれば、検索後:nohにヒットすると、コマンドラインに表示されなくなります。enter

:新しいコマンドの入力を開始するようなもので、コマンドをBackspaceクリアして、フォーカスをエディター ウィンドウに戻します。

于 2012-08-09T19:04:32.910 に答える
27

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

于 2010-11-12T17:49:43.987 に答える
22

これは私が使用するものです(さまざまな質問/回答から抜粋):

nnoremap <silent> <Esc><Esc> :let @/=""<CR>

"double"Escを使用すると強調表示が削除されますが、もう一度検索するとすぐに強調表示が再び表示されます。


別の方法:

nnoremap <silent> <Esc><Esc> :noh<CR> :call clearmatches()<CR>

vimのドキュメントによると:

クリアマッチ()

    Clears all matches previously defined by |matchadd()| and the

    |:match| commands.
于 2014-11-29T21:58:32.987 に答える
17

次の検索まで強調表示をオフにするには

:noh

ビジュアルイラストレーション

于 2015-12-31T22:54:09.363 に答える
11

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

let g:incsearch#auto_nohlsearch = 1

ここに画像の説明を入力

于 2016-09-09T06:46:04.047 に答える
9

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

  1. sensible - Ctrl-lnohlsearch および再描画画面用。
  2. unimpared - [oh]ohおよびcohhlsearch を制御します。
于 2016-03-14T08:16:20.833 に答える
8

Janus for VIM および GVIMには、私のような初心者向けの機能が多数組み込まれています。

<leader>hs - toggles highlight search

これはまさにあなたが必要とするものです。\hs通常モードで入力するだけです。(リーダー キーはデフォルトで にマップさ\れます。)

HTH。

于 2012-11-20T19:07:52.650 に答える
7

updatetimeこれにより、ミリ秒の非アクティブ 後に検索の強調表示がクリアされます。

updatetimeデフォルトは 4000 ミリ秒または 4 秒ですが、私は 10 秒に設定しました。はこれ以上のことを行うことに注意することが重要なupdatetimeので、変更する前にドキュメントを読んでください。

function! SearchHlClear()
    let @/ = ''
endfunction
augroup searchhighlight
    autocmd!
    autocmd CursorHold,CursorHoldI * call SearchHlClear()
augroup END
于 2014-04-24T03:56:25.550 に答える
6

強調表示をすばやく有効/無効にしたい場合は、キーをにマップできます

" 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を確認してください。

于 2015-09-30T13:04:37.927 に答える
5

上位 2 つの回答を組み合わせたもう 1 つの解決策:

"To clear the last used search pattern:
nnoremap <F3> :let @/ = ""<CR>
于 2015-04-03T21:44:10.353 に答える
4

:noremapを使用して、このように検索結果のオン/オフを切り替えることができます

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

于 2015-12-09T06:06:23.493 に答える
3

@baruch-even の回答に基づいて、通常モードで次のようにESCダブルプレスで検索語を削除できます。

nnoremap <esc> :let @/ = ""<return><esc>
nnoremap <esc>^[ <esc>^[
于 2016-08-19T08:26:15.700 に答える
3

@ShaunBouckaert と 2009 年 3 月 19 日 16:22 の回答を混在させることは、良い妥協点だと思います。

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

を押すEnterと、強調表示されたテキストは強調表示されなくなりますが、検索の強調表示は有効のままです。

于 2014-04-29T09:51:24.280 に答える
3

私も好きじゃない。いつも入力するのは面倒だと思った:nohlので、次のマッピングを私の.vimrc

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

最初のビット ( :nohl<cr>) は強調表示をクリアします。2 番目のビット ( ) は、コマンド ラインをきれい:<backspace>にするためのトリックです。検索はまだバックグラウンドで行われているため、単純にヒットすると、再ハイライトされて次の検索に移動します。n

于 2018-08-07T01:39:14.320 に答える