Есть ли лучший способ отменить выделение всех выделенных символов в буфере?
От 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.