Vim katlama hakkında kafa karışıklığı - nasıl devre dışı bırakılır?


116
  1. Dosyayı açtığımda şuna benziyor: görüntü açıklamasını buraya girin hatta buna görüntü açıklamasını buraya girin
  2. Tüm kıvrımları açtığımda, başka bir tampona gidip geri döndüğümde tekrar kapanıyorlar.
  3. Onunla çalışabilmek için, zRbir tampon açarken her seferinde başvurmam gerekiyor .

Bunları şurada kurdum .vimrc:

set foldlevelstart=99
set foldlevel=99

Lütfen bana katlamayı nasıl devre dışı bırakacağımı veya en azından başka bir tampona navigasyonu açılmış olanları kapatmamak için yapın.


2
Vim'i ilk başlatırken, koşun :set foldlevelve :set foldlevelstartneye ayarlandıklarını görün. İlk tahminim, bu değerlerin bir yerde sıfırlanmasıdır. Bu değerleri vimrc'ime eklediğimde, her şey beklendiği gibi çalışıyor.
cledoux

Yanıtlar:


209

Yalnız değilsin.

set nofoldenable    " disable folding

7
Bunun vimdiff'i etkilemediğini unutmayın. Vim bir fark penceresi oluşturduğunda, foldenableseçeneği geçersiz kılıyor gibi görünüyor . Bulduğum tek geçici çözüm, contextalt seçeneğini diffoptgerçekten çok büyük bir şeye ayarlamak . örneğin:set diffopt+=context:99999
Laurence Gonsalves

14
öyleydi vim-markdown . Vim-markdown ile katlamayı devre dışı bırakmak için şunu kullanınlet g:vim_markdown_folding_disabled=1
BenjaminGolder


2
Aşağıdaki glts çözümünü daha çok seviyorum: katlanabilir hale getirmek için 'zi' kullanın. Vim ile ilgili birkaç BÜYÜK problemden biri, hatırlanması gereken çok sayıda şeydir. 'Katlanabilir' yerine 'zi' gibi küçük şeyler tanrı tarafından gönderilir!
Thierry

1
benim için çalışmıyor gibi görünüyor :( python kodu hala katlanmış.
weima

55

Katlamayı anında devre dışı bırakmanın (ve etkinleştirmenin) en kolay yolu zi.

zi'foldenable'gibi , geçiş yapan normal mod komutudur :set foldenable!.

Kısaltma "kat i nvert". Bakın :h zi.


44

set nofoldenableKatlamayı devre dışı bırakmak için ~ / .vimrc dosyanıza ekleyin .


@Magnus: Bu vimdiff, aynı olan birçok satırı göstermekten kaçınmak için kasıtlı olarak yapılır . Kullanım durumu farklıdır, bu nedenle nofoldenable. zRtüm kıvrımları açar; Katlanmayı engelleyen bir ayar bilmiyorum vimdiff. (
Katlanmanın

16

İşte katlamanın neden harika olduğunu kısaca ve özlü bir şekilde özetleyen bir makale . Tek satırlık neden, katlamanın çok büyük dosyalarda gezinmeyi çocuk oyuncağı haline getirmesidir.

Katlamayı etkin bırakmak istiyorsanız ve her zaman tüm kıvrımlar açıkken başlayın, vim wiki nasıl yapılacağını söyler. İlginizi çeken yöntem muhtemelen otomatik komut yöntemi olacaktır.

" 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

Ayrıca, kullandığınız dil için özel katlama yöntemlerini aramanızı da tavsiye ederim. Basitçe "vim <buraya dil girin> katlama" google'da bir dizi seçenek getirmelidir. Beğendiğiniz bir katlama yöntemi bulana kadar farklı seçeneklerle oynayın.


4

Bu satırı dosyama ekledim .vimrcçünkü aynı sorunu yaşadım:

autocmd FileType * exe "normal zR"

Bu komut, bir dosyayı otomatik olarak her açtığınızda yürütülecektir. Böylece hatayı görmeyeceksiniz ve katlama özelliği de kaybolmayacak)


3

Tartışma noktasına tamamlamak için bir tane daha eklemeniz yeterli.

Kod katlamayı etkinleştirmek için:

:set foldenable veya kısaca :set fen

Kod katlamayı devre dışı bırakmak için:

:set nofoldenable veya kısaca :set nofen

Kod katlamayı etkinleştirdikten sonra, tipik değerlerin bulunduğu zf,zo etcayara göre isteğiniz gibi tüm komutlara sahip olacaksınız.:set fdm=xxxxexpr,syntax,manual etc.


1

Maalesef, ilgili soruyu yanıtlıyorsam, ancak aşağıdaki gibi bir şeyle katlama kapalıyken iki dosyayı görüntülemeyi yararlı buldum:

vim "+set nofen" -O file1 file2

1

Vim, özellikle vimdiff kullanırken katlamayı devre dışı bırakmayı inanılmaz derecede zorlaştırıyor.
Yukarıda belirtilen çözümlerden hiçbiri benim için işe yaramadı, ancak bu işe yaradı (~ / .vimrc'ye ekleyin):

au WinEnter * set nofen
au WinLeave * set nofen

1

Ben set foldlevel=20, foldlevelstart=20ve kullandığım foldmethod=syntax. Vim'de doğru katlama ile çalışmama yardımcı oluyor.

set nofoldenable katlamayı devre dışı bırak ama bazen buna ihtiyacım var

vim.wikia

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.