2012-10-11 40 views
8

CONTEXTO: Parte de un trabajo que estoy haciendo consiste en pegar párrafos de texto de un documento de Word en un archivo de ruby.Al usar vim, ¿hay algún comando para que el texto pegado quede automáticamente en línea?

PROBLEMA: Estos párrafos se pegan como una sola línea de texto muy larga y tengo que insertar manualmente nuevas líneas para hacer las líneas de longitud razonable.

SOLUCIÓN: ¿Hay alguna manera de hacer que la función de pegado sea "consciente" de límites razonables de margen y ajustar el texto cuando lo pego?

+1

¿Desea ajustar el texto, como mantenerlo en una línea larga pero hacerlo visible, o dividir el texto en algún límite arbitrario, digamos 70 caracteres? – AlG

+0

@Al G Quiero un límite arbitrario, de tamaño razonable, alrededor de 70 caracteres suena razonable –

Respuesta

12

primero hacer una serie textwidth

:set tw=80 

luego hacer gqq - para una sola línea

para todo el archivo

ggVGgqq 
+5

'gggqG' es un movimiento poco * vimmish *. Tratar de evitar el modo visual es un buen ejercicio: D – lucapette

4

Claro que se puede hacer esto con:

:set wrap

Esto mostrará el texto como envuelta sin alterar la estructura subyacente o insertar saltos de línea. A veces es también útil:

:set linebreak

Esto hace que vim para envolver sin romper palabras.

También es posible:

:set wrapmargin

que establece en qué medida en la envoltura derecha debe comenzar.

+0

': set wrap' en realidad no lo hace si el texto pegado ya tiene saltos de línea internos. No serán reformateados, y terminarás con algunas líneas cortas. –

+1

@MichaelBerkowski El OP indica que el texto aparece como una "única línea de texto muy larga" que sugiere que los saltos de línea internos no serán un problema. – Benj

+0

@Benj Estos no solo hacen que el texto se ajuste "visualmente", pero no estructuralmente. Mis disculpas si la publicación no estaba clara, pero quiero que esa única línea de texto se divida en varias líneas de texto separadas, por ejemplo, cómo se ve el párrafo en el documento de Word. –

4

vi, vim y gvim apoyar el 'ex' comandos de nivel:

:set ws wm=10 

que establece un margen de alineación de 10 caracteres desde el borde derecho e impone un "análisis de envolvente": ajuste automático a medida que escribe. Sin embargo, esto no funcionará para pegar el texto. Para eso, existe el comando 'fmt', que es nativo de Unix/Linux y se suministra en Cygwin y GnuWin32 (ver How do I get fmt-like functionality for Vim in Windows?) ..

El comando "fmt" proporciona un filtro para reformatear texto existente con saltos de palabra, y acepta un indicador numérico (por ejemplo, "-80") para especificar el ancho de línea. Puede invocar esto desde el editor vim, después de pegar en las líneas largas.

lo hace:

!!fmt 

volver a formatear una línea larga (atajo de teclado para el ex comando ":.! FMT")

O, para rewrap un párrafo entero:

!}fmt 

desde la primera línea del párrafo.

Esto debería ahorrarle algo de tiempo.

3

que normalmente tienen una necesidad de importar el texto y luego tener que envuelva todo el documento: que utilizo:

:g/./normal gqq

Espero que ayude.

Cuestiones relacionadas