2012-08-15 22 views
5

Kiedy przeglądam długie pliki kodu z pełnymi komentarzami w Vimie, chciałbym móc załadować pliki z komentarzem złożonym, ale wszystko inne się rozłożyło. Obecna konfiguracja składane mam w .vimrc jest:Składanie komentarzy tylko wtedy, gdy plik jest otwierany w Vim

set foldmethod=syntax 
set nofoldenable 

W ten sposób, gdy chcę zacząć robić fałdy, mogę po prostu zacząć realizować z poleceń. Ale czy istnieje sposób na składanie tylko komentarzy (bloków)?

Odpowiedz

6

Można wykonać polecenie globalne, aby zamknąć cały komentarz blokowy fałdy:

:g/^\/\*/foldc 

ten będzie wykonywał :help foldclose na każdej linii zaczynającej się /* (wspólny wskaźnik komentarz blok). Zauważ, że w tym przypadku trzeba ewakuować znaki / i *. Nie musisz uciec z /, jeśli używasz innego ogranicznika (np. :g#^/\*#foldc). Jeśli chcesz, aby to się stało automatycznie, możesz dodać go do autokomendy. Na przykład:

set fdm=syntax fen 
augroup closeCommentFolds 
    au! 
    au FileType javascript %foldo | g/^\/\*/foldc 
    au FileType ruby %foldo | g/^=begin/foldc 
augroup end 

zauważyć, że w tych przykładach ^ postać w regex określa, że ​​/* i mecze są na początku wiersza. Jeśli chcesz dopasować, czy istnieje odstęp między początkiem linii a meczem, użyj ^\s* zamiast ^. %foldo otworzy wszystkie zakładki, aby ustawić foldenable, ale nie złoży wszystkiego (tylko komentarze w tym przypadku).

+0

To jest świetne ansewr. Dużo się nauczyłem. Jednak nie zadziałało to po wyjęciu z pudełka. Musiałem zrobić "... ustawić fen | % foldopen | % g ^/\ * @ wywołanie SilentFold() ', gdzie' SilentFold' jest funkcją, którą zdefiniowałem, aby pomijać błędy fałdowe dla linii, w których używany jest styl '/*...*/', chociaż nie jest to komentarz bloku (tak, sprzeciwiam się, ale nie napisałem kodu) i używam 'normalnego zc'. Jeśli zauważysz, że to, co zrobiłem, poprawia post, możesz z niego skorzystać. (To zbyt szczegółowe, również chciałbym wiedzieć dlaczego.) +1 Dziękuję! –

+0

Właściwie moja odpowiedź również zachowuje się dziwnie ... to składanie rzeczy, które nie są komentarzami, tj. '{...}' bloków. –

+0

@Kazark ok, przepraszam za zamieszanie. Uważam, że moja zaktualizowana odpowiedź działa teraz idealnie. Daj mi znać. – Conner