2010-04-30 13 views
25

Surround.vim è un'estensione vim elegante che consente di circondare blocchi di testo con parentesi quadre, parentesi graffe e praticamente qualsiasi carattere "surround" arbitrario. Supporta i paragrafi e le parole surround, ma lo uso spesso in modalità visiva. Mi diverto con Emacs e mi chiedo se c'è qualcosa di simile; qualcosa che mi consentirà di evidenziare una regione e quindi di includere la regione marcata (o il rettangolo) racchiusa tra parentesi graffe, parentesi o etichette.Esiste un'estensione o una modalità in Emacs simile a surround.vim?

+1

Abbastanza correlati: http://stackoverflow.com/questions/1023770/automatically-closing-braces-in-emacs – Chow

+0

Ho finito per utilizzare Vimpulse-surround: https://github.com/timcharper/vimpulse-surround. el – Chow

+2

_edit_ [Evil-surround] (https://github.com/timcharper/evil-surround) è il nuovo vimpulses-surround. – Chow

risposta

28

Forse wrap-region è quello che serve.

smartparens è un'altra opzione eccellente se necessità di avvolgere qualcosa con delimitatori, tag, ecc

+0

Sì, questo funziona benissimo! Grazie mille! – Chow

+0

Corral (https://github.com/nivekuil/corral) è appena uscito che fa anche questo. – Squidly

+0

Si noti che il modello di utilizzo di Corral è diverso e non sembra onorare il wrapping della selezione. –

-2

Quindi, si desidera selezionare una regione o simili e quindi creare una casella attorno ad essa come se fossero le varie modalità per i commenti? Credo che emacs-wiki (http://www.emacswiki.org/) abbia qualche arte ascii-line (e anche uno strumento figlet) che lo farà. Ricerca di scatola, piuttosto, line art ...

############################ 
#       # 
# I AM REGION, WE ARE MANY # 
#       # 
############################ 
+0

no ............. – aehlke

1

Non so di alcun modo di fare che in Emacs, nemmeno con un modulo.

mio Elisp è un po 'arrugginito, acquistare qui è una semplice funzione che racchiudono l'area corrente (testo marcato) o una parola con le virgolette ("):

 
(defun insert-quotes() 
    "Inserts quotes (\") around the current region or work." 
    (interactive) 
    (let (start end bounds) 
    (if (and transient-mark-mode mark-active) 
     (setq start (region-beginning) 
       end (region-end)) 
     (progn 
     (setq bounds (bounds-of-thing-at-point 'symbol)) 
     (setq start (car bounds) 
       end (cdr bounds)))) 
    (goto-char start) 
    (insert "\"") 
    (goto-char (+ end 1)) 
    (insert "\""))) 
4

Non credo che ci sia qualcosa di costruito in per i tag, ma per parens si può fare M- ( per le staffe/bretelle/citazioni si potrebbe fare:.

(global-set-key (kbd "M-[") 'insert-pair) 
(global-set-key (kbd "M-{") 'insert-pair) 
(global-set-key (kbd "M-\"") 'insert-pair) 

si noti che se non si dispone di una regione evidenziata, sarà sufficiente inserire la coppia di whatevers e metti il ​​cursore tra t orlare. Anche a portata di mano per l'eliminazione di whatevers Matching è

(global-set-key (kbd "M-)") 'delete-pair) 

Se si desidera inserire coppie di tag, che sia una semplice elisp:

(defun my-insert-tags (tag) 
    (interactive "sTag: ") 
    (if (region-active-p) 
     (let ((beg (region-beginning))) 
     (save-excursion 
      (goto-char (region-end)) 
      (insert "</" tag ">") 
      (goto-char beg) 
      (insert "<" tag ">"))) 
    (insert "<" tag ">") 
    (save-excursion 
     (insert "</" tag ">")))) 
8

Io uso evil-surround. Emula il comportamento di Vim, ma sfortunatamente potrebbe non essere ciò che la maggior parte degli utenti di emacs desidera poiché richiede la modalità vim evil. Tuttavia, potrebbe essere o non essere giusto per te dal momento che hai fatto riferimento a surround.vim in primo luogo.

evil-surround sembra supportare la maggior parte delle funzionalità di Surround.vim, compresi i dintorni di modifica.

Problemi correlati