2010-01-31 7 views
6

मैं इस तरह कुछ उपयोग करता हूं: 1,40 fo लेकिन मुझे लगता है कि यह सबसे प्रभावी तरीका नहीं है।एचटीएमएल, जावास्क्रिप्ट और सीएसएस के लिए विम में आपकी पसंदीदा फोल्डिंग विधि (या गुप्त तकनीक) क्या है?

आपका क्या है?

उत्तर

8

मैं foldmethod=marker का उपयोग करता हूं और <!-- {{{ --> और <!-- }}} --> दर्ज करने के लिए मैपिंग करता हूं जहां मैं गुना शुरू करना और समाप्त करना चाहता हूं। मैं की तरह उद्घाटन ब्लॉक टैग के साथ लाइन पर शुरू मार्कर डाल:

<div id="topmenu"> <!-- {{{ --> 

इसलिए जब यह मुड़ा हुआ है मैं तुरंत देखो क्या गुना अतिरिक्त टिप्पणी जोड़ने के लिए आवश्यकता के बिना होता है।

सीएसएस के लिए यह और भी आसान है, मैं बस foldmarker={,} का उपयोग करता हूं और सभी परिभाषाओं को स्वचालित रूप से तब्दील कर दिया जाता है जो मुझे सभी वर्गों, टैग्स और आईडी की एक बहुत ही स्पष्ट सूची दिखाता है जो मुझे उनकी आवश्यकता होने पर ही खोल सकता है।

/* vim: set fdm=marker fmr={,}: */ 

तुम भी नेत्रहीन क्षेत्र आप गुना और zf प्रेस यदि आप पसंद करना चाहते हैं चुन सकते हैं: असल में मेरे सभी सीएसएस फ़ाइलों अंत में इस लाइन की है।

+0

है कि अच्छा लगता है कि कैसे आप के लिए अलग अलग foldmarkers स्थापित किया था की तरह एचटीएमएल और सीएसएस दोनों? – alexchenco

+0

फ़ोल्डमार्कर्स अलग हैं क्योंकि मैं HTML और CSS को अलग-अलग फ़ाइलों में सख्ती से रखता हूं। –

+0

/* vim: fdm = marker fmr = {,}: */<--- यह इस पंक्ति के साथ व्यक्तिगत सीएसएस फ़ाइल के लिए विम की तह विधि विधि को कॉल करता है? – alexchenco

3

बेस्ट तह एचटीएमएल के लिए vim के लिए विधि: use haml instead। सीएसएस के लिए सर्वश्रेष्ठ विकल्प: use sass instead

मैं वास्तव में गंभीर हूँ। वे इसे और अधिक कॉम्पैक्ट बनाते हैं।

+1

प्रश्न का उत्तर नहीं, लेकिन अच्छे विचार। जिज्ञासा से, एसएएसएस और एचएएमएल के लिए विम में सिंटैक्स हाइलाइटिंग और फोल्डिंग सपोर्ट क्या है? – Jay

+0

अरे एचएएमएल और एसएएसएस बहुत अच्छा लग रहा है! क्या बहुत से लोग उनका उपयोग कर रहे हैं? – alexchenco

+0

दुर्भाग्यवश दुर्भाग्य से अन्य लेखकों द्वारा लिखित फ़ाइलों को संपादित करने की समस्या का समाधान नहीं होगा। – michael

5

मैं अपने vimrc में इंडेंट और इस के साथ मार्कर के बीच फ्लिप ..

let g:FoldMethod = 0 
map <leader>ff :call ToggleFold()<cr> 
fun! ToggleFold() 
    if g:FoldMethod == 0 
     exe 'set foldmethod=indent' 
     let g:FoldMethod = 1 
    else 
     exe 'set foldmethod=marker' 
     let g:FoldMethod = 0 
    endif 
endfun 

इंडेंट सबसे सजा एचटीएमएल के लिए ठीक काम करता है, लेकिन मैं दस्तावेजों की सामग्री शैली तह की बड़ी कथात्मक तालिका के लिए मार्कर का उपयोग करें। फ़ाइल किसने लिखा था, इस पर निर्भर करता है कि एक दूसरे से बेहतर काम करेगा ताकि आपको दोनों की त्वरित पहुंच की आवश्यकता हो।

+1

आप इसके बजाय 'if & foldmethod ==' marker 'की जांच करके वैश्विक चर के बिना ऐसा कर सकते हैं। – eswald

1

मैं foldmethod=ignore का इस्तेमाल किया है लगभग विशेष रूप से।

" Default foldmethod 
" Similar to fdm=indent, but lets blank and comment lines default high. 
set fen fdm=expr fdi= 
set foldexpr=EswaldFoldLevel(v:lnum) 

function! EswaldFoldLevel(lnum) 
    let ignored = '^\s*\([#/*]\|$\)' 
    if getline(a:lnum) !~ ignored 
    " In the general case, just use the indent level. 
    " It would be nice if it didn't skip several levels... 
    return indent(a:lnum)/&sw 
    endif 

    let previndent = 0 
    let prevnum = a:lnum - 1 
    while prevnum > 0 
    if getline(prevnum) =~ ignored 
     let prevnum = prevnum - 1 
    else 
     let previndent = indent(prevnum)/&sw 
     break 
    endif 
    endwhile 

    let nextindent = 0 
    let maxline = line('$') 
    let nextnum = a:lnum + 1 
    while nextnum <= maxline 
    if getline(nextnum) =~ ignored 
     let nextnum = nextnum + 1 
    else 
     let nextindent = indent(nextnum)/&sw 
     break 
    endif 
    endwhile 

    return max([previndent, nextindent]) 
endfunction 

(क्षमा वाक्य रचना हाइलाइटिंग के बारे में ...)

: लेकिन, मेरा इच्छा लाइनों डिफ़ॉल्ट उच्च ऊपर की या लाइनों तह के नीचे स्तर तक, कम करने के बजाय नजरअंदाज किया है के लिए, निम्न प्रेरित

मैं का उपयोग करें कि एक कस्टम प्लगइन के रूप में, दे व्यक्तिगत फ़ाइल प्रकारों इसे ओवरराइड। उदाहरण के लिए, पाइथन, पिछली पंक्तियों को देखना नहीं चाहता, केवल निम्नलिखित के बाद।

संबंधित मुद्दे