2012-05-04 26 views
6

पर जाने पर स्वचालित रूप से फोल्ड का विस्तार करें लाइन नंबर पर जाने पर कोड को प्रकट करने का कोई तरीका है? उदाहरण के लिए, मैं :35 टाइप करता हूं जहां लाइन 35 को फोल्ड किया गया है, तो मुझे उस अनुभाग को मैन्युअल रूप से उस पंक्ति में आने के लिए मैन्युअल रूप से प्रकट करना होगा। मैं :35 टाइप करना चाहता हूं और फिर वह कोड स्वचालित रूप से प्रकट हो गया है और मेरे कर्सर को बिना किसी और महत्वपूर्ण प्रेस के लाइन 35 पर रखा गया है।लाइन नंबर

उत्तर

7

आप :35 के बजाय 35G आदेश का उपयोग करें, तो आपको निम्न मानचित्रण के साथ इस लक्ष्य को हासिल कर सकते हैं: इस उदाहरण में, मैं \जीzचुना :35 स्वयं, यह हासिल करना मुश्किल होगा। आपको :cmap <expr> के माध्यम से के माध्यम से टाइप करना होगा, टाइप किए गए कमांड को getcmdtype() और getcmdline() के माध्यम से जांचें, और यदि यह संख्या है, तो कमांड में हेरफेर करें, यानी normal! zv इसमें संलग्न करें; इस तरह:

cmap <expr> <CR> getcmdtype() == ':' && getcmdline() =~ '^\d\+$' ? 'normal! zv<CR>' : '<CR>' 
2

zv:help zv से:

View cursor line: Open just enough folds to make the line in 
    which the cursor is located not folded. 

इस आदेश शायद किसी तरह से स्वचालित रूप से चालू किया जा सकता है, मैं अभी तक यह भर में नहीं आए हैं। जैसा कि कमांड का उपयोग करना है, ने मुझे अच्छी तरह से सेवा दी है।

+0

इसे ': au कर्सर मोड * में जोड़कर: सामान्य zv' को चाल चलनी चाहिए। – MaienM

+0

@MailenM: जो भी आप आगे बढ़ते हैं, वह 'j'/'k' के साथ आगे बढ़ने पर भी खुल जाएगा - मुझे संदेह है कि यह उपयोगी है। –

0

एक नया कमांड मैपिंग परिभाषित करें।

"[count]G  Also open fold under cursor when supplying [count] (i.e. 
"    jumping to a particular line, not the end of the 
"    buffer). Use [count]|gg| if you don't want this. 
nnoremap <expr> G (v:count ? 'Gzv' : 'G') 

के लिए:

:nmap \gz gg<Bar>zO 
संबंधित मुद्दे