Никто не упомянул symbol-overlay
режим . Это в основном лучше переписать highlight-symbol-mode
. «Лучше», как в случае, отсутствуют ошибки оригинального символа выделения (например, застревание временного выделения или исчезновение временного выделения для перемещения внутри выделенного слова; или невозможность выделить символы, подобные *
) , лучше интегрировано и поддерживается. См. Пункт «Преимущества» в README.
Вы можете установить его как обычно, с помощью M-x package-install (предварительно обновите список пакетов с помощью package-list-packages
) . Для справки внизу поста есть код из моего конфига для включения режима.
Notepad ++ имеет удобную функцию: если вы выбираете слово в тексте (не обязательно ключевое слово), слово выделяется по всему тексту. Можно ли это сделать и в Emacs? И если да, то как?
После включения overlay-symbol
вхождения на экране будут отображаться для каждого слова, на которое вы наведете курсор после тайм-аута (тайм-аут по умолчанию равен 0,5 с, может быть настроен с переменной symbol-overlay-idle-time
) . Если слово не выделено, это означает, что на экране есть только одно совпадение (то, на которое вы навели курсор) , следовательно, нет необходимости выделять его.
Было бы замечательно, если бы выделение было постоянным, то есть перемещение точки от выделенного слова не должно приводить к удалению выделения.
Для постоянного выделения слова под курсором есть функция symbol-overlay-put
. Чтобы выделить его, позвоните еще раз.
В моем примере конфигурации он связан с Logo + ` key.
(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 ;; name of the new global mode
symbol-overlay-mode ;; name of the minor mode
enable-symbol-overlay-mode)
(global-symbol-overlay-mode) ;; enable it
(global-set-key (kbd "s-`") 'symbol-overlay-put)
(setq symbol-overlay-map (make-sparse-keymap)) ;; disable special cmds on overlays