Sono un utente vim e recentemente ho provato Emacs per divertimento. Trovo che la funzione che mi manca più così tanto da vim sia "super star" (trova la parola sotto il cursore digitando *), e devo ancora trovare l'equivalente in emacs. Se non è integrato, cosa dovrei aggiungere al mio file emacs per ottenere qualcosa di simile?"super star" o trova la parola sotto il cursore equivalente in emacs
risposta
Come pointed out da paldepind, isearch-forward-symbol-at-point
(. Ms, per impostazione predefinita) è uno stretto equivalente a * in Vim. Questa funzione è disponibile a partire da GNU Emacs 24.4; se il tuo Emacs è diverso o più vecchio, continua a leggere per le alternative.
Di solito io faccio solo (M-b ...) C-sC-w ... C-s. Cioè:
- Mb per spostarsi all'inizio della parola (s) di interesse
- zero o più di questi
- Cs per avviare un I-Search
- Cw to yank the word (s) a partire dal punto
- uno o più di questi
- Cs per trovare la corrispondenza successiva
- più Cs per trovare poi partite
- RET per uscire dalla I-ricerca nella parte più recenti match
- o un gruppo di Cg per tornare all'origine l di partenza posizione
Ecco un andare a integrandolo in I-Search (richiamato tramite C-s e C-r; utilizzare C-h kC-s per informazioni su 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))))
integrandolo in I-ricerca trae vantaggio dalla sua impostazioni di sensibilità parola corrispondente e casi (C-sM-cC- * sarebbe fare una ricerca tra maiuscole e minuscole sulla parola di cui al punto).
Un modo per mettere tutta questa combinazione di pianoforte in una singola pressione di un tasto più come in vim? – Dfr
Per quanto riguarda l'utilizzo di 'isearch-forward-symbol-at-point' che per impostazione predefinita è associato a' C-s .' – paldepind
@paldepind: Sembra bello; NEWS indica che ha avuto origine in GNU Emacs 24.4 (ottobre 2014). –
Qui è un inizio:
(global-set-key (kbd "C-*") (lambda() (interactive) (re-search-forward (format "\\b%s\\b" (thing-at-point 'word)))))
Prova CsCw
Questa è una risposta errata. Presuppone che il punto sia all'inizio della parola mentre * la funzione super star * di Vim può essere utilizzata da qualsiasi parte all'interno della parola. –
se si sta utilizzando Viper (che funziona alla grande) questo dovrebbe funzionare abbastanza simile:
(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)
In questi giorni c'è anche Smart Scan, un pacchetto aggiuntivo leggero che fornisce questa funzionalità.
È disponibile da MELPA; le istruzioni per aggiungere MELPA all'elenco di package-archives
abilitato sono here.
Per installarlo:
Mxpackage-install
RETsmartscan
RET
È quindi possibile attivarlo tramite
(global-smartscan-mode t) ;; Turn on Smart Scan globally
Le associazioni dei tasti di default per la ricerca in avanti e indietro sono Mn e M-p, rispettivamente.
PS: Se siete interessati, il post sul blog originale introduzione di questo pacchetto è here.
non lo sapevo in VIM. Cool :) –
possibile duplicato di http://stackoverflow.com/questions/589691/how-can-i-emulate-vims-search-in-gnu-emacs –
Sono d'accordo è un duplicato, ma è più facile da trovare per un utente vim che conosce il comando come super star. L'altra risposta non menziona mai la parola "stella" che ha reso difficile per me trovare. – mmrobins