"Super star" ou trouver le mot sous l'équivalent du curseur dans emacs

Je suis un utilisateur vim et j'ai récemment essayé emacs pour le plaisir. Je trouve que la fonctionnalité qui me manque le plus jusqu'à présent de vim est la fonctionnalité" super star " (Trouvez le mot sous le curseur en tapant*), et je n'ai pas encore trouvé l'équivalent dans emacs. Si ce n'est pas intégré, que devrais-je ajouter à mon fichier emacs pour obtenir quelque chose de similaire?

28
demandé sur mmrobins 2009-11-21 12:16:34

5 réponses

, Comme souligné par paldepind, isearch-forward-symbol-at-point (M-s., par défaut) est un proche équivalent à * dans Vim. Cette fonction est disponible à partir de GNU Emacs 24.4; si votre Emacs est différent ou plus ancien, lisez la suite pour les alternatives.

Habituellement, je fais juste ( M-b ...) , C-s C-w ... C-s . C'est:

  1. M-b pour passer au début du(des) mot (s) d'intérêt
    • zéro ou plus de ces
  2. C-S {[9] } pour démarrer une I-Search
  3. C-w {[9] } pour tirer le(S) mot (s) commençant au point
    • un ou plusieurs de ces
  4. C-s pour trouver la prochaine correspondance
  5. Plus C-s pour trouver des correspondances ultérieures
  6. RET pour quitter le I-search à la correspondance la plus récente
    • ou un groupe de C-g pour revenir à l'emplacement de départ d'origine

Voici un aller à en l'intégrant dans je-Recherche (appelé par l'intermédiaire de , C-s et , C-r; utilisez , C-h k C-s pour plus d'informations sur 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))))

L'intégrer dans I-Search tire parti de ses paramètres de correspondance de mots et de sensibilité à la casse ( C-s M-c C - * ferait une recherche sensible à la casse sur le mot sous le point).

32
répondu Chris Johnsen 2015-11-04 02:08:40

Essayez C-sC-w

17
répondu outis 2009-11-21 10:25:39

Voici un début:

(global-set-key (kbd "C-*")
  (lambda ()
    (interactive)
    (re-search-forward (format "\\b%s\\b" (thing-at-point 'word)))))
10
répondu huaiyuan 2009-11-22 23:07:49

Ces jours - ci, il y a aussi Smart Scan, un package add-on léger qui fournit cette fonctionnalité.

Il est disponible à partir de MELPA ; les instructions pour ajouter MELPA à la liste des package-archives activés sont ici.

Pour l'installer:

M-x package-install RET smartscan RET

Vous pouvez ensuite l'activer via

(global-smartscan-mode t) ;; Turn on Smart Scan globally

Les raccourcis clavier par défaut pour la recherche en avant et en arrière sont M-N et M-p, respectivement.


PS: Si vous êtes intéressé, le billet de blog original présentant ce paquet est ici .

5
répondu itsjeyd 2014-05-13 05:33:05

Si vous utilisez viper (qui fonctionne très bien) cela devrait fonctionner de la même manière:

(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)
4
répondu Rodrigo B. de Oliveira 2014-05-11 14:33:11