Sé que hay formas de configurar automáticamente el ancho de texto en vim usando set textwidth(como las preocupaciones de diseño de columna Vim 80 ). Lo que estoy buscando es algo similar a =(el comando de línea de sangría) pero para ajustar a 80. El caso de uso es a veces editar texto con ancho de texto y después de unir líneas o eliminar / agregar texto sale mal envuelto.
Idealmente, este comando reorganizaría por completo las líneas que selecciono y cortaría las líneas largas mientras las agrego a las cortas. Un ejemplo:
long line is long!
short
Después de ejecutar el comando (suponiendo que el ajuste era de 13 cols):
long line is
long! short
Si esto no es posible con un verdadero comando vim, ¿tal vez haya un programa de línea de comandos que haga esto al que pueda 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

par. ¡Es fantástico!gq- Trimestral de caballero . (Disculpas por antropomorfizar al hombre, pero el mnemotécnico funciona.)Respuestas:
Establezca
textwidthen 80 (:set textwidth=80), vaya al inicio del archivo (se puede hacer con Ctrl- Homeogg) y escribagqG.gqGformatea el texto comenzando desde la posición actual y hasta el final del archivo. Se unirá automáticamente a 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.fuente
V}gq. De esta manera, verá lo que va a formatear antes de formatearlo.qpor sí mismo?set tw=80lugar deset textwidth=80ahorrar tiemposet textwidth=76sus líneas se ajusten automáticamente mientras escribe. Mi queja es que no hace nada a las líneas existentes que se están editando. PeroV}gqes extremadamente útil en ese sentido.Vingresa al modo de selección visual,}selecciona hasta el siguiente salto de párrafo ygqejecuta el formateador actual en él (o se usagwpara llamar explícitamente al formateador vi). Además,{seleccionará hacia arriba. Puede seleccionar todo el documento y el formato,ggVGgqaunque tal vez haya una manera más fácil. Guarde eso como una macro usando@para hacerlo más fácil. Se usavipgqpara establecer el párrafo actual.La solución de Michael es la clave, pero a menudo encuentro que quiero reformatear el resto del párrafo actual; para este comportamiento, use
gq}.fuente
Se puede usar
gqcon cualquier operador de movimiento. Por ejemplo, si solo desea volver a formatear al final de la línea actual (es decir, para ajustar la línea en la que está el cursor) puede usargq$También puede volver a formatear seleccionando texto en modo visual (usando `v y moviéndose) y luego escribiendo gq.
También hay otras opciones para forzar el ajuste de líneas.
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:
(No se desvía por
wrapylinebreak, que solo formatea el texto que se muestra en la pantalla y no cambia el texto en el búfer)fuente
wrapmarginayuda: cuando 'textwidth' no es cero, esta opción no se usa.Gracias a un comentario de DonaldSmith, encontré esto, ya que la
textwidthopción no formateó mi larga línea de texto (estaba convirtiendo el juego con conversiones de hexadecimal a byte)::%!fold -w 60Eso reformuló todo el archivo (que era una línea para mí) en líneas de longitud 60.
fuente
Si está buscando una forma que no sea Vim , siempre están los comandos UNIX fmt y par .
Notas:
paren su webcast.Así es como usaríamos ambos para su ejemplo.
Para usar desde el interior de Vim:
También puede establecer
:formatprgpar o fmt y anulargq. Para más información, llame:help formatprgdentro de Vim.fuente
Casi siempre lo uso
gqen modo visual. Les digo a mis alumnos que significa "Gentlemens 'Quarterly", una revista para gente fastidiosa.fuente