Frente al párrafo de relleno


25

Emacs tiene la función fill-paragraph. ¿Hay alguna función que haga lo contrario de eso?

Tengo un párrafo que ya está lleno y, en cambio, lo quiero en una sola línea.


1
fill-paragraphno no justificar el párrafo, a menos que utilice un argumento prefijo o pasarle un no- nilprimer argumento. Ver (emacs)Fill Commands .
Dibujó el

Respuestas:


20

Citando de Emacs Wiki , por Stefan Monnier:

Rellenar un párrafo une todas las líneas de un párrafo en una sola línea. Es lo contrario de FillParagraph .

Funciona donde una línea termina con un carácter de nueva línea ("\ n") y los párrafos están separados por líneas en blanco. Para hacer que un párrafo finalice en una nueva línea nueva, use la siguiente función:

;;; It is the opposite of fill-paragraph    
(defun unfill-paragraph ()
  "Takes a multi-line paragraph and makes it into a single line of text."
  (interactive)
  (let ((fill-column (point-max)))
    (fill-paragraph nil)))

Y para vincularlo a una clave:

 ;; Handy key definition
 (define-key global-map "\M-Q" 'unfill-paragraph)

Consulte también UnfillRegion y UnwrapLine .


12
Esta es una copia directa de la página Wiki de Emacs UnfillParagraph , con la atribución del autor (Stefan Monnier) eliminada. Es útil publicar la información aquí, pero al menos aclare quién escribió el código y el enlace a esa página wiki.
Dibujó el

12
Simplemente es cortés agregar atribución cuando usa la información de otra persona.
nicael

2
Gracias a Malabarba por hacer los cambios. @ KingShimkus: nicael explicó por qué esto es mejor.
Dibujó el


1
Tenga en cuenta que el enlace a la fuente ha cambiado. Lo edité en la respuesta.
smonff

4

Mi método sería colocar el cursor en la última línea del párrafo y presionar M-^varias veces.

La belleza de este atajo es que, además de unir líneas, reduce cualquier cantidad de espacios de sangría en uno solo.


AFAIK, puedes hacerlo M-^y solo necesitas mantener presionada la tecla. La función se nombra delete-indentation.
rasmus

¿Para qué es el nombre de la función M-S-^, no parece funcionar para mí?
Sibi

Sí, la función es delete-indentationy el acceso directo se describe en Emacs como M-^- Sagregué shift ( ), porque tienes que mantenerlo de todos modos. Perdon por la confusion.
Rajish

2

Existe el unfillpaquete para esto ahora.

Proporciona comandos para rellenar explícitamente (es decir, desenvolver) párrafos y regiones, y también un comando que alternará entre rellenar y rellenar el párrafo o región actual.

Se basa inicialmente en los ejemplos de Xah Lee y luego se reescribe en base a un artículo de Artur Malabarba

Proporciona lo siguiente:

M-x unfill-region
M-x unfill-paragraph
M-x unfill-toggle
M-x toggle-fill-unfill

Es conveniente agregar una práctica combinación de teclas de su elección como:

(global-set-key (kbd "<f8>") 'toggle-fill-unfill)

¿Puede proporcionar más información sobre este @easyE?
smonff

1
Mi error: el código basado en los ejemplos de Xah Lee no se ha incorporado como parte de Emacs, pero [ se incluye como un paquete MELPA] ( melpa.org/#/unfill ).
easyE

@easyE No entiendo la diferencia entre tu comentario y el contenido de mi respuesta, lo siento.
smonff

No he argumentado que esto sea una diferencia. Me equivoqué al pensar que el paquete de relleno se había incluido en Emacs 25, y luego me corregí.
easyE

1

Como siempre, hay varias formas de hacer esto, así que arrojaré otra respuesta en el ring:

  1. Marcar párrafo: M-h

  2. Consulta reemplazar nueva línea con espacio en la región:

    M-% C-q C-j RET SPC RET !


0

El descuido de un hombre pobre también se puede hacer primero estableciendo el fill-columnvalor ridículamente alto (uso 9999) y luego llenando. Por ejemplo, C-u 9999 C-x f M-q C-u 70 C-x f. (Además, es posible que prefiera C-9 C-9 C-9 C-9a C-u 9999.)


0

En el modo Evil está la Jvinculación de teclas normal modedesde VIM. Se une a la línea de abajo y la línea actual en una línea. Entonces, presionándolo varias veces, puede deshacer el párrafo de relleno.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.