स्क्रीन के एक चौथाई (25%) को ऊपर या नीचे स्क्रॉल करें


15

मुझे अक्सर लगता है कि एक पूरा पृष्ठ बहुत अधिक छोटा है, आधा पृष्ठ बहुत अधिक है, लेकिन एक चौथाई पृष्ठ ही सही है। मैं वर्तमान में इसे तीर कुंजी को दबाकर कर रहा हूं।

मैं पृष्ठ का 25% नीचे और ऊपर आसानी से कैसे स्क्रॉल करूं?


1
इस उत्तर में पार किए गए फ़ंक्शन की जांच करें: stackoverflow.com/a/3102890
Sundeep

जवाबों:


20

हो सकता है ctrldऔर ctrluहो सकता है कि तुम क्या देख रहे हो। डिफ़ॉल्ट रूप से वे स्क्रीन के आधे भाग को हिलाते हैं।

से :h CTRL-D:

बफर में नीचे की ओर स्क्रॉल विंडो। लाइनों की संख्या 'स्क्रॉल' विकल्प (डिफ़ॉल्ट: आधा स्क्रीन) से आती है।

यदि [गणना] दी गई है, तो पहले 'स्क्रॉल' विकल्प को [गिनती] पर सेट करें।

जिसका अर्थ है कि पहली बार जब आप एक विंडो में स्क्रॉल करना चाहते हैं तो आप कर सकते हैं XXctrldजहां XX आपकी विंडो में लाइनों की संख्या का 25% है। जैसा कि यह scrollXX मूल्य पर सेट होता है आप तब उपयोग कर सकते हैं ctrldऔर ctrluस्क्रीन के 25% को स्थानांतरित कर सकते हैं।

इसके अलावा, मुझे लगता है कि :h scrollingयह आपके लिए दिलचस्प हो सकता है।


संपादित करें

और यहाँ एक समारोह के साथ एक और समाधान है और कुछ मैपिंग आपके लिए जोड़ने के लिए .vimrc:

function! ScrollQuarter(move)
    let height=winheight(0)

    if a:move == 'up'
        let key="\<C-Y>"
    else
        let key="\<C-E>"
    endif

    execute 'normal! ' . height/4 . key
endfunction

nnoremap <silent> <up> :call ScrollQuarter('up')<CR>
nnoremap <silent> <down> :call ScrollQuarter('down')<CR>

फ़ंक्शन को वर्तमान विंडो की ऊंचाई मिलेगी, और इसके पैरामीटर के अनुसार स्क्रीन को एक चौथाई ऊंचाई तक या नीचे स्क्रॉल करेगा।

मैपिंग फ़ंक्शन को कहेंगे, पहला ऊपर जाने के लिए और दूसरा नीचे जाने के लिए।

बेशक, आप बदल सकते हैं <up>और <down>कुछ अन्य चाबियाँ करने के लिए आप अपने तीर कुंजी के डिफ़ॉल्ट व्यवहार को रखना चाहते हैं।


2
ऐसा लगता है कि इसका उपयोग करने के लिए ctrl-Eऔर ctrl-Yमैपिंग में अधिक समझदारी हो सकती है , क्योंकि a)। फिर आपके पास 1/2 पृष्ठ और 1/4 पृष्ठ स्क्रॉलिंग के लिए अलग-अलग शॉर्टकट हैं। ख)। ctrl-U/ ctrl-Dका व्यवहार सुसंगत है और इस बात पर निर्भर नहीं है कि आपने पहले मैपिंग का उपयोग किया है या नहीं।
रिच

मुझे आपका महत्वपूर्ण नोट समझ में नहीं आ रहा है। आप मैन्युअल रूप से दर्ज करने का क्या मतलब है? वर्तमान में इसका उपयोग करने से पृष्ठ को स्थानांतरित करने के बजाय एक पंक्ति हट जाती है।
लुई होंग

@LouisHong लाइन let key="^U"को दोहरे उद्धरण चिह्नों के बीच का भाग देखें जिसका अर्थ है कुंजी कोड का प्रतिनिधित्व करना ctrl+u। इसलिए यदि आपने फ़ंक्शन को कॉपी किया है तो अपने कर्सर को ci"उद्धरणों की सामग्री को संशोधित करने के लिए पहले दोहरे उद्धरण हिट पर डालें और उसके ctrl+vबाद ctrl+uलाइन पर उसी पर हिट करें let key="^D"
statox

@ रीच: हाँ यह एक अच्छी बात है। मैंने तीर कुंजियों का उपयोग किया क्योंकि यही ओपी ने कहा कि उन्होंने इस्तेमाल किया लेकिन आपकी बात प्रासंगिक है।
statox

@statox आपने मुझे गलत समझा! (मैं स्पष्ट नहीं था)। मैं let key="^Y"इसके बजाय उपयोग करना चाहता था let key="^U"। यह समान व्यवहार बनाएगा लेकिन 'scroll'सेटिंग को प्रभावित किए बिना ।
रिच

3

आप उपयोग कर सकते हैं ctrleऔर ctrlyऊपर और नीचे एक लाइन द्वारा पेज स्थानांतरित करने के लिए।

फिर यदि आप +/- 25% ले जाना चाहते हैं तो आप उपयोग कर सकते हैं 20ctrleऔर यह आपको 20 लाइनों को नीचे ले जाएगा।

यहाँ एक अच्छा समझाया गया प्रश्न भी है जो आपके लिए उपयुक्त है: /programming/3458689/how-to-move-screen-without-moving-cursor-in-vim


3

मैंने स्टैटोक्स दृष्टिकोण को चर दिया, इसलिए यह लाइनव्रेप्स पर अधिक सुसंगत है। यदि आप एक चौथाई चरण चाहते हैं, तो 0.618 को वापस 0.25 या जो भी हो, बदल दें।

function! ScrollGolden(move)
    let height=winheight(0)
    if a:move == 'up'
        let prep='L'
        " let key="^Y"
        let key='gk'
        let post='zb'
    elseif a:move == 'down'
        let prep='H'
        " let key="^E"
        let key='gj'
        let post='zt'
    endif
    execute 'normal! ' . prep . float2nr(round(height*0.618)) . key . post
endfunction
nnoremap <silent> <BS>    :call ScrollGolden('up')<CR>
nnoremap <silent> <Space> :call ScrollGolden('down')<CR>

0

यदि आपका सामान्य सामान्य उत्तर चाहता है और सटीक 25% नहीं है तो आप सामान्य पृष्ठ संख्या को 25 से विभाजित करके कुछ सिस्टम मैपिंग सेट कर सकते हैं। उदाहरण के लिए, यदि आपके पास एक समय में स्क्रीन पर आमतौर पर लगभग 100 लाइन होती है, तो उसमें से 25% 25 लाइनें होती हैं, ताकि आप अपनी राजधानी J और K जैसी किसी चीज़ की मैपिंग जल्दी से ऊपर और नीचे की 25 पंक्तियों पर कर सकें।

noremap J 25j
noremap K 25k

अगर आपकी इच्छा पूरी फाइल के क्वार्टर मार्क पर कूदने की है तो सामान्य मोड में टाइप करें:

25%

1
मुझे लगता है कि आपके समाधान के साथ दो कमियां हैं: इस प्रकार noremap J 25jमूल्य को हार्डकोड करता है 25उदाहरण के लिए जब आप क्षैतिज रूप से 100 लाइनों की खिड़की को विभाजित करते हैं तो आपकी मैपिंग वास्तव में 50% नई विंडो नेविगेट करेगी। आपके दूसरे विकल्प के बारे में :25%मुझे नहीं पता था कि यह अस्तित्व में है लेकिन मेरे परीक्षणों से ऐसा लगता है कि यह कर्सर को पहली पंक्ति के आधार पर स्थिति में रखता है: अगर मेरे पास 100 लाइनें बफर हैं और मैं 25% आगे बढ़ना चाहता हूं तो टाइपिंग :25%मुझे लाएगा। लाइन 25 पर कोई फर्क नहीं पड़ता कि मेरा कर्सर कहां था। इसके अलावा, क्या आप इस विषय का वर्णन करने में सहायता विषय डाल सकते हैं, जिसे मैं इसे डॉक्स में नहीं पा सकता हूँ?
statox

1
मैं पर सहायता विषय पाया :h N%:-)
statox
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.