В Notepad ++ есть удобная функция: если вы выбираете слово в тексте (не обязательно ключевое слово), оно выделяется по всему тексту. Можно ли это сделать и в Emacs? И если да, то как?
Он не обязательно должен работать точно так же, как Notepad ++ (т. Е. Через выделение); В идеале я хотел бы настроить привязку клавиш, которая заставляет выделять все вхождения слова под курсором.
Было бы здорово, если бы подсветка была постоянной, т.е. перемещение точки от выделенного слова не должно приводить к удалению выделения.
Кроме того, было бы полезно, если бы существовало решение, позволяющее перемещаться между выделениями (с помощью пользовательских привязок клавиш).
источник
Эти
hi-lock
предложения хороши. Я думаю, что проще использовать M-xверсии:M-x
highlight-regexp
RET<REGEXP>
M-x
highlight-phrase
RET<REGEXP>
highlight-phrase
это просто немного сахара,highlight-regexp
который игнорирует регистр и переводит пробел в регулярном выражении для соответствия произвольным пробелам. Удобно.источник
M-x unhighligh-regex
key-chord:C-x w r
... Кроме того, фраза выделения не полностью нечувствительна к регистру. Только начальные строчные буквы (слов) не учитывают регистр. (Я полагаю, это было предназначено для борьбы сfred
vsFred
) .. например, он генерирует регулярное выражение, подобное:[Cc]at[ ]+[Dd]og
unhighlight-regexp
вместоunhighligh-regex
(отсутствуетt
иp
).Введите
C-s
, а затем введите текущее слово или типC-w
. В качестве бонуса теперь вы можете нажать ещеC-s
раз, чтобы найти слово.Это называется инкрементным поиском .
источник
M-x highlight-regexp
решение (и привязал его к ярлыку).То, что я использую, это незанятое выделение
http://www.emacswiki.org/emacs/IdleHighlight
Чтобы включить его для всех режимов программирования, в
~/.emacs.d/init.el
:;; highlight words (add-hook 'prog-mode-hook (lambda () (idle-highlight-mode t)))
источник
Световой символ будет выделять любую точку символа, которая закончилась.
В качестве альтернативы вы можете использовать событие , в котором перечислены все строки, соответствующие регулярному выражению. Полезно быстро увидеть все функции в классе.
источник
Попробуйте http://www.emacswiki.org/emacs/msearch.el Все вхождения текста, выделенного курсором, будут выделены. Вы должны перетащить строку, которую хотите выделить. Это позволяет вам легко изменить выделение, не меняя выделения.
Если вы хотите сохранить выделение строки, вы можете зафиксировать ее.
Вы можете подчинить буфер другому буферу. Текст, выбранный в главном буфере, также будет выделен в подчиненном буфере. Это полезно для сравнения буферов. Это также полезно для заметок в одном буфере, пока вы исследуете текст в другом. У вас может быть набор ключевых слов в буфере заметок. Перетащите такое ключевое слово, и его появление в исследуемом тексте будет выделено.
Я использую это уже много лет. Добавил заморозку совсем недавно. Так что, может, что-то сломалось. Если это так, оставьте мне сообщение на http://www.emacswiki.org/emacs/msearch или здесь.
источник
Это может быть не так хорошо, как вы надеялись, но если вы поставите
(global-hi-lock-mode 1)
в вашем
.emacs
файл , то вы можете ввести ,C-x w h REGEX <RET> <RET>
чтобы выделить все места гдеREGEX
, иC-x w r REGEX <RET>
для снятия выделения их снова. Опять же, не так элегантно, как вам хотелось бы, но это сработает.источник
Проверить интерактивное выделение
Должно быть:
C- x w hслово<RET> <RET>
источник
Никто не упомянул
symbol-overlay
режим . По сути, это лучший вариантhighlight-symbol-mode
. «Лучше», как в, не содержит ошибок исходного символа выделения (например, временное заедание выделения или исчезновение временного выделения при перемещении внутри выделенного слова; или невозможность выделения таких символов, как*
) , лучше интегрированы и поддерживаются. См. Параграф «Преимущества» в README.Вы можете установить его как обычно, с помощью M-xpackage-install (не забудьте заранее обновить список пакетов с помощью
package-list-packages
) . Для справки, внизу я прикрепил код, который использую для включения режима и отключения некоторых более продвинутых функций, которые могут вам понадобиться, а могут и не понадобиться.После включения
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 ;; 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-ignore-functions nil) ;; don't ignore keywords in various languages (setq symbol-overlay-map (make-sparse-keymap)) ;; disable special cmds on overlays
источник
symbol-overlay-mode
было именно то, что я искал. Привязкаsymbol-overlay-put
к клавише F удобна для переключения выделения данного слова в файле.Команды в библиотеке
highlight.el
позволяют (отменить) выделение текста, соответствующего регулярному выражению (в данном случае символу), с помощью наложений или свойств текста. Вы можете переключаться между вхождениями. Выделение может быть временным или постоянным. (подробнее) .источник
Попробуйте iedit . Он выделяет слово в точке и позволяет легко редактировать все его вхождения. Дополнительным нажатием клавиши (C- ') он скрывает все строки, в которых нет этого слова. Очень удобно!
источник
Возможно, это не будет выделяться, но будет искать слово без необходимости вводить его ...
когда вы дойдете до слова, которое хотите найти, CS, затем прочитайте все слово с помощью CW, затем вы можете CS, и он будет искать его. В моем Emacs он также выделяет все экземпляры в документе.
источник
Этот пакет доступен в Melpa работает, вы также можете настроить стиль выделения.
https://github.com/ignacy/idle-highlight-in-visible-buffers-mode
источник