Nieporozumienia dotyczące składania Vima - jak wyłączyć?


116
  1. Kiedy otwieram plik, wygląda to tak: wprowadź opis obrazu tutaj lub nawet tak wprowadź opis obrazu tutaj
  2. Kiedy otwieram wszystkie fałdy, są one ponownie zamykane, gdy przechodzę do innego bufora i wracam.
  3. Aby móc z nim pracować, muszę za zRkażdym razem aplikować przy otwieraniu bufora.

Mam to ustawione w .vimrc:

set foldlevelstart=99
set foldlevel=99

Wskaż mi, jak wyłączyć zwijanie lub przynajmniej przejść do innego bufora, aby nie zamykać otwartych.


2
Przy pierwszym uruchomieniu vima uruchom :set foldleveli :set foldlevelstartzobacz, na co są ustawione. Domyślam się, że te wartości gdzieś się resetują. Kiedy dodam te wartości do mojego vimrc, wszystko działa zgodnie z oczekiwaniami.
cledoux

Odpowiedzi:


209

Nie jesteś sam.

set nofoldenable    " disable folding

7
Zauważ, że nie ma to wpływu na vimdiff. Kiedy vim tworzy okno różnic, wydaje się nadpisywać tę foldenableopcję. Jedyne obejście, jakie znalazłem, to ustawienie opcji contextpodrzędnej diffoptna coś naprawdę dużego. np .:set diffopt+=context:99999
Laurence Gonsalves

14
to było vim-markdown . Aby wyłączyć spasowanie przez vim-markdown, użyjlet g:vim_markdown_folding_disabled=1
BenjaminGolder


2
Lepiej podoba mi się poniższe rozwiązanie glts: użyj „zi”, aby przełączyć składanie. Jednym z niewielu DUŻYCH problemów z vimem jest ogromna liczba rzeczy do zapamiętania. Małe rzeczy, takie jak „zi” zamiast „składane”, są wysyłane przez Boga!
Thierry

1
wydaje mi się, że nie działa :( kod Pythona jest nadal zwinięty.
weima

55

Najłatwiejszym sposobem wyłączenia (i włączenia) składania w locie jest zi.

zito normalne polecenie trybu, które przełącza się 'foldenable', tak jak :set foldenable!.

Mnemonic: "fold i nvert". Zobacz :h zi.


44

Dodaj set nofoldenabledo swojego ~ / .vimrc, aby wyłączyć zwijanie.


@Magnus: Jest to celowe, vimdiffaby uniknąć pokazywania wielu identycznych wierszy. Przypadek użycia jest inny, więc nie ma na niego wpływu nofoldenable. zRotwiera wszystkie fałdy; Nie wiem o ustawieniu uniemożliwiającym składanie vimdiff. (Ponieważ jest to jedyne miejsce, w którym pasowanie mi nie przeszkadza.)
DevSolar

16

Oto artykuł, który pokrótce i zwięźle podsumowuje, dlaczego pasowanie jest fajne. Jednym z powodów jest to, że składanie sprawia, że ​​nawigacja po bardzo dużych plikach jest dziecinnie prosta.

Jeśli chcesz pozostawić składanie włączone i po prostu zawsze zaczynać z otwartymi wszystkimi fałdami, wiki vima mówi, jak to zrobić . Metodą, która Cię interesuje, byłaby prawdopodobnie metoda autokomendy.

" Tweak the event and filetypes matched to your liking. 
" Note, perl automatically sets foldmethod in the syntax file
autocmd Syntax c,cpp,vim,xml,html,xhtml setlocal foldmethod=syntax
autocmd Syntax c,cpp,vim,xml,html,xhtml,perl normal zR

Poleciłbym również wyszukiwanie niestandardowych metod składania dla używanego języka. Po prostu wygooglowanie „vim <tu wstaw język> składanie” powinno wywołać kilka opcji. Baw się różnymi opcjami, aż znajdziesz metodę składania, którą lubisz.


4

Dodałem ten wiersz do mojego .vimrcpliku, ponieważ miałem ten sam problem:

autocmd FileType * exe "normal zR"

To polecenie zostanie wykonane za każdym razem, gdy automatycznie otworzysz plik. Więc nie zobaczysz błędu, a funkcja składania też nie zostanie utracona)


3

Wystarczy dodać jeszcze jeden, aby zakończyć dyskusję.

Aby włączyć zwijanie kodu:

:set foldenable lub w skrócie, :set fen

Aby wyłączyć zwijanie kodu:

:set nofoldenable lub w skrócie, :set nofen

Gdy włączysz składanie kodu, będziesz mieć wszystkie polecenia, które zf,zo etcchcesz, zgodnie z ustawieniem, :set fdm=xxxxgdzie znajdują się typowe wartościexpr,syntax,manual etc.


1

Przepraszam, jeśli odpowiadam na podobne pytanie, ale okazało się, że przydatne jest wyświetlenie dwóch plików wraz z wyłączonym składaniem z czymś takim:

vim "+set nofen" -O file1 file2

1

Vim sprawia, że ​​niezwykle trudno jest wyłączyć spasowanie, szczególnie gdy używasz vimdiff.
Żadne z powyższych rozwiązań nie zadziałało, ale zadziałało (dodaj do ~ / .vimrc):

au WinEnter * set nofen
au WinLeave * set nofen

1

Ustawić foldlevel=20, foldlevelstart=20i używam foldmethod=syntax. Pomaga mi to w poprawnym składaniu w vimie.

set nofoldenable wyłącz składanie, ale czasami tego potrzebuję

vim.wikia

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.