highlight-symbol-at-point
は本当に便利ですが、シンボルをハイライト解除する簡単な方法を見つけることができませんでした。
現在unhighlight-regexp
、強調表示されているシンボルごとに繰り返し呼び出す必要があります。
より良い方法はありますか:
- バッファ内の強調表示されたすべてのシンボルのハイライトを解除します
- ポイントでシンボルをハイライト解除しますか?
M-x hi-lock-mode
highlight-symbol-at-point
は本当に便利ですが、シンボルをハイライト解除する簡単な方法を見つけることができませんでした。
現在unhighlight-regexp
、強調表示されているシンボルごとに繰り返し呼び出す必要があります。
より良い方法はありますか:
M-x hi-lock-mode
回答:
からC-h f unhighlight-regexp
、
(unhighlight-regexp REGEXP)
hi-lockによって設定されたREGEXPへの各一致の強調表示を削除します。インタラクティブに、REGEXPのプロンプトを表示し、以前にhi-lockインタラクティブ機能によって挿入された正規表現のみを受け入れます。REGEXPがtの場合(またはCuがインタラクティブに指定された場合)、すべてのハイロックハイライトを削除します。
我々は、単に呼び出す必要があることを意味unhighlight-regexp
してt
バッファに強調表示するすべてのハイロックを解除するために、引数として。
一度限りのものであれば、M-: (unhighlight-regexp t)
またはですばやく処理できますC-u M-s h u
。しかし、これは非常に頻繁に行う必要のあることのようです。その場合は、interactive
関数にラップして、何らかのキーにバインドする方が適切です。
以下はmy/unhighlight-all-in-buffer
、ラッパーインタラクティブ関数であり、にバインドさhU
れている提案されたソリューションsearch-map
です。デフォルトでは、search-map
プレフィックスはM-s
です。だから今、M-s h u
ローンチunhighlight-regexp
と同時に、M-s h U
(首都のUに注意してください)がローンチしmy/unhighlight-all-in-buffer
ます。
(require 'hi-lock)
(defun my/unhighlight-all-in-buffer ()
"Remove all highlights made by `hi-lock' from the current buffer.
The same result can also be be achieved by \\[universal-argument] \\[unhighlight-regexp]."
(interactive)
(unhighlight-regexp t))
(define-key search-map "hU" #'my/unhighlight-all-in-buffer)
良い点は、強調表示を解除する必要があるシンボルにポイントを配置する必要がないことです。
あなたは、単に呼び出すM-x unhighlight-regexp
かM-s h u
(デフォルトは結合)とヒットM-p
/ M-n
あなたがハイライトを消しに必要なシンボルの正規表現に遭遇するまで、およびEnterキーを押します。
別の方法は、ライブラリのハイライト(highlight.el
)、コマンドhlt-highlight-symbol-at-point
、およびを使用することhlt-unhighlight-symbol-at-point
です。
これらはそれぞれデフォルトでC-x X h s
およびC-x X u s
にバインドされています。すべての強調表示および強調表示解除コマンドはC-x X
、デフォルトでプレフィックスキーにバインドされています。強調表示コマンドは、プレフィックスキーを使用しますC-x X h
。ハイライト解除コマンドは、プレフィックスキーを使用しますC-x X u
。C-x X
prefix commandにバインドするだけでなく、異なるプレフィックスキーを使用できますhlt-map
。
ライブラリのハイライトハイライトでは、オーバーレイまたはテキストプロパティ(またはその両方)を使用できます。強調表示されている顔または色は、(カスタマイズされた顔と色のシーケンスから)自動的に選択される場合とされない場合があります。
強調表示にはpropertyを使用できるためfont-lock-face
、Font Lockモードで制御されます。または、propertyを使用してface
、制御されないようにすることができます。(プロパティface
を使用して、フォントロックを使用しないバッファーで強調表示できます。フォントロックモードをオフにすると、強調表示はフォントロックバッファーに残ります。)