Я пользователь vim и недавно пробовал emacs для удовольствия. Я нахожу, что функция, которой я больше всего не хватает от vim, это " супер звезда" (найдите слово под курсором, набрав *) и мне еще предстоит найти эквивалент в emacs. Если он не встроен, что мне нужно добавить в файл emacs, чтобы получить что-то подобное?
"суперзвезда" или найти слово под эквивалентом курсора в emacs
Ответ 1
Как указал paldepind, isearch-forward-symbol-at-point
(M-s ., по умолчанию) является близким эквивалентом * в Vim. Эта функция доступна в GNU Emacs 24.4; если ваш Emacs отличается или старше, читайте для альтернатив.
Обычно я просто делаю (M-b...) C-s C-w... C-s. То есть:
- M-b, чтобы перейти к началу интересующего слова (ов)
- ноль или более из них
- C-s, чтобы запустить I-Поиск
- C-w, чтобы вырвать слово (и), начиная с точки
- один или несколько из этих
- C-s, чтобы найти следующее совпадение
- больше C-s, чтобы найти более поздние совпадения
- RET, чтобы выйти из I-поиска в последнем совпадении
- или пучок C-g, чтобы отменить возврат к исходному стартовому местоположению
Здесь вы можете интегрировать его в I-Search (вызывается через C-s и C-r, используйте C-h k C-s для информации в isearch
).
(require "thingatpt")
(require "isearch")
(define-key isearch-mode-map (kbd "C-*")
(lambda ()
"Reset current isearch to a word-mode search of the word under point."
(interactive)
(setq isearch-word t
isearch-string ""
isearch-message "")
(isearch-yank-string (word-at-point))))
Интеграция его в I-Search использует его соответствие совпадению и настройкам чувствительности к регистру (C-s M-c C-* будет делать регистр, чувствительный к регистру, над словом под точкой).
Ответ 2
Попробуйте C-s C-w
Ответ 3
Вот начало:
(global-set-key (kbd "C-*") (lambda () (interactive) (re-search-forward (format "\\b%s\\b" (thing-at-point 'word)))))
Ответ 4
если вы используете гадюку (которая отлично работает), это должно работать достаточно хорошо:
(require 'thingatpt)
(require 'viper)
(defun viper-search-word-at-point ()
"Reset viper-s-string to word at point and start a forward viper search."
(interactive)
(setq viper-s-string (word-at-point))
(viper-search viper-s-string 't nil))
(global-set-key (kbd "C-*") 'viper-search-word-at-point)
Ответ 5
В эти дни также есть Smart Scan, легкий дополнительный пакет, который предоставляет эту функциональность.
Он доступен из MELPA; инструкции по добавлению MELPA в список включенных package-archives
здесь.
Чтобы установить его:
M-x package-install
RET smartscan
RET
Затем вы можете включить его через
(global-smartscan-mode t) ;; Turn on Smart Scan globally
Значения привязки по умолчанию для поиска вперед и назад - это M-n и M-p, соответственно.
PS: Если вам интересно, исходное сообщение в блоге, представляющее этот пакет, здесь.