Подтвердить что ты не робот

"суперзвезда" или найти слово под эквивалентом курсора в emacs

Я пользователь vim и недавно пробовал emacs для удовольствия. Я нахожу, что функция, которой я больше всего не хватает от vim, это " супер звезда" (найдите слово под курсором, набрав *) и мне еще предстоит найти эквивалент в emacs. Если он не встроен, что мне нужно добавить в файл emacs, чтобы получить что-то подобное?

4b9b3361

Ответ 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: Если вам интересно, исходное сообщение в блоге, представляющее этот пакет, здесь.