2010-04-21 15 views
6

Esiste un modo per formattare il testo in Vim rispettando le intestazioni sottolineate?Vim: testo a capo ("gq") senza modificare le intestazioni sottolineate

In Markdown, ci sono due modi delle voci che rappresentano:

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

e per il livello 1 & 2 solo:

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

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

mi sono appassionato dello stile sottolineatura, come penso si legge meglio.

Quando compongo markdown in Vim con, diciamo, :set textwidth=72, vorrei poter riformattare l'intero documento con gggqG, ma considera queste voci sottolineate come paragrafi, e li stringe insieme su una linea. Quindi, se ho iniziato con il seguente:

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. 

Dopo aver eseguito gq sul l'intero passaggio, vorrei finire con qualcosa di simile:

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. 

C'è un modo che io possa evitare che Vim dalla formattazione le intestazioni sottolineate?

Suppongo che ci sia una soluzione che utilizza formatexpr o formatprg. Ho studiato la documentazione per par, e nonostante sia molto potente sembra che questa non sia una delle sue caratteristiche. Quindi mi chiedo se c'è un altro programma esterno che potrebbe essere usato con formatprg che comprende il markdown, o se questo può essere ottenuto usando invece vimscript con l'impostazione formatexpr.

risposta

6

Un'opzione che SortA funziona è quello di aggiungere le stringhe di sottolineatura alla variabile comments.

Se le corde sottolineatura sono una dimensione fissa, si potrebbe aggiungere solo quelli:

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

Se sono di dimensioni variabili (più di uno):

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

L'utilizzo di più-than- si consente a un paragrafo di iniziare con un singolo - o = e di impedire che le righe successive vengano anteposte alla stringa di commento.

Rimuovere lo + sopra per impostare i commenti solo su quelle stringhe anziché aggiungerle.

Ci sono alcuni casi in cui la formattazione si comporterà inaspettatamente (ad esempio sottolinea su linee consecutive). Sono sicuro che c'è un modo più appropriato per farlo, ma spero che questo ti possa iniziare.

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

Questo sembra un po 'di hacker, ma finché il flag 'q' è incluso nell'impostazione' formatoptions' funziona perfettamente. Le mie stringhe di sottolineatura di solito corrispondono alla lunghezza del testo nella riga sopra, quindi ho usato l'impostazione della dimensione variabile. Grazie per l'aiuto. In aggiunta ai riferimenti di aiuto elencati nella risposta, ho trovato questo utile: [': help 30.6'] (http://vimdoc.sourceforge.net/htmldoc/usr_30.html#30.6) – nelstrom

0

Almeno è possibile impostare alcune macro per questo.

E.g. postion il testo in qualche modo al primo comma, con la ricerca, per la prima headline-underline poi spostarsi verso il basso 2 linee, quindi visuallí selezionare l'area a quella successiva sottolineatura meno 3 linea, quindi formattarlo:

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

Ora è possibile utilizzare la tua macro a.

HTH

Problemi correlati