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ę ;)
.