Jak włączyć i używać zwijania kodu w Vimie?


Odpowiedzi:


40

No nie trzeba umieścić polecenie z tej strony związanej w twojej ~/.vimrc, można po prostu wpisać je po wydaniu :w vimcelu uzyskania wiersza polecenia.

Jeśli jednak wstawisz linie:

set foldmethod=indent   
set foldnestmax=10
set nofoldenable
set foldlevel=2

jak wskazano w podanym linku, ~/.vimrcnie musisz ich wpisywać za każdym razem, gdy chcesz użyć zwijania pliku. set nofoldenableZapewnia, że podczas otwierania, pliki są „normalne”, czyli nie spasował.


Mam kod napisany przez C, więc kurier w jednej z jego funkcji. Naciskam <kbd> esc </kbd>, aby przejść do polecenia, więc po: piszę zc i nic się nie dzieje.
— Mohammad Reza Rezwani,

1
@alex the zc, po którym nie należy pisać :. Wpisujesz setpolecenia po monicie, który pojawia się podczas pisania :. Wpisujesz zc, kiedy możesz swobodnie przesuwać kursor, tak jak byś użył, ztaby uzyskać tekst, który kursor znajduje się na górze bieżącego ekranu.
— Anthon

39

Złożyć domyślnie

Domyślna metoda składania Vima manualoznacza, że ​​fałdy są tworzone ręcznie; w przeciwnym razie, nie ma fałd być zamknięte lub otwarte za pomocą za, zo, lub zc, jak to opisano. Ale możesz utworzyć zakładkę zf{motion}w trybie normalnym lub zfw trybie wizualnym ; np. zfjtworzy zagięcie dla bieżącej linii i następnej następnej w trybie normalnym .

Złożyć indent

Przyjęta odpowiedź @ Antona opisuje, jak ustawić metodę składania na indent; tzn. składanie jest określone przez poziom wcięć.

Złożyć syntax

W bardziej wygodny sposób fałdy mogą być tworzone automatycznie na podstawie składni języka bieżącego bufora. Jeśli używasz języka programowania, nazwijmy go L , a masz składaną definicję L (np. Zainstalowałeś wtyczkę Vim, w której zdefiniowane są informacje o składaniu L ; takie jak c.vim dla C / C ++ lub python -mode dla Python), wystarczy ustawić metodę składania na syntax:

set foldmethod=syntax

Otóż ​​to. Najbardziej przydatne polecenia do pracy z foldami to:

  • zo otwiera zakładkę przy kursorze.
  • zShift+ ootwiera wszystkie fałdy pod kursorem.
  • zc zamyka fałd na kursorze.
  • zmzwiększa foldlevelo jeden.
  • zShift+ mzamyka wszystkie otwarte fałdy.
  • zrzmniejsza foldlevelo jeden.
  • zShift+ rzmniejsza foldleveldo zera - wszystkie fałdy będą otwarte.

14

Nie musisz go używać systematycznie: zazwyczaj ręcznie wybieram fałdy według ruchu lub sekcji. Na przykład składanie akapitu jest zfipi składanie kolejnych 20 wierszy jest zf20j. Służy zado przełączania i zdusuwania.

Wymaga to trochę więcej pracy, ale pozwala, aby twoje składanie odzwierciedlało dane zadanie.


4

Możesz włączyć foldingw bieżącej sesji, np. Odpowiedź @ Anthon. Ale jeśli chcesz, aby była trwała, musisz ustawić przynajmniej tę linię w .vimrcpracy składania:

set foldmethod=indent

indent to rodzaj składania, z którego widać więcej :help foldmethod

'foldmethod' 'fdm'      string (default: "manual")
                        local to window
                        {not in Vi}
                        {not available when compiled without the +folding
                        feature}
        The kind of folding used for the current window.  Possible values:
        fold-manual     manual      Folds are created manually.
        fold-indent     indent      Lines with equal indent form a fold.
        fold-expr       expr        'foldexpr' gives the fold level of a line.
        fold-marker     marker      Markers are used to specify folds.
        fold-syntax     syntax      Syntax highlighting items specify folds.
        fold-diff       diff        Fold text that is not changed.

Teraz za każdym razem, gdy otwierasz plik vim, możesz zobaczyć, że kod jest składany zgodnie z ustawioną metodą. Następnie można użyć za, zc, zo.


Nie ma potrzeby korzystania z vimrc, nigdy tego nie robiłem, ponieważ używam foldowania tylko od czasu do czasu
— Anthon

@Anthon: Och, oczywiście. Dodam więcej informacji do mojej odpowiedzi.
— cuonglm
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.