vim emacs surround

¿Hay una extensión o modo en Emacs similar a surround.vim?



(7)

Surround.vim es una ingeniosa extensión vim que te permite rodear bloques de texto con corchetes, llaves y casi cualquier carácter arbitrario "surround". Es compatible con el párrafo y la palabra envolvente, pero con frecuencia lo uso en modo visual. Estoy jugando con Emacs y me pregunto si hay algo similar; algo que me permitirá resaltar una región y luego tener la región marcada (o rectángulo) rodeada de llaves, corchetes o etiquetas.


Entonces, ¿desea seleccionar una región o similar y luego hacer un recuadro a su alrededor como lo hacen varios modos para hacer comentarios? Creo que emacs-wiki ( http://www.emacswiki.org/ ) tiene algo de arte de línea (y también una herramienta de figlet) que hará eso. Buscando cuadro, bastante, arte de línea ...

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


No conozco ninguna forma de hacerlo en Emacs, ni siquiera con un módulo.

Mi Elisp está un poco oxidado, compre aquí una función simple que incluirá la región actual (texto marcado) o palabra con comillas ("):

(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 "/"")))


No creo que haya nada incorporado para las etiquetas, pero para los parens puedes hacer M- ( para corchetes / llaves / comillas puedes hacer:

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

Tenga en cuenta que si no tiene una región resaltada, simplemente insertará el par de elementos y colocará el cursor entre ellos. También es útil para eliminar whatevers coincidentes es

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

Si desea insertar pares de etiquetas, es una simple 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 ">"))))



Yo uso evil-surround . Emula el comportamiento de vim, pero desafortunadamente no es lo que la mayoría de los usuarios de emacs quieren ya que requiere el mal modo vim. Sin embargo, puede o no ser adecuado para usted, ya que hizo referencia a surround.vim en primer lugar.

evil-surround parece ser compatible con la mayoría de las funciones de Surround.vim, incluida la modificación de entornos.


Tal vez wrap-region es lo que necesitas.

Smartparens es otra excelente opción si es necesario envolver algo con delimitadores, etiquetas, etc.