2011-11-24 16 views
9

C'è un analogo per inserire la parola dopo punto nella query isearch premendo C-w dopo C-s ma per le query di sostituzione stringa (e sostituisci regexp)?Emacs: Inserisci parola al punto nella stringa di sostituzione stringa

Mi piace anche la modifica di Sacha Chua di C-x inserimento parola intera intorno al punto in isearch:

http://sachachua.com/blog/2008/07/emacs-keyboard-shortcuts-for-navigating-code/

Anche questo sarebbe davvero utile in alcuni casi se potesse essere utilizzato in sostituzione di stringa.

Sarei molto grato per eventuali suggerimenti! Grazie!

risposta

7

Questo lo farà, anche se non è sofisticato come Cw in isearch perché non si può continuare a colpire quella chiave per estendere la selezione:

(defun my-minibuffer-insert-word-at-point() 
    "Get word at point in original buffer and insert it to minibuffer." 
    (interactive) 
    (let (word beg) 
    (with-current-buffer (window-buffer (minibuffer-selected-window)) 
     (save-excursion 
     (skip-syntax-backward "w_") 
     (setq beg (point)) 
     (skip-syntax-forward "w_") 
     (setq word (buffer-substring-no-properties beg (point))))) 
    (when word 
     (insert word)))) 

(defun my-minibuffer-setup-hook() 
    (local-set-key (kbd "C-w") 'my-minibuffer-insert-word-at-point)) 

(add-hook 'minibuffer-setup-hook 'my-minibuffer-setup-hook) 

EDIT: Si noti che questo è nel minibuffer standard, in modo che si può utilizzare usarlo ovunque ci sia una richiesta minibuffer, ad esempio in grep, verificare, ecc

+0

Grazie per la risposta rapida! Questo è decisamente abbastanza vicino e ha il vantaggio di essere più generale! Grazie! – user673592

2

due risposte:

  1. Replace+ preleva automaticamente il testo al punto come valore predefinito quando si invocano i comandi di sostituzione.

  2. Più in generale, Icicles fa qualcosa di simile al codice di scottfrazer (sopra), ma è più generale. In qualsiasi momento, in qualsiasi minibuffer, puoi colpire M-. (per impostazione predefinita) per raccogliere il testo ("cose") al punto e inserirlo nel minibuffer. È possibile ripetere questo, per (a) raccogliere successive cose (es parole) della stesso tipo, ad accumularne come Cw non per iSearch, o (b) raccogliere alternativa, differenti cose punto. Altre spiegazioni here.

Problemi correlati