2010-04-26 13 views
8

Estoy escribiendo un documento LaTeX en vim, y tengo un envoltorio duro de 80 caracteres para facilitar la lectura. Sin embargo, esto causa problemas con el seguimiento de cambios en el control de versiones. Por ejemplo, la inserción de "Lorem ipsum" al principio de este texto:Vim, LaTeX, ajuste de texto y control de versión

1 Dolor sit amet, consectetur adipiscing elit. Phasellus bibendum lobortis lectus 
2 quis porta. Aenean vestibulum magna vel purus laoreet at molestie massa 
3 suscipit. Vestibulum vestibulum, mauris nec convallis ultrices, tellus sapien 
4 ullamcorper elit, dignissim consectetur justo tellus et nunc.

resultados en:

1 Lorum ipsum dolor sit amet, consectetur adipiscing elit. Phasellus bibendum 
2 lobortis lectus quis porta. Aenean vestibulum magna vel purus laoreet at 
3 molestie massa suscipit. Vestibulum vestibulum, mauris nec convallis ultrices, 
4 tellus sapien ullamcorper elit, dignissim consectetur justo tellus et nunc.

Cuando reviso este cambio en git, se dice que todas las líneas del párrafo han cambiado debido a la envoltura, aunque solo se ha producido un cambio semántico. Una forma de evitar este problema es tener cada oración en su propia línea. Esto tiene el mismo aspecto en el documento representado, pero la fuente ahora es más difícil de leer, ya que cada línea tiene bastante una longitud de línea diferente:

1 Lorum ipsum dolor sit amet, consectetur adipiscing elit. 
2 Phasellus bibendum lobortis lectus quis porta. 
3 Aenean vestibulum magna vel purus laoreet at molestie massa suscipit. 
4 Vestibulum vestibulum, mauris nec convallis ultrices, tellus sapien ullamcorper elit, dignissim consectetur justo tellus et nunc.

(Si envoltura suave a 80, las cosas todavía se ven malo, sólo de una manera diferente.)

¿Es posible tener mi texto en el disco con una nueva línea por frase, pero mostrar y editar en vim como si el texto de cada párrafo fuera una línea larga, envuelto suavemente en 80 caracteres? Supongo que requiere algo de vim-foo en lugar de ajustar git o LaTeX.

+0

Hmm, vi ese problema antes, creo que su conjetura acerca de la envoltura suave como una solución es correcta, pero no recuerdo dónde encontrar ese "vim-foo" ... –

Respuesta

15

No es necesario introducir políticas de edición raras: la función git que está buscando está utilizando git diff --color-words para revisar los cambios.

+2

¡Gracias! Eso fue mucho más simple de lo que esperaba. – Bkkbrad

+3

Para aclarar, git sigue considerando todas las líneas como modificadas, pero resalta muy bien solo las palabras que se han cambiado. – Bkkbrad

+1

@Bkkbrad: Correcto, solo cambia la forma en que 'diff' te presenta ese cambio. Por cierto, para git, CVS o SVN puede usar la vista diff de 'vim' con el complemento vcscommand (http://code.google.com/p/vcscommand/). Destaca las palabras cambiadas además de los bloques modificados. –

0

creo que es una forma alternativa para cambiar el ancho de la ventana de Vim como lo que hice por lo general:

  1. en un primer momento, se puso "set wrap" en el .vimrc para que el "wrap" característica ;

  2. Para ejecutar vim en un terminal virtual, siempre configuro el ancho de la ventana del terminal como 80 caracteres (como "urxvt -geometry 80x38"). Por lo tanto, cada vez que edito un archivo en vim en el terminal virtual, se ajustará automáticamente cuando una línea contenga más de 80 caracteres.

  3. Si prefiere gvim (gtk-vim, gnome-vim), puede establecer el tamaño de la ventana de gvim agregando una línea en .gvimrc, como "establecer líneas = 38 columnas = 80".

Espero que ayude. :-)

-1

Así resuelvo el problema. En primer lugar usted puede utilizar el comando vim (en estado normal) para buscar el archivo de tex para las líneas de más de 80 caracteres:

/\%81v.\+/ 

se puede definir como una macro a fin de no recordar los comandos. A continuación, se escribe en el estado normal

nF a 

(es decir, un poco de "n", una letra mayúscula "M", un espacio "", un poco "a", un "Enter", y a). Esto te ayuda a romper tu línea suavemente después de algunas palabras.Puede grabar estos cinco golpes de tecla como una macro (cómo: en estado normal, presione "qa" para comenzar a grabar y simplemente siga los pasos "nF a" y luego presione Esc y "q" para detener. Cuando juegue, presione "@a" "porque hemos almacenado la macro en" a ". Para reproducir la macro 100 veces (no hace daño si la juegas demasiadas veces, se detiene automáticamente al terminar todo el trabajo) presionando" 100 @ a "en la posición normal estado)

¿Esto resuelve su problema?

+0

Lo siento, eso puede ser útil con el ajuste de palabras en vim, pero eso realmente no aborda mi pregunta acerca de cómo hacer que git comprenda que una sola palabra cambiada no debería afectar a un párrafo entero cuando hay un envoltorio rígido. ¡Gracias por pensar en el problema! – Bkkbrad

+0

De alguna manera me gusta el ajuste de palabras porque creo (a pesar de que tal vez sienta que los párrafos son difíciles de leer), no solo resuelve su problema sino que también facilita el trabajo futuro como doblar códigos y parches de correo electrónico a través de gmail (gmail envuelve una sola línea en modo texto si es demasiado largo, por lo que si enviaste tus parches puede haber problemas). Además de todo esto, creo que el sistema LaTeX alienta a las personas a envolver párrafos largos, ya que solo trata un salto de línea como un espacio en blanco. ¿Qué piensas? –