¿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 ">"))))
Sí, hay un clon de surround.vim, desde hace 1 semana: http://github.com/timcharper/vimpulse-surround.el
Requiere vimpulse, que requiere vim. Implementa gran parte de la funcionalidad de surround.vim.
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.
quizás evil-surround es lo que estás buscando.
Gracias.