emacs - usar - unir dos hilos de nylon
Por Emacs, ¿cómo unir dos líneas en una? (12)
"¿Cómo podría hacer que se revierta sin UNDO?":
(defun toggle-fill-paragraph ()
;; Based on http://xahlee.org/emacs/modernization_fill-paragraph.html
"Fill or unfill the current paragraph, depending upon the current line length.
When there is a text selection, act on the region.
See `fill-paragraph'' and `fill-region''."
(interactive)
;; We set a property ''currently-filled-p on this command''s symbol
;; (i.e. on ''toggle-fill-paragraph), thus avoiding the need to
;; create a variable for remembering the current fill state.
(save-excursion
(let* ((deactivate-mark nil)
(line-length (- (line-end-position) (line-beginning-position)))
(currently-filled (if (eq last-command this-command)
(get this-command ''currently-filled-p)
(< line-length fill-column)))
(fill-column (if currently-filled
most-positive-fixnum
fill-column)))
(if (region-active-p)
(fill-region (region-beginning) (region-end))
(fill-paragraph))
(put this-command ''currently-filled-p (not currently-filled)))))
(global-set-key (kbd "M-q") ''toggle-fill-paragraph)
Soy nuevo en Emacs. He buscado en Google esto, pero no hay una buena respuesta allí. Uno de ellos es Ctrl-n Ctrl-a Retroceso Esto funciona pero es estúpido. ¿Hay una manera rápida y sencilla de unir un bloque de líneas en una sola línea?
En realidad, puedo usar Esc-q para rellenar automáticamente un párrafo ahora, pero ¿cómo puedo hacer que se revierta sin UNDO?
Coloque el punto en cualquier lugar de la última línea del grupo de líneas que necesita unirse y llame
M-^
Repetidamente hasta que todas las líneas se fusionen.
Nota: Deja un espacio entre todas las líneas ahora unidas.
De EmacsWiki: Desplegar Párrafo
;;; Stefan Monnier <foo at acm.org>. It is the opposite of fill-paragraph
(defun unfill-paragraph (&optional region)
"Takes a multi-line paragraph and makes it into a single line of text."
(interactive (progn (barf-if-buffer-read-only) ''(t)))
(let ((fill-column (point-max))
;; This would override `fill-column'' if it''s an integer.
(emacs-lisp-docstring-fill-column t))
(fill-paragraph nil region)))
Debido a que join-line
dejará un espacio entre dos líneas, también solo admite unir dos líneas. En caso de que desee unir muchas líneas sin un espacio, puede utilizar el modo "buscar-reemplazar" para resolver, de la siguiente manera:
-
C-%
- Consulta: entrada
Cq Cj
Enter
- Reemplazar:
Enter
- Ejecutar el reemplazo.
Enter
Hecho.
El nombre convencional de Emacs para "unirse" es "relleno". Sí, puedes unir dos líneas con M-^
, y eso es útil, pero más generalmente querrás unir n
líneas. Para esto, vea los comandos de fill*
, como fill-region
fill-paragraph
, etc.
Vea this para obtener más información sobre cómo seleccionar cosas que luego se pueden llenar.
Me gusta la forma en que el texto sublime une la línea con el comando J, así que lo hago de esta manera:
(defun join-lines (arg)
(interactive "p")
(end-of-line)
(delete-char 1)
(delete-horizontal-space)
(insert " "))
Podría definir un nuevo comando para esto, ajustando temporalmente el ancho de relleno antes de usar el comando Esc-q:
;; -- define a new command to join multiple lines together --
(defun join-lines () (interactive)
(setq fill-column 100000)
(fill-paragraph nil)
(setq fill-column 78)
)
Obviamente, esto solo funciona, si su párrafo tiene menos de 100000 caracteres.
Solo reemplaza las nuevas líneas con nada.
Uso la siguiente función y la vinculo a ''M-J''.
(defun concat-lines ()
(interactive)
(next-line)
(join-line)
(delete-horizontal-space))
Si prefieres mantener la posición del cursor, puedes usar save-excursion .
Los cursores múltiples combinados con M ^ ^ colapsarán todas las líneas seleccionadas en una con todos los espacios en blanco extraños eliminados.
Por ejemplo, para seleccionar un búfer completo, invocar el modo de cursores múltiples, colapsar en una línea y luego deshabilitar el modo de cursores múltiples:
C-x h
M-x mc/edit-lines
M-^
C-g
Mx join-line
unirá dos líneas. Sólo atarlo a una pulsación de tecla conveniente.
La forma más sencilla de todas:
- Seleccione párrafo / líneas por
Mh
oC-SPC
- Presione
Mq
- ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Emags Magic