Есть ли лучший способ отменить выделение всех выделенных символов в буфере?
От C-h f unhighlight-regexp, мы получаем
(unhighlight-regexp REGEXP)
Убрать выделение каждого совпадения с помощью REGEXP, установленного hi-lock. В интерактивном режиме запрашивает REGEXP, принимая только регулярные выражения, ранее вставленные интерактивными функциями hi-lock. Если REGEXP равен t (или Cu был задан в интерактивном режиме), удалите все выделения hi-lock.
Это означает , что мы просто нужно позвонить 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.