Как выделить все вхождения слова в буфер Emacs?

Notepad ++ имеет удобную функцию: если вы выберете слово в своем тексте (необязательно ключевое слово), слово будет выделено во всем тексте. Можно ли это сделать и в Emacs? И если да, то как?

Он не обязательно должен работать точно так же, как Notepad ++ (т.е. с помощью выбора); В идеале я хотел бы настроить ключевое связывание, которое вызывает выделение всех вхождений слова под курсором.

Было бы здорово, если бы подсветка была постоянной, т.е. перемещение точки от выделенного слова не должно приводить к удалению выделения.

Кроме того, было бы полезно, если бы было решение, позволяющее перемещаться между подсветкой (с использованием пользовательских привязок клавиш).

Ответ 2

Предложения hi-lock хороши. Я думаю, что проще использовать версии M-x, хотя:

M-x highlight-regexp RET <REGEXP>

M-x highlight-phrase RET <REGEXP>

highlight-phrase - это всего лишь немного сахара вокруг highlight-regexp, который игнорирует регистр и переводит пробел в регулярное выражение для соответствия произвольным пробелам. Handy.

Ответ 3

Введите C-s, затем введите текущее слово или введите C-w. В качестве бонуса вы можете снова нажать C-s, чтобы найти слово.

Это называется инкрементным поиском.

Ответ 4

То, что я использую, неактивно

http://www.emacswiki.org/emacs/IdleHighlight

M-x idle-highlight устанавливает таймер простоя, который выделяет все вхождения в буфере слова под точкой.

Чтобы включить его для всех режимов программирования, в ~/.emacs.d/init.el:

;; highlight words
(add-hook 'prog-mode-hook (lambda () (idle-highlight-mode t)))

Ответ 5

Light-symbol выделит любую точку символа.

В качестве альтернативы вы можете использовать occur, в котором перечислены все строки, соответствующие регулярному выражению. Это полезно для быстрого просмотра всех функций в классе.

Ответ 6

Попробуйте http://www.emacswiki.org/emacs/msearch.el Все вхождения текста, выбранного с помощью курсора, подсвечиваются. Вам нужно перетянуть строку, которую вы хотите выделить. Это позволяет легко изменять выбор без изменения подсветки.

Если вы хотите сохранить выделение строки, вы можете ее заморозить.

Вы можете поработить буфер для другого буфера. Текст, выделенный в основном буфере, также будет выделен в подчиненном буфере. Это полезно для сравнения буферов. Он также полезен для заметок в одном буфере, когда вы исследуете текст в другом. Вы можете иметь набор ключевых слов в буфере заметок. Перетащите по такому ключевому слову, и его вхождения в исследуемом тексте будут выделены.

Я использую этот материал уже много лет. Недавно я добавил замораживание. Так что, возможно, что-то сломано. Если это так, оставьте мне примечание на http://www.emacswiki.org/emacs/msearch или здесь.

Ответ 7

Это может быть не так хорошо, как вы надеялись, но если вы положите

(global-hi-lock-mode 1)

в вашем файле .emacs, тогда вы можете набрать C-x w h REGEX <RET> <RET>, чтобы выделить все события REGEX и C-x w r REGEX <RET>, чтобы снова осветить их. Опять же, не такой элегантный, как вам бы хотелось, но он будет работать.

Ответ 9

Команды в библиотеке highlight.el (un) выделите текст, соответствующий регулярному выражению (в данном случае символу), используя оверлеи или текстовые свойства. Вы можете циклически переключаться между событиями. Выделение может быть временным или постоянным. (подробнее).

Ответ 10

Попробуйте iedit.el. Он выделяет слово в точке и позволяет легко редактировать все его вхождения. С дополнительным нажатием клавиши (C- ') он скрывает все строки без этого слова. Очень удобно!