Alt कुंजी को कैसे मैप करें?


37

मैं Altनिम्नलिखित तरीके से कुंजी को मैप करने की कोशिश कर रहा हूं :

:map <A-j> j
:map <A-k> k

लेकिन यह काम नहीं करता है (घंटी बजती है Alt + j/ Alt + k)।

मुझे क्या याद आ रहा है?

मैं OSX पर टर्मिनल का उपयोग कर रहा हूं, वही रिमोट लिनक्स पर होता है।


पर Ctrl + v, Alt + jमुझे मिल गया है: ?~H~F( जब encoding=utf-8)।

पर Ctrl + v, Alt + kमुझे मिल गया है: ?~Z( ˚जब encoding=utf-8)।

प्लगइन्स के बिना चल रहा है ( -u NONE) कोई फर्क नहीं पड़ता।


1
करता है Alt(प्रेस, पकड़ नहीं) और फिर jकाम? साथ xtermकम से कम मैं सेट करने की आवश्यकता है metaSendsEscapeके लिए true काम करने के लिए इन दृश्यों पाने के लिए ... मैं आप एक ही समस्या है, तो पता नहीं, और मैं OSX का उपयोग नहीं करते तो मैं परीक्षण नहीं कर सकते ...
मार्टिन Tournoij

@Carpetsmoker दबाने Alt, जारी करने, फिर jया किसी भी अन्य सामान्य की तरह काम करता है। मैंने जाँच की और ' विकल्प का उपयोग मेटा कुंजी के रूप में विकल्प ' पाया , इसे सक्षम किया और यह अब काम करता है। तो सेटिंग metaSendsEscapeने चाल चली, धन्यवाद।
kenorb

3
यह सवाल पहले उत्तर दिया गया था (एक बेहतर प्रतिक्रिया के साथ): stackoverflow.com/questions/6778961/…
user3751385

जवाबों:


35

मैं इसे लिनक्स या सिगविन पर कैसे करूँ:

पहले जांच कर लें क्या वर्ण अपने टर्मिनल द्वारा भेज रहे हैं जब आप प्रेस ALT+ J:

ऐसा करने के लिए मैं कंसोल और रन पर जाता हूं sed -n l(आप catइसके लिए उपयोग भी कर सकते हैं )। फिर मैं ALT+ दबाता हूं Jऔर देखता हूं कि स्क्रीन पर वर्ण हैं ^[j

मैं की जगह ^[के साथ \e(क्या मेरी टर्मिनल द्वारा भेजा जाता है जब मैं प्रेस है, क्योंकि है कि escऔर मेरे लिए अंतिम स्ट्रिंग है) \ej

फिर मैं इसे अपने लिए लिखता हूं .vimrc:

execute "set <M-j>=\ej"
nnoremap <M-j> j

और मैपिंग काम करता है।


4
मैं इस :set <M-j>=\ejभाग के लिए दस्तावेज़ नहीं ढूँढ सकता । मुझे क्या खोजना चाहिए?
एवगेनी सर्गेव

1
उत्तर के लिए धन्यवाद, यह एकमात्र समाधान था जो मेरे लिए काम किया w / Iterm + vim
newUserNameHere

नहीं, यह काम नहीं करता है। कभी-कभी ईएससी-जे एएलटी-जे के रूप में कार्य करेगा
उपयोगकर्ता 3751385

1
@EvgeniSergeev देखें:help :set-termcap
रिच

9

Carpetsmoker की मदद से , ऐसा लगता है कि टर्मिनल को 'Alt / विकल्प का उपयोग मेटा कुंजी के रूप में' करने के लिए कॉन्फ़िगर नहीं किया गया था (यह विशेष रूप से GUI टर्मिनलों के लिए सामान्य है)।

OSX पर टर्मिनल के लिए, यह वरीयताएँ -> सेटिंग्स -> कीबोर्ड टैब -> 'मेटा कुंजी के रूप में उपयोग करें विकल्प' में है । जांचें: मैं मेटा कुंजी के रूप में विकल्प का उपयोग करने के लिए टर्मिनल कैसे बदल सकता हूं? ( मावेरिक्स )।

XTerm के लिए, जाँच करें: मेटा को भेजने से डिफ़ॉल्ट के लिए XTerm को कॉन्फ़िगर करना एस्केप कहता है:

इस लाइन को कहीं भी अपने व्यक्तिगत .Xdeults फ़ाइल में जोड़ें ( ~/.Xdefaults):

xterm*metaSendsEscape: true

फिर xrdb के साथ कॉन्फिगर को फिर से लोड करें। इस चरण के बिना परिवर्तन .Xdefaultsअगले X पुनः आरंभ होने तक प्रभावी नहीं होंगे:

xrdb -l ~/.Xdefaults

फिर Altकुंजी के साथ मानक मैपिंग जैसे:

:map <A-j> j
:map <A-k> k

ठीक काम करता है।

मदद के लिए, देखें: :h :map-alt-keys


4
मई भी :h :map-alt-keysजानकारी के एक अन्य स्रोत के रूप में देखना चाहते हैं
पीटर रिनकर

4

कोसक के जवाब के समान लेकिन थोड़ा सरल है, शाब्दिक कुंजी दबाकर।

या तो सामान्य मोड में दबाने के बाद :, या अपने में डाला .vimrc, मैपिंग शुरू करके सीधे इनपुट को मैप करें:

nnoremap 

फिर मार Ctrl+ Vफिर कीस्ट्रोके को रिकॉर्ड करने के लिए, उदा Alt+ । यह कुछ इस तरह दिखाई देगा:

nnoremap ^[[1;3D

लेकिन प्रत्येक ^[एक एकल है, शाब्दिक बच चरित्र और वाक्य रचना हाइलाइटिंग यह दिखाना चाहिए। पाठ के साथ शाब्दिक एस्केप (एस) को बदलें <Esc>, और उस कमांड को जोड़ें जिसे आप उपयोग करना चाहते हैं:

nnoremap <Esc>[1;3D <C-w>h

मुझे पता है कि ओपी Alt+ पत्रों की मैपिंग कर रहा था , लेकिन मैंने यह दिखाने के लिए तीरों का इस्तेमाल किया कि यह किस तरह से डिफ़ॉल्ट रूप से मैप नहीं किया जा सकता है।


आकर्षण की तरह काम किया, बहुत बहुत धन्यवाद!
आर्यनदीन

2

यह मेरे लिए उबंटू 16.04 xfce टर्मिनल पर काम करता है (और अलैक्रैटिक रस्ट टर्मिनल)

अल्टिसनिप स्निपेट ट्रिगर को Meta-/( इमैक स्निपेट की तरह) सेट करें

let g:UltiSnipsExpandTrigger="^[/"

यहाँ अब मैं ^[/vim टाइप कर रहा हूँ

इन्सर्ट मोड में Ctrl-V Alt-/

( मेरे पीसी कीबोर्ड Metaकी Altकुंजी है)


1

तो Control+Vद्वारा पीछा ALT-xशो ^[x(टर्मिनल में टाइप) आप से इस छोटे से स्क्रिप्ट के साथ इसे ठीक कर सकते हैं vim.wikia.com :

for i in range(97,122)
  let c = nr2char(i)
  exec "map \e".c." <M-".c.">"
  exec "map! \e".c." <M-".c.">"
endfor

सभी महत्वपूर्ण कुंजी मैपिंग के लिए .vimrc में जोड़ें।

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