2010-04-21 14 views
6

¿Hay alguna forma de formatear texto en Vim que respete los títulos subrayados?Vim: texto envolvente ("gq") sin modificar los títulos subrayados

En Markdown, hay dos maneras de las partidas que representan:

#Level 1 heading 
##Level 2 heading 
###Level 3 heading 

y para el nivel 1 & 2 solamente:

Level 1 heading 
=============== 

Level 2 heading 
--------------- 

soy aficionado del estilo subrayado, ya que creo que lee mejor.

Cuando compongo rebaja en Vim con, por ejemplo, :set textwidth=72, me gustaría ser capaz de volver a formatear el documento completo con gggqG, sino que trata a estos encabezados subrayados como párrafos, y les aprieta juntos en una sola línea. Así que si empezaba con lo siguiente:

Lorem ipsum 
=========== 

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 

Después de ejecutar gq en todo el pasaje, me gustaría terminar con algo como esto:

Lorem ipsum =========== 

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod 
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim 
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea 
commodo consequat. 

¿Hay alguna manera de que pueda evitar que Vim de formateo los títulos subrayados?

Supongo que debe haber una solución usando formatexpr o formatprg. Estudié la documentación para par y, a pesar de ser muy potente, parece que esta no es una de sus características. Así que me pregunto si hay otro programa externo que pueda usarse con formatprg que entienda rebaja, o si esto se puede lograr utilizando vimscript con la configuración formatexpr.

Respuesta

6

Una opción que sorta obras es añadir las cuerdas de subrayado a la variable comments.

Si sus cadenas de subrayado son de un tamaño fijo, habría que agregar sólo los que:

:set comments+=:---------------,:=============== 

Si son de tamaño variable (más de una):

:set comments+=n:--,n:== 

El uso de más-que- uno permite que un párrafo comience con un solo - o = y evita que las líneas subsiguientes se antepongan a la cadena de comentarios.

Elimine el + anterior para establecer comentarios solo para esas cadenas en lugar de agregarlas.

Hay algunos casos en los que el formato actuará de forma inesperada (por ejemplo subraya en líneas consecutivas). Estoy seguro de que hay una forma más adecuada de hacerlo, pero espero que esto te ayude a empezar.

:h comments 
:h format-comments 
:h formatoptions 
:h fo-table 
+0

Esto se siente tipo de hacker, pero siempre y cuando el indicador 'q' está incluido en el' formatoptions' establecer que trabaja muy bien. Mis cadenas de subrayado generalmente coinciden con la longitud del texto en la línea superior, por lo que utilicé la configuración de tamaño variable. Gracias por ayudarme Además de las referencias de ayuda enumerados en la respuesta, me pareció que esto sea útil: [ ': ayudar a 30.6'] (http://vimdoc.sourceforge.net/htmldoc/usr_30.html#30.6) – nelstrom

0

Al menos puede configurar algunas macro para ello.

E.g. Postion el texto de alguna manera en el primer párrafo con la búsqueda de la primera titular-underline después se desplazan 2 líneas, entonces visuallí seleccionar el área a la siguiente subrayado menos de 3 líneas, y luego darle formato:

qa/^===========$/jjv/^===========$/-3<CR>gqq 

Ahora puede utilizar su macro a.

HTH

Cuestiones relacionadas