विम में तीर कुंजियों को कैसे निष्क्रिय करें?


24

मैं घर की पंक्ति पर रहने के लिए तीर कुंजियों का उपयोग करने से अधिक खुद को hjkl का उपयोग करके सिखाना चाहता हूं। और हां, मैं इस बात से अवगत हूं कि किसी को मुख्य नेविगेशन कुंजी के रूप में hjkl का उपयोग नहीं करना चाहिए। फिर भी मेरी आदतें काफी मजबूत हैं और मुझे इस बात का अहसास भी नहीं है कि तीर कुंजियों के लिए उस हाथ आंदोलन किया और मैं इसे खोलना चाहते हैं।

उस आदत को तोड़ने के लिए: मैं तीर कुंजियों को कैसे अक्षम कर सकता हूं ताकि मुझे hjkl या किसी अन्य नेविगेशन विधि का उपयोग करने के लिए मजबूर किया जाए?

एक बोनस के रूप में, यह मददगार होगा यदि कोई संदेश Dont't use this!अभी तक दिखाया गया है कि यह अनिवार्य नहीं है। अगर वे काम नहीं करते हैं, तो मेरे लिए अपनी आदतों पर पुनर्विचार करना काफी भ्रामक होगा।


4
ऐसा करने का कोई मतलब नहीं है; HJKL तीर की तरह ही चूसें।
रोमेनिल

6
मुझे लगता है कि @romainl यह इंगित कर सकता है कि विम के शक्तिशाली गतियों (जैसे wकि अगले शब्द के लिए, }अगले पैराग्राफ के लिए, nअगले खोज परिणाम मैच के लिए, वर्तमान लाइन में fzअगली घटना के लिए z, आदि) का उपयोग करने पर ध्यान केंद्रित करना अधिक महत्वपूर्ण है । एकल पात्रों द्वारा बारीक। मैं निश्चित रूप से इससे सहमत हूं। हालांकि, HJKL निश्चित रूप से तीर कुंजी से बेहतर है कि आपको अपने हाथों को होम रो से स्थानांतरित करने की आवश्यकता नहीं है। मैं अक्सर कुछ टाइप करता हूं jA, जो कि बहुत तेज है <Down>A, और किसी भी गति से वास्तव में हरा नहीं है।
वारकिन

4
@romainl: मुझे लगता है कि मैंने आपसे पहले भी यह चर्चा की थी। गैर-विमर्स का उपयोग तीरों के लिए किया जाता है, और HJKL के लिए उपयोग नहीं किया जाता है। आदर्श रूप से आप या तो उपयोग नहीं करना चाहते हैं; लेकिन अवरुद्ध तीर (और HJKL) लोगों को रोकेंगे और वे जो कर रहे हैं, उस पर प्रतिबिंबित करेंगे (जबकि अभी भी HJKL को एक विकल्प के रूप में खुला छोड़ते हुए यह वास्तव में सबसे अच्छा विकल्प है, या यदि उपयोगकर्ता इसे कैसे करना है, इस पर स्टम्प्ड है अधिक शक्तिशाली गति।) यानी यह HJKL सीखने के बारे में नहीं है, यह अन्य संपादकों में सीखे गए स्वचालितता को अवरुद्ध करने के बारे में है।
आमदन

1
@Carpetsmoker निश्चित रूप से hjkl कीज़ का एक उल्टा घर की पंक्ति को छोड़ने के लिए नहीं है। तीर कुंजियों के लिए हाथ को कीबोर्ड के पार जाना होता है।
k0pernikus

1
@Carpetsmoker यह निश्चित रूप से मेरे लिए बेहतर लगता है। ;)
k0pernikus

जवाबों:


24

आप हार्डमोड प्लगइन स्थापित कर सकते हैं और अपने .vimrcपुट इन में

let g:HardMode_level = 'wannabe'
let g:HardMode_hardmodeMsg = 'Don''t use this!'
autocmd VimEnter,BufNewFile,BufReadPost * silent! call HardMode()

आप एक प्लगइन का उपयोग नहीं करना चाहते हैं, का उपयोग करें (है, जो एक बेहतर विकल्प हो सकता है के रूप में आप सब कुछ अपने आप को अनुकूलित करने के लिए मिलता है!) nnoremap, vnoremapऔर inoremapपर <Left>, <Right>, <Up>, <Down>, <PageUp>और <PageDown>, उदाहरण के लिए:

nnoremap <Left> :echo "No left for you!"<CR>
vnoremap <Left> :<C-u>echo "No left for you!"<CR>
inoremap <Left> <C-o>:echo "No left for you!"<CR>

1
<nop>यदि आप पूरी तरह से कीमैप को निष्क्रिय करना चाहते हैं तो भी है nnoremap h <nop>:।
अक्षय

25

यदि आप या कोई अन्य व्यक्ति इस विषय को पढ़ रहा है, तो केवल पाठ की चेतावनी के बिना प्रमुख हलकों को निष्क्रिय करना चाहता है।

noremap <Up> <Nop>
noremap <Down> <Nop>
noremap <Left> <Nop>
noremap <Right> <Nop>

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

Noremap, nnoremap, inoremap आदि के बीच मतभेद के साथ इस व्यापक लोकप्रिय विषय सौदों: विम में पुन: मापन

रीमैपिंग वाला सामान्य विचार इस प्रकार है:

Choice-of-mode-to-remap <remap this command> <to this action/command instead>

इसलिए दिए गए अन्य उदाहरणों में आप अपने बाएं कमांड को एक टेक्स्ट प्रॉम्प्ट पर रीमैप करते हैं, जो वास्तव में कर्सर को हिलाने की क्रिया को हटा देता है। मैंने ऊपर जो उदाहरण दिया, वह कुछ और नहीं, बल्कि कार्यों को करता है। इसे हटाने पर विचार करें, बदले की जगह, कार्यक्षमता बढ़ाएँ।


2

आप .vimrcकमांड, इंसर्ट, नॉर्मल और विजुअल मोड में एरो कीज़ को डिसेबल करने के लिए इसे अपने साथ जोड़ सकते हैं :

" Remove newbie crutches in Command Mode
cnoremap <Down> <Nop>
cnoremap <Left> <Nop>
cnoremap <Right> <Nop>
cnoremap <Up> <Nop>

" Remove newbie crutches in Insert Mode
inoremap <Down> <Nop>
inoremap <Left> <Nop>
inoremap <Right> <Nop>
inoremap <Up> <Nop>

" Remove newbie crutches in Normal Mode
nnoremap <Down> <Nop>
nnoremap <Left> <Nop>
nnoremap <Right> <Nop>
nnoremap <Up> <Nop>

" Remove newbie crutches in Visual Mode
vnoremap <Down> <Nop>
vnoremap <Left> <Nop>
vnoremap <Right> <Nop>
vnoremap <Up> <Nop>

नोट::help map-overview विभिन्न प्रकार के मानचित्रण पर अधिक विवरण के लिए चेकआउट


1
आप noremap ... ...(सामान्य, दृश्य, चयन और ऑपरेटर-लंबित मोड के लिए) और noremap! ... ...(सम्मिलित और कमांड-लाइन मोड के लिए) का उपयोग करके आवश्यक आदेशों की संख्या को कम कर सकते हैं ।
जुरगेन क्रेमर

सच। मैंने सोचा कि अधिक स्पष्ट noremapsकोई व्यक्ति जो मोड प्रभावित हैं, को अनुकूलित करना चाहता है के लिए मददगार होगा
नॉनलीनियरफ्रंट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.