現在のドキュメントで単語の強調表示をクリアするにはどうすればよいですか(たとえば、単語を検索した後など)。


61

のようなファイルで単語を検索すると/console.log、のすべてのインスタンスconsole.logが強調表示されます。

これらに興味がなくなったら、強調表示が邪魔になることがあります。強調表示を削除するための私の現在の戦略は、次のようなことをすることです/asntehua。この単語の強調表示を削除する適切な方法はありますか?


2
入力するのが速くなるものはありません/skldafjlksjdf;)
Shahbaz

2
次を.vimrcに追加します:nnoremap <silent> <CR> :nohlsearch<CR><CR>。コマンドモードでReturnキーを押すと、強調表示が消えます。
ニロン

回答:


47

の代わりに:noh:let @/=""キーボードショートカットにマッピングするのが好きです。

違いはそれがある:nohので、検索レジスタ内の検索用語を離れるnと、N通常モードで次/前の一致と再ハイライトにジャンプして検索を再開します。使用して:let @/=""、他の一方で、メッセージの原因E25: No previous regular expressionそれがあったカーソルの葉あなたがまだ知らない場合に特に便利です、ctrl- oまだ、誤ってヒットn

これは他の方法でも使用できます。vimにジャンプせずにテキストを強調表示させるには、次のことができます。:let @/="some text"

これらの式では、@はレジスタを参照でき、@ /は最後の検索パターンを保持するレジスタです。


31

入力するだけ

:noh<cr>

<cr>改行を表す場所、つまりEnter。)このコマンドの完全な非短縮バージョンは:nohlsearchです。

便宜上、次のようなマッピングを持つことができます

nnoremap <Leader><space> :noh<cr>

あなたの.vimrc。私のリーダーはスペースなので、スペースを2回タップするだけで強調表示をクリアできます。(デフォルトで<Leader>は、に設定されています\

別の一般的なオプションは、これをCtrl+ にバインドすることです。Lこれは多かれ少なかれ「再描画された端末画面」のデフォルトであり、これは大体あなたがしいることです

nnoremap <silent> <C-L> :nohlsearch<CR><C-L>

これには、端末画面再描画するという副作用があります。これは、端末接続が遅い場合は遅くなる可能性があります(最近では非常にまれです)。
注:tpope / vim-sensibleを使用している場合は、<C-l>上記のマッピングが既に提供されています。


21

検索の強調表示を完全に無効にする

を使用して検索を行うと、一致は強調表示されません /

:set nohlsearch

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

:noh

または:nohlsearchnまたはNが押されるか、新しい検索が実行されるまでクリアします)


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

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

別のキーまたはカスタムマップを押すとハイライトがクリアされます

  • 押すとハイライトがクリア\(バックスラッシュ)

    nnoremap \ :noh<return>
    
  • ESC2回叩く際のハイライトをクリアする

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

に追加nnoremap <esc> :noh<return><esc>しましたが、機能してvimrcいません。jk脱出するようにマッピングしましたが、それが理由でしょうか?
mbigras

正確に何が起こっているのですか?ESCキーを無効にした可能性がありますか?
-Sheharyar

を押しjkても、強調表示されたテキストはオフに切り替わりません(ただし、引き続き機能しますEsc)。Escキーボードの左上でmyを押すと、強調表示されたテキストがオフになります。
mbigras

答えはすぐそこにあります。jkマップをマップの下に置き、代わりにESCシンプルなものを使用していることを確認してくださいmapnoremap
-Sheharyar

エスケープを再マッピングすると、矢印キーで問題が発生する可能性があり、エスケープコードを使用する他のシナリオを想定しています。vi.stackexchange.com/questions/11144/...
ロブ・モッシャー

2

〜/ vimrcでこれに対するショートカットのいくつかの提案された解決策を試した後、単純に追加nmap <esc><esc> :noh<return>することに決めました。ダブルエスケープは、矢印キーの機能との干渉を防ぎます。挿入モードの場合は、トリプルエスケープが必要です。これはすぐに実行でき、覚えやすいです。


2

.vimrcにautocmdを追加して、挿入モードに入るたびに強調表示を削除しました。

 autocmd InsertEnter * :let @/=""

2
nohl代わりにlet @/=""を使用する方が、現在の検索を上書きしないため、より良いアプローチです。
ジェームスサン

@jamessanそれは:let @/=""コマンドで動作しますが、autocmd InsertEnter * :noh何らかの理由で、理由はわかりませんか?
tobek

1
実際に私は理由を見つけました:ドキュメントによると、「オートコマンドの「:nohlsearch」で検索ハイライトをオフにすることはできません」-理由の詳細:vimdoc.sourceforge.net/htmldoc/autocmd.html#autocmd-searchpat
tobek

1

検索後に強調表示したくない場合は、これを使用できます(より良い):

:set nohls

またはこれ(悪い):

:hi Search NONE

1

と入力すると:help incsearch、マニュアルに次の内容が見つかりました。

augroup vimrc-incsearch-highlight
  autocmd!
  autocmd CmdlineEnter /,\? :set hlsearch
  autocmd CmdlineLeave /,\? :set nohlsearch
augroup END

私が試した他の解決策は完全ではなく、この解決策はいわば「馬の口からまっすぐに」来るので、私は使用を辞めました。現在のウィンドウで一致するすべての検索が強調表示されます。


1
/asdfasdf

これには、入力する必要がないという利点があります。欠点は、4096バイトのファイルに約1:68719476736の機会があり、これが機能しないことで、カーソルが別の場所にジャンプすることです。この可能性は、ファイルが大きいほど大きくなります。


1
vi SEにようこそ!文字列asdfasdfは、ランダムに選択された8バイトシーケンスよりも、実際のファイルで頻繁に発生するという意味で特別だと思います。したがって、チャンスははるかに高くなります。:-)
user259412

0

hlsを削除するのは良いことだとは思いません。簡単なショートカット(ブール値)の作成を簡単に有効または無効にする方法はありますか->

" to reselect use gv in normal mode
nnoremap <S-F11> <ESC>:set hls!<cr>
inoremap <S-F11> <C-o>:set hls!<cr>
vnoremap <S-F11> <ESC>:set hls!<cr> <bar> gv

!設定の最後に「」があるため、魔法が発生します


0

強調表示が必要になることは非常にまれであり、強調表示が必要な場合はほんの一瞬です。私の解決策は

nnoremap <Leader>/ set hls!<CR>

これにより、押す\/と強調表示が有効になり、もう一度押すと再び無効になります。これにより、まれに必要なときに強調表示に簡単にアクセスできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.