Configurar en qué columna `gq` se ajusta?

9

De forma predeterminada, el uso gqcon un comando de movimiento ajusta el texto descrito por el comando de movimiento a 79 columnas. (Soy relativamente nuevo en vi/ vimpor lo que no conozco la terminología correcta). ¿Cómo puedo configurar el recuento de columnas para que, en cambio, se ajuste a un número diferente de columnas?

Por ejemplo, supongamos que tengo este texto:

This is text for illustration.

Me gustaría poder configurar la columna de ajuste a 29 para que si mi cursor está en la línea y lo ejecuto gqipse transforme en:

This is text for
illustration.

Estoy usando gVim en Ubuntu GNOME 17.04, si eso hace la diferencia.


EDITAR: Estoy buscando una manera de ajustar manualmente ciertas secciones de texto a la longitud de línea dada sin afectar a ninguna otra, porque hay algunos casos en los que estoy de acuerdo en pasar el límite. Para ampliar el ejemplo anterior, si mi documento se ve así:

This is text for illustration.

This is some other text for illustration.

Y corro gqipcon mi cursor en la primera línea, me gustaría obtener:

This is text for
illustration.

This is some other text for illustration.

Luego, si empiezo a escribir en una nueva línea debajo de esa, me gustaría que esa línea no se vea afectada de manera similar por el límite.

Mi caso de uso es escribir documentos LaTeX: me gustaría poder ajustar párrafos de prosa a un cierto número de columnas a pedido, pero en ciertos casos donde escribo ecuaciones largas o tablas, quiero que esas líneas permanecer más tiempo que el límite.

jdw1996
fuente

Respuestas:

6

Usted puede hacer esto mediante la creación textwidthy la eliminación tde formatoptions.

set textwidth=29
set formatoptions-=t

También debe tener la qopción habilitada en su formatoptionspara usar gq. Parece que siempre está activado para mí, pero es posible que desee agregar un set formatoptions+=qpara estar en el lado seguro.

No debería ser un problema con su caso de uso actual, pero la copción ajusta automáticamente los comentarios, así que si no lo desea, hágalo set formatoptions-=c.

Para más información ver:

:help formatoptions " Not much info.
:help fo-table      " All the options in detail.
Gibraltar
fuente
0

Hay dos formas de hacer esto: establecer 'textwidth'el ancho del texto en caracteres o columnas; ajuste 'wrapmargin'al ancho del margen derecho en caracteres o columnas. Por ejemplo, para ajustar su texto a un ancho de 29 caracteres o columnas:

set textwidth=29

Ver

:help 'textwidth`
:help 'wrapmargin'
:help 10.7
garyjohn
fuente
Gracias por su respuesta, pero esto no es exactamente lo que estaba buscando. Quiero poder ajustar manualmente algunas secciones de texto sin afectar a otras. Para mí, ambas opciones envuelven automáticamente el nuevo texto que ingreso. Actualizaré la pregunta para explicar mejor esto.
jdw1996
Vim no tiene una forma integrada de hacerlo. El gqcomando no permite establecer el ancho de ajuste por invocación; sigue textwidthy se textwidthaplica a todo el búfer, no solo a ciertas líneas. Si está de acuerdo con envolver manualmente las secciones que desea envolver, podría escribir una función que: guardaría el valor actual de textwidth; puesto textwidtha 29; actuar gqen las líneas seleccionadas; restaurar el valor de textwidth. Luego asigne esta función a formatexpr. Alternativamente, puede usar un programa externo como fmtformatear líneas seleccionadas.
garyjohn
OK veo. Me ocuparé de escribir esa función. ¡Gracias!
jdw1996