Gdy programujemy warto jest czasem schować kawałek kodu, np. gettery i settery w klasach Javy. Vim oferuje taką funkcjonalność. Aby ją włączyć musimy wykonać dwa kroki:
Pierwszym jest uruchomienie foldowania:
1 2 |
:set foldenable |
Drugim krokiem jest wybranie logiki zagnieżdżania, a jest ich kilka:
manual
– samodzielnie definiujemy gdzie tekst ma byż zagnieżdżany,indent
– zagnieżdżanie zależne od poziomu wcięcia,expr
– zagnieżdżanie zależne od wyrażenia regularnego,diff
– różnice pomiedzy dwoma plikami definiują zagnieżdżenia,syntax
– zagnieżdżanie zależne od semantyki typu pliku (np. w ruby, javie są to klasy, metody, pętle.marker
– zagnieżdżanie w miejscach oznaczonych specjalnym markerem (także jest to definiowalne)
Gdy już wybierzemy (dla programistów prawdopodobnie będzie to metoda syntax
to wydajemy komendę :
1 2 |
:set foldmethod=syntax |
Automatycznie powinno nam zagnieździć tekst, np. 8 linijkowa metoda slug
w ruby zostanie schowana a w tym miejscu zostanie wyświetlona linijka:
1 2 |
+--- 8 lines: def slug----------------------------------------- |
Co najważniejsze foldowanie może być zagnieżdżone.
Funkcje związane z foldowaniem
Wszystkich komend związanych z tą funkcjonalnością jest ok. 20. Postaram się opisać chociaż najważniejsze z nich.
Wszystkie komendy związane z foldowaniem rozpoczynają się od literki z
wpisywanej w trybie normalnym.
zi
– zmiana funkcjo foldowania włączone/wyłączone (tak samo jak użycie :set foldenable)
za
– zmienia stan foldingu z otwartego na zamknięty i odwrotnie,
zc
– zwija zagnieżdżenie,
zo
– rozwija zagnieżdżenie,
zd
– usuwa zagnieżdżenie,
zA
, zC
, zO
i zD
– analogicznie jak powyższe, z tym że działają rekursywnie
liczbazF
– tworzy zagnieżdżenie od obecnej linijki , ilość linijek zagnieżdżonych określone jest liczbą
czyli np. 12zF
otworzy zagnieżdżenie z 12 linijek zaczynając od obecnej
zf
– tworzy zagnieżdżenie od obecnej linijki do miejsca określonego wskaźnikiem ruchu
czyli zf2j
zaczyna zagnieżdżenie w obecnjej linijce a kończy w linijce, w której wylądujemy wykonując ruch 2j (jj ) czyli dwie niżej.
Poruszanie się po zagnieżdżeniach
zj
– przejście na początek następnego zagnieżdżenia
zk
– przejście na koniec poprzedniego zagnieżdżenia
zm
– przejście do zagnieżdżenia wyżej (w przypadku hierarchicznych)
zr
– przejście do zagnieżdżenia niżej w hierarchii,
zM
– przejście do zagnieżdżenia na najwyższym poziomie
To wszystko, należy tylko dodać że tworzenie i usuwanie zagnieżdżeń są dostępne, gdy ustawimy metodą zagnieżdżania na manulaną.
PS. Dobrze tłumaczę folding jako zagnieżdżanie? bo nie podoba mi się ;)
.