2012-05-09 19 views

risposta

7

È possibile

  1. salvare una macro di tastiera con C-x(C-e"C-fC-x), risp. C-x(C-eBackspaceBackspaceC-fC-x). Quindi richiamare la macro con C-xe, e, e, e ...
  2. fare una sostituzione regex con M-C-%. Sostituire $ con " per aggiungere un doppio preventivo, sostituire ..$ con niente per eliminare gli ultimi due caratteri.
+1

Oppure, dopo aver registrato la macro, eseguire un C-u n C-x e dove 'n' è il numero di ripetizioni che desidera forse. – SlowLearner

+1

Non ti manca una "C-n" nei macro lì per andare alla riga successiva per preparare la prossima esecuzione della macro? – deong

+0

@deong: hai ragione, grazie. Aggiornato. – choroba

3

Ecco un modo più visivo, vedere i risultati in ogni riga mentre li si digita in una riga.

Grab una copia recente di yasnippet da http://github.com/capitaomorte/yasnippet e aggiungere al vostro .emacs

(require 'yasnippet) 

(defun yas/add-to-end-of-lines-snippet() 
    (interactive) 
    (when (region-active-p) 
    (let ((snippet (replace-regexp-in-string "$" "$1" (buffer-substring (region-beginning) (region-end))))) 
     (delete-region (region-beginning) (region-end)) 
     (yas/expand-snippet snippet)))) 

Ora selezionare una regione e digitare M-x add-to-end-of-lines-snippet.

5

M-xreplace-regexp$" dovrebbe funzionare, ma non sono sicuro se replace-regexp aspetti segno.

+3

Puoi sempre "narrow-to-region" e operare sull'intero buffer ristretto senza il rischio di distruggere linee al di fuori del tuo highlinght originale ('C-x n n' e' C-x n w' per ripristinare il restringimento). – Juancho

+0

'replace-regexp' può essere utilizzato anche per l'altra attività (eliminazione degli ultimi 2 caratteri). Sostituisci "..$ "senza nulla per ottenere questo. – Juancho

Problemi correlati