2010-04-21 22 views
6

Czy istnieje sposób formatowania tekstu w Vim, który uwzględnia podkreślone nagłówki?Vim: zawijanie tekstu ("gq") bez modyfikowania podkreślonych nagłówków

W promocji cenowych, istnieją dwa sposoby pozycjach reprezentujących:

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

i jedynie dla poziomu 1 & 2:

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

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

jestem lubiący stylu podkreślając, jak myślę, że czyta lepszy.

Kiedy komponuję przecen w vim z, powiedzmy, :set textwidth=72 chciałbym móc sformatować cały dokument z gggqG, ale traktuje te podkreślone nagłówki jako ustępach, i ściska je razem na jednej linii. Jeśli więc zacząłem z następujących czynności:

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. 

Po uruchomieniu gq na całym fragmencie, chciałbym skończyć z czymś takim:

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. 

jest jakiś sposób, że mogę zapobiec Vima z formatowaniem podkreślone nagłówki?

Przypuszczam, że musi istnieć rozwiązanie przy użyciu albo formatexpr lub formatprg. Przestudiowałem dokumentację dla par i pomimo tego, że jest bardzo potężne, wygląda na to, że nie jest to jedna z jego funkcji. Zastanawiam się więc, czy istnieje inny program zewnętrzny, który mógłby być użyty z formatprg, który rozumie przecenę, lub jeśli można to osiągnąć, używając vimscript z ustawieniem formatexpr.

Odpowiedz

6

Jedną z opcji, które sorta dzieła jest dodanie podkreślenia ciągów do zmiennej comments.

Jeśli podkreślenia ciągów są stałym rozmiarze, można dodać tylko te:

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

Jeśli są zmiennej wielkości (więcej niż jeden):

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

Korzystanie bardziej than- jeden pozwala na rozpoczęcie akapitu od pojedynczego - lub = i zapobiega dodawaniu kolejnych linii za pomocą ciągu komentarza.

Usunąć powyższe +, aby ustawić komentarze tylko do tych ciągów znaków, zamiast je dodawać.

W niektórych przypadkach formatowanie będzie działać nieoczekiwanie (np. Podkreślenia w kolejnych wierszach). Jestem pewien, że istnieje lepszy sposób na zrobienie tego, ale mam nadzieję, że to pomoże.

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

Ten rodzaj hackish czuje, ale tak długo, jak 'q' flaga jest zawarte w' formatoptions' ustawienie działa dobrze. Moje ciągi podkreślenia zwykle odpowiadają długości tekstu na linii powyżej, więc użyłem ustawienia zmiennej wielkości. Dzięki za pomoc. Oprócz odniesień do pomocy wymienionych w odpowiedzi, stwierdziłem, że jest to pomocne: [': help 30.6'] (http://vimdoc.sourceforge.net/htmldoc/usr_30.html#30.6) – nelstrom

0

Przynajmniej możesz ustawić makro dla niego.

E.g. stanowisko służbowe tekście jakoś w pierwszym akapicie o poszukiwaniu pierwszej zasadniczej-podkreślenia następnie przesunąć w dół 2 linie, następnie visuallí zaznaczyć obszar do następnego podkreślenia minus 3 linii, a następnie sformatować go:

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

Teraz można użyć Twoje makro a.

HTH