Никто не упомянул symbol-overlay
режим . По сути, это лучший вариант highlight-symbol-mode
. «Лучше», как в, не содержит ошибок исходного символа выделения (например, временное заедание выделения или исчезновение временного выделения при перемещении внутри выделенного слова; или невозможность выделения таких символов, как *
) , лучше интегрированы и поддерживаются. См. Параграф «Преимущества» в README.
Вы можете установить его как обычно, с помощью M-xpackage-install (не забудьте заранее обновить список пакетов с помощью package-list-packages
) . Для справки, внизу я прикрепил код, который использую для включения режима и отключения некоторых более продвинутых функций, которые могут вам понадобиться, а могут и не понадобиться.
В Notepad ++ есть удобная функция: если вы выбираете слово в тексте (не обязательно ключевое слово), оно выделяется по всему тексту. Можно ли это сделать и в Emacs? И если да, то как?
После включения overlay-symbol
на экране будут отображаться вхождения для каждого слова, на которое вы поместили курсор после тайм-аута (тайм-аут по умолчанию составляет 0,5 с, может быть настроен с помощью symbol-overlay-idle-time
переменной) . Если слово не выделяется, это означает, что на экране только одно совпадение (то, на которое вы поместили курсор) , поэтому выделять его не нужно.
Было бы здорово, если бы выделения были постоянными, т.е. перемещение точки от выделенного слова не должно приводить к удалению выделения.
Для постоянного выделения слова под курсором есть функция symbol-overlay-put
. Чтобы снять выделение, вызовите его еще раз.
В моем примере конфигурации он привязан к Logo+` клавише .
(require 'symbol-overlay)
(defun enable-symbol-overlay-mode ()
(unless (or (minibufferp)
(derived-mode-p 'magit-mode)
(derived-mode-p 'xref--xref-buffer-mode))
(symbol-overlay-mode t)))
(define-global-minor-mode global-symbol-overlay-mode
symbol-overlay-mode
enable-symbol-overlay-mode)
(global-symbol-overlay-mode)
(global-set-key (kbd "s-`") 'symbol-overlay-put)
(setq symbol-overlay-ignore-functions nil)
(setq symbol-overlay-map (make-sparse-keymap))