のようなファイルで単語を検索すると/console.log
、のすべてのインスタンスconsole.log
が強調表示されます。
これらに興味がなくなったら、強調表示が邪魔になることがあります。強調表示を削除するための私の現在の戦略は、次のようなことをすることです/asntehua
。この単語の強調表示を削除する適切な方法はありますか?
:nnoremap <silent> <CR> :nohlsearch<CR><CR>
。コマンドモードでReturnキーを押すと、強調表示が消えます。
のようなファイルで単語を検索すると/console.log
、のすべてのインスタンスconsole.log
が強調表示されます。
これらに興味がなくなったら、強調表示が邪魔になることがあります。強調表示を削除するための私の現在の戦略は、次のようなことをすることです/asntehua
。この単語の強調表示を削除する適切な方法はありますか?
:nnoremap <silent> <CR> :nohlsearch<CR><CR>
。コマンドモードでReturnキーを押すと、強調表示が消えます。
回答:
の代わりに:noh
、:let @/=""
キーボードショートカットにマッピングするのが好きです。
違いはそれがある:noh
ので、検索レジスタ内の検索用語を離れるn
と、N
通常モードで次/前の一致と再ハイライトにジャンプして検索を再開します。使用して:let @/=""
、他の一方で、メッセージの原因E25: No previous regular expression
とそれがあったカーソルの葉あなたがまだ知らない場合に特に便利です、ctrl
- o
まだ、誤ってヒットn
。
これは他の方法でも使用できます。vimにジャンプせずにテキストを強調表示させるには、次のことができます。:let @/="some text"
これらの式では、@はレジスタを参照でき、@ /は最後の検索パターンを保持するレジスタです。
入力するだけ
: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>
上記のマッピングが既に提供されています。
を使用して検索を行うと、一致は強調表示されません /
:set nohlsearch
:noh
または:nohlsearch
(nまたはNが押されるか、新しい検索が実行されるまでクリアします)
nnoremap <esc> :noh<return><esc>
押すとハイライトがクリア\(バックスラッシュ)
nnoremap \ :noh<return>
ESC2回叩く際のハイライトをクリアする
nnoremap <esc><esc> :noh<return>
nnoremap <esc> :noh<return><esc>
しましたが、機能してvimrc
いません。jk
脱出するようにマッピングしましたが、それが理由でしょうか?
ESC
キーを無効にした可能性がありますか?
jk
ても、強調表示されたテキストはオフに切り替わりません(ただし、引き続き機能しますEsc
)。Esc
キーボードの左上でmyを押すと、強調表示されたテキストがオフになります。
jk
マップをマップの下に置き、代わりにESC
シンプルなものを使用していることを確認してくださいmap
noremap
〜/ vimrcでこれに対するショートカットのいくつかの提案された解決策を試した後、単純に追加nmap <esc><esc> :noh<return>
することに決めました。ダブルエスケープは、矢印キーの機能との干渉を防ぎます。挿入モードの場合は、トリプルエスケープが必要です。これはすぐに実行でき、覚えやすいです。
.vimrcにautocmdを追加して、挿入モードに入るたびに強調表示を削除しました。
autocmd InsertEnter * :let @/=""
nohl
代わりにlet @/=""
を使用する方が、現在の検索を上書きしないため、より良いアプローチです。
:let @/=""
コマンドで動作しますが、autocmd InsertEnter * :noh
何らかの理由で、理由はわかりませんか?
/asdfasdf
これには、入力する必要がないという利点があります。欠点は、4096バイトのファイルに約1:68719476736の機会があり、これが機能しないことで、カーソルが別の場所にジャンプすることです。この可能性は、ファイルが大きいほど大きくなります。
asdfasdf
は、ランダムに選択された8バイトシーケンスよりも、実際のファイルで頻繁に発生するという意味で特別だと思います。したがって、チャンスははるかに高くなります。:-)
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
!
設定の最後に「」があるため、魔法が発生します
/skldafjlksjdf
;)