OSX में विम: पेज-अप / पेज-डाउन कैसे करें / टर्मिनल में खोली गई विम फ़ाइल के माध्यम से ईओएल पर जाएं?


28

पोटीन में, जो कि मैंने मुख्य रूप से VIM का उपयोग किया है, मैं निम्नलिखित कार्य कर सकता हूं:

  • पेज अप / डाउन: नेटिव पेज अप / डाउन की का उपयोग करना। मैक में, विकल्प Fn + Up / Down है, जो टर्मिनल में काम नहीं करता है (विम फ़ाइल के अंदर स्क्रॉल नहीं करता है, लेकिन टर्मिनल बफर को स्क्रॉल करता है)
  • इसी तरह, Fn + दाएं / बाएं कुंजी लाइन के शुरू / अंत करने के लिए मुझे नहीं लेते हैं

मैं मैक ओएस एक्स में इस कार्यक्षमता का अनुकरण कैसे करूं?


यह आपके प्रश्न को स्पष्ट करने में मदद कर सकता है यदि आपने "होम / एंड" के साथ "एफएन + राइट / लेफ्ट" को प्रतिस्थापित या संवर्धित किया है, जो कि एफएन संयोजन करते हैं।
क्रिस पेज

जवाबों:


48

यह विशेष रूप से एक मैक सवाल नहीं है, यह वास्तव में एक vi सवाल है।

नेविगेशन मोड में, ctrl-f एक पृष्ठ को स्क्रॉल करता है और ctrl-b एक पृष्ठ को स्क्रॉल करता है (सोचें "F" ओरवर्ड और "B" ack)। Ctrl-d आधे पृष्ठ को नीचे स्क्रॉल करता है, और ctrl-u को आधा पृष्ठ ऊपर स्क्रॉल करता है।

^ आपको एक पंक्ति की शुरुआत में ले जाता है, और $ अंत तक। मुझे पता है, मुझे पता है, लेकिन उसके ऐतिहासिक कारण हैं।

यहाँ vi नियंत्रण पर एक बहुत अच्छा धोखा-पत्र है। vi थोड़ा छोटा है, लेकिन एक बार जब आप इसे आंतरिक करते हैं, तो यह दुनिया का सबसे तेज और सबसे पतला टेक्स्ट एडिटर है।


1
"यह विशेष रूप से एक मैक सवाल नहीं है, यह वास्तव में एक vi सवाल है।" यह ज्यादातर मैक ओएस एक्स टर्मिनल एप्लिकेशन के कीमैप को सेट करने के तरीके के बारे में है, लेकिन यह पता चलता है कि लाइन के शुरू / अंत के बारे में सवाल का दूसरा हिस्सा, पहले से ही टर्मिनल में मैपिंग है और एक संभावित समाधान vi के नक्शे को संपादित करना है इसे समझिए। वैकल्पिक रूप से, टर्मिनल कीबोर्ड मैप को संपादित किया जा सकता है।
क्रिस पेज 1

16

टर्मिनल की डिफ़ॉल्ट प्राथमिकताएँ Shift- Page Upऔर Shift- Page Downचरित्र दृश्यों के लिए जो विम ( ESC [ 5 ~और ESC [ 6 ~) को स्क्रॉल करने ( और ) जैसे कार्यक्रमों को बताते हैं ।

यदि आप चाहते हैं कि ये कुंजियाँ बिना Shiftमोडिफायर के वर्ण क्रम भेज सकें , तो आप कीबोर्ड मैप को कस्टमाइज़ कर सकते हैं:

टर्मिनल> वरीयताएँ> सेटिंग्स> [प्रोफ़ाइल]> कीबोर्ड

यदि आप ऐसा करते हैं, तो मैं आपको Shiftशिफ्ट किए गए और अप्रकाशित कुंजी के लिए मैपिंग स्वैप करके इन कुंजियों के लिए संशोधक के अर्थ को पलटने की सलाह देता हूं , ताकि वैकल्पिक व्यवहार अभी भी उपलब्ध हैं। इसके अलावा, देखें मेनू देखें , जिसमें स्क्रॉलिंग कमांड हैं जो Commandसंशोधक का उपयोग करते हैं ताकि वे टर्मिनल कीबोर्ड मैप की परवाह किए बिना उपलब्ध हों।

इसी तरह, Shift- Homeऔर Shift- Endको वर्तमान लाइन ( ESC [ Hऔर ESC [ F) के प्रारंभ / अंत में जाने के लिए मैप किया जाता है । इन दृश्यों को बाश द्वारा समझा जाता है, लेकिन आपको उन्हें समझने के लिए विम को अनुकूलित करना पड़ सकता है, या विशेष रूप से विम के लिए मैपिंग को संपादित करना होगा। विम, एमाक्स और कुछ अन्य प्रोग्राम टर्मिनल को "एप्लिकेशन कर्सर मोड" में डालने के लिए एक एस्केप सीक्वेंस भेजते हैं, जहां होम / एंड कीज भेजते हैं ESC O Hऔर ESC O F, लेकिन टर्मिनल (10.9 तक) इस व्यवहार को लागू नहीं करता है। तो आप इन अन्य कोड को भेजने के लिए कीबोर्ड मैप को बदलना चाह सकते हैं (बैश भी उन्हें समझता है)। (अन्य OSes पर, Homeऔर Endलाइन के प्रारंभ / अंत के लिए उपयोग किया जाता है, इसलिए टर्मिनल उन्हें Shiftसमरूपता के लिए संशोधक प्रदान करता है।)

Control- Left Arrowऔर Control- Right Arrowभी डिफ़ॉल्ट रूप से "लाइन के शुरू / अंत" दृश्यों के लिए मैप किए जाते हैं, हालांकि वे मैप किए गए Shift- Homeऔर Shift- से अलग होते हैं End। इसके बजाय, वे Emacs- और बैश-संगत दृश्यों के लिए मैप किए जाते हैं ESC [ 5 Dऔर ESC [ 5 C। मान लें कि ये Vim द्वारा उपयोग में नहीं हैं, तो सबसे सरल तरीका यह है कि Vim को कस्टमाइज़ किया जाएगा, ~ / -vimrc का उपयोग करके।

ध्यान दें कि MacOS के अधिक-हाल के संस्करणों में, टर्मिनल नहीं रह गया है के लिए स्पष्ट मैपिंग है Homeऔर Endडिफ़ॉल्ट रूप से वरीयताओं में। इसके बजाय, इसमें एक गतिशील व्यवहार होता है जहां वैकल्पिक स्क्रीन सक्रिय होने पर चाबियाँ स्वचालित रूप से शुरू / समाप्त होने के लिए मैप करती हैं - जैसे, ईमैक, वीआईएम, स्क्रीन या टीएमयूएक्स जैसे पूर्ण-स्क्रीन अनुप्रयोग का उपयोग करते समय। मुख्य स्क्रीन पर शेल जैसे लाइन-ओरिएंटेड प्रोग्राम का उपयोग करते समय, वे टर्मिनल व्यू को डिफ़ॉल्ट रूप से स्क्रॉल करना जारी रखते हैं। Shiftसंशोधक व्यवहार उलट।


@MarkHu मैंने आखिरी पैराग्राफ में कवर किया।
क्रिस पेज

जैसा कि पिछले पैराग्राफ में आंशिक रूप से कवर किया गया है, चूक MacOS के अन्य संस्करणों में अलग / गायब हो सकते हैं। 10.13.6 के लिए, मुझे पेजडाउन \033[5~/ अप के लिए (और ... 6) जोड़ना था ।
मार्कहु

2

सबसे आसान और सबसे अच्छा समाधान है n+ , जहाँ nआप नीचे जाने के लिए लाइनों की संख्या है, और नीचे की कुंजी है।

मैं नियमित रूप से सिर्फ 12+ और 22+ करता हूं


1

मुझे होम / एंड के लिए इन्सर्ट मोड में लाइनों की शुरुआत और अंत करने के लिए इस्तेमाल किया गया था (विंडोज में उपयोग से और मुझे लगता है कि लिनक्स), जिसका मैक समर्थन नहीं करता है। यह विशेष रूप से कष्टप्रद है क्योंकि जब मैं रिमोट सिस्टम पर विम का उपयोग कर रहा हूं, तो मैं भी आसानी से नहीं कर सकता। कुछ दर्दनाक परीक्षण और त्रुटि के बाद, मैं कुछ .vimrcपंक्तियों के साथ आया, जो एक ही काम करते हैं, और अंततः किसी और व्यक्ति को मिला जो एक समान समाधान के साथ आया था:

https://coderwall.com/p/fd_bea

का आनंद लें।

:inoremap <C-e> <C-o>$
:inoremap <C-a> <C-o>0
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.