Vim

2012-08-15 35 views
5

içinde dosya açıldığında yalnızca açıklamaları katla Vim'deki ayrıntılı yorumlarla uzun kod dosyalarını görüntülerken, dosyaları katlanmış olan yorumlarla birlikte yükleyebilmeyi, ancak her şeyin açılmasını istiyorum. Ben benim .vimrc sahip akım katlama konfigürasyonu: Ben kıvrımlar yaparak başlamak istediğinizdeVim

set foldmethod=syntax 
set nofoldenable 

Bu şekilde, sadece z komutlarını çalıştırmaya başlayabilirsiniz. Ama sadece (blok) yorumları katlamanın bir yolu var mı?

cevap

6

Tüm blok yorumunu kapatmak için küresel bir komutu yürütebilir kıvrımlar: Bu /* (ortak blok yorum göstergesi) ile başlayan herhangi bir hat üzerinde :help foldclose çalıştırır

:g/^\/\*/foldc 

. Bu örnekte / ve * öğelerinin kaçırılması gerektiğine dikkat edin. Farklı bir sınırlayıcı kullanıyorsanız (:g#^/\*#foldc) /'dan kurtulmanıza gerek yoktur. Bunun otomatik olarak gerçekleşmesini istiyorsanız, bunu bir autocommand'a ekleyebilirsiniz. Bu örneklerde regex ^ karakter /* ve maçlar satırın başında olduklarını belirttiğini

set fdm=syntax fen 
augroup closeCommentFolds 
    au! 
    au FileType javascript %foldo | g/^\/\*/foldc 
    au FileType ruby %foldo | g/^=begin/foldc 
augroup end 

Not: Örneğin. Maçın başlangıcı ile maç arasında boşluk varsa, ^ yerine ^\s* kullanın. %foldo, foldenable öğesinin ayarlanması için tüm katlamaları açacaktır, ancak herşeyi katlamaz (yalnızca bu durumda yorumlar).

+0

Bu büyük bir ansewr. Çok öğrendim. Ancak, kutudan işe yaramadı. Ben yapmak zorundaydım ... set fen | % katopen | % g ^/\ * @ call SilentFold() ', burada' SilentFold', bir blok yorumu olmasa bile '/*...*/' stilinin kullanıldığı satırların katlama hatalarını bastırmak için tanımladığım bir işlevdir (evet, itiraz ediyorum ama kodu yazmamıştım) ve 'normal zc' kullanmaktadır. Ayrıca, yaptığım şeyin yayını geliştirdiğini bulursanız, ondan çizim yapmaktan çekinmeyin. (Bu çok mantıklı ve nedenini bilmek de merak ediyorum.) +1 Teşekkür ederim! –

+0

Aslında benim cevabım garip bir şekilde davranıyor ... yorumlamayan şeyleri katlıyor, yani {...} bloklar. –

+0

@Kazark tamam, karışıklık için özür dilerim. Güncellenmiş cevabımın artık mükemmel çalıştığına inanıyorum. Bilmeme izin ver. – Conner