W vim, ja zazwyczaj ustawiony foldmethod
do indent
większości typów plików. Ogólnie rzecz biorąc, lubię otwierać pliki przy otwartych wszystkich fałdach. Jednak warto zacząć od razu, zmaby zacząć zamykać foldery globalnie w pliku, jeden poziom na raz, pozwalając mi zobaczyć ogólną strukturę pliku bez przeszkadzania szczegółom.
Jedynym ogólnym rozwiązaniem, jakie znalazłem, jest ustawienie foldlevelstart
bardzo wysokiej liczby, np. 99, aby mieć pewność, że wszystkie pliki (pamiętając, że różne pliki będą miały różne poziomy maksymalnego wcięcia) zaczną się całkowicie rozwinięte. Jednak musiałbym wtedy używać zmwielokrotnie, aby zmniejszyć foldlevel
do maksymalnego poziomu zagięcia pliku, zwykle znacznie poniżej 99, co jest kłopotliwe i niepraktyczne. Mógłbym ustawić foldlevel
ręcznie za pomocą wiersza polecenia vim, ale nadal muszę znać maksymalne wcięcie w pliku.
Czy istnieje praktyczny sposób otwarcia pliku z foldlevel
ustawieniem dokładnie o jeden więcej niż maksymalny aktualny poziom wcięcia / złożenia w samym pliku?
Na przykład biorąc pod uwagę następujący plik:
a
b
c
d1
d2
e
f1
f2
Pierwsze naciśnięcie klawisza zmpokazuje:
a
b
c
+-- 2 lines: d1------
e
+-- 2 lines: f1------
(Należy jednak pamiętać, że powinno to działać w ogólnym przypadku, w którym początkowe maksymalne wcięcie pliku może mieć dowolną wartość).
źródło
zr
zzm
; ten ostatni zmniejsza poziom składania.zm
= fold więcej (odejmij poziom fold) izr
= fold mniej (dodaj poziom fold)Odpowiedzi:
Znajduje najwyższy poziom folderu w bieżącym pliku:
Aby ustawić to automatycznie, możesz użyć
:autocmd
:źródło
foldlevelstart
nie ma takiej opcji.foldlevel
ma wartość 0 ifoldlevelstart
wynosi -1 po uruchomieniu pliku z tymi ustawieniami.Zamiast używać
zr
, użyjzR
, który otworzy wszystkie fałdy. PodobniezM
zamknie wszystkie fałdy.źródło
zR
(ustawić najwyższy poziom na folderze), a następniezm
zadziała. To tylko jeden dodatkowy krok.Ta opcja
set nofoldenable
pozwala rozpocząć plik z otwartymi wszystkimi fałdamiźródło