salir pegar guardar cómo copiar con comandos comando borrar archivo vim word-wrap

pegar - Comando vim para reestructurar/forzar texto a 80 columnas



guardar en comando vi (6)

Sé que hay formas de establecer automáticamente el ancho del texto en vim utilizando set textwidth (como las preocupaciones de diseño de columna de Vim 80 ). Lo que estoy buscando es algo similar a = (el comando de línea de sangría) pero para ajustarlo a 80. El caso de uso es que a veces edita texto con ancho de texto y, después de unir líneas o eliminar / agregar texto, queda mal ajustado.

Idealmente, este comando reorganizaría completamente las líneas que seleccioné y cortaré las líneas largas mientras las agregué. Un ejemplo:

long line is long! short

Después de ejecutar el comando (asumiendo que la envoltura fue de 13 cols):

long line is long! short

Si esto no es posible con un comando vim verdadero, tal vez hay un programa de línea de comandos que hace esto a través del cual puedo canalizar la entrada?

Después de buscar encontré esta referencia que tiene algunas opciones más: http://www.cs.swarthmore.edu/help/vim/reformatting.html


Casi siempre uso gq en modo visual. Les digo a mis alumnos que significa "Gentlemens ''Quarterly", una revista para gente fastidiosa.


Establezca el textwidth en 80 ( :set textwidth=80 ), muévase al inicio del archivo (se puede hacer con Ctrl - Inicio o gg ), y escriba gqG .

gqG formatea el texto a partir de la posición actual y hasta el final del archivo. Se unirá automáticamente líneas consecutivas cuando sea posible. Puede colocar una línea en blanco entre dos líneas si no desea que esas dos se unan.


Gracias a un comentario de DonaldSmith, encontré esto, ya que la opción de ancho de texto no reformateaba mi larga línea de texto (estaba convirtiendo el juego con conversiones de hex a byte):

:%!fold -w 60

Eso reformó todo el archivo (que era una línea para mí) en líneas de longitud 60.


La solución de Michael es la clave, pero la mayoría de las veces encuentro que quiero reformatear el resto del párrafo actual; para este comportamiento, usa gq} .


Puedes usar gq con cualquier operador de movimiento. Por ejemplo, si solo desea volver a formatear hasta el final de la línea actual (es decir, para ajustar la línea en la que se encuentra el cursor) puede usar gq$

También puede reformatear seleccionando texto en modo visual (usando `v y moviéndose) y luego escribiendo gq.

Hay otras opciones para forzar que las líneas se ajusten también.

Si desea que vim ajuste sus líneas mientras inserta texto en ellas en lugar de tener que esperar hasta el final para reestructurar el texto, encontrará útiles estas opciones:

:set textwidth=80 :set wrapmargin=2

(No te dejes llevar por el wrap y el linebreak , que solo reformatea el texto que se muestra en la pantalla y no cambia el texto en el búfer)


Si está buscando una forma no Vim , siempre están los comandos UNIX fmt y par .

Notas:

  • No puedo comentar sobre Unicode, puede o no comportarse de manera diferente.
  • @nelstrom ya ha mencionado el uso de par en su webcast.

Así es como usaríamos ambos para su ejemplo.

$ echo -e ''long line is long!/nshort'' > 3033423.txt $ cat 3033423.txt long line is long! short $ fmt -w 13 3033423.txt long line is long! short $ par 13gr 3033423.txt long line is long! short

Para usar desde dentro Vim:

:%! fmt -w 13 :%! par 13gr

También puede configurar :formatprg a par o fmt y anular gq . Para obtener más información, llame a :help formatprg inside Vim.