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:

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ę :

Automatycznie powinno nam zagnieździć tekst, np. 8 linijkowa metoda slug w ruby zostanie schowana a w tym miejscu zostanie wyświetlona linijka:

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