मैंने निम्न पंक्ति को .vimrc में जोड़ने के लिए मैप करने की कोशिश की, लेकिन यह काम नहीं करता है। मैंने .vimrc को Vim द्वारा लोड किया है।
map <Alt-D> <C-D>
क्या इस मैपिंग में कोई त्रुटि है?
मैंने निम्न पंक्ति को .vimrc में जोड़ने के लिए मैप करने की कोशिश की, लेकिन यह काम नहीं करता है। मैंने .vimrc को Vim द्वारा लोड किया है।
map <Alt-D> <C-D>
क्या इस मैपिंग में कोई त्रुटि है?
encoding
मैपिंग के चलने के बाद आपके परिवर्तन होते हैं, तो आप अपनी ऑल्ट कीज़ से जो बाहर निकलते हैं, वह आपके द्वारा शुरू में सेट किए गए से मेल नहीं खा सकता है।
जवाबों:
मैक उपयोगकर्ताओं के लिए: ALT + hjkl मैप करने के लिए, इसके बजाय उत्पन्न वास्तविक वर्ण का उपयोग करें (INSERT मोड में संयोजन के दौरान कौन सा वर्ण का उपयोग करें), उदाहरण के लिए मेरे कीबोर्ड से मुझे प्राप्त होता है:
<ALT+j> ==> ª
<ALT+k> ==> º
और इसी तरह। समाधान StackOverflow पर यहाँ पाया ।
मैंने इसे अपने .vimrc पर प्रयोग करके ALT + k \ j के साथ लाइनों को ऊपर और नीचे ले जाने के लिए उपयोग किया है:
nnoremap ª :m .+1<CR>==
nnoremap º :m .-2<CR>==
inoremap ª <Esc>:m .+1<CR>==gi
inoremap º <Esc>:m .-2<CR>==gi
vnoremap ª :m '>+1<CR>gv=gv
vnoremap º :m '<-2<CR>gv=gv
आशा है कि यह उपयोगी है, विम का आनंद लें :)
ADDENDUM BY Dylan_Larkin (2019): इसके लिए मैक पर काम करने के लिए, " मेटा के रूप में उपयोग करें विकल्प " को टर्मिनल में बंद करना होगा- > प्राथमिकताएं -> कीबोर्ड
cat
। बस टाइप करें cat
और बिल्ली खिड़की के अंदर आप चाहते हैं कुंजी संयोजन। पता चला कि alt + ब्रैकेट मेरे मैक पर 'और' है।
nmap ˙ <C-w><Left> nmap ¬ <C-w><Right> nmap ˚ <C-w><Up> nmap ∆ <C-w><Down>
sed -n l
मैपिंग को कॉन्फ़िगर करने से पहले <Ak> और <Aj> का आउटपुट देखने के लिए उपयोग करें । मेरे मामले में <अज> है ∆
और <अक> है˚
Use Option as Meta Key
iTerm प्रोफ़ाइल सेट या पर किया ⌥ key to Esc+
जाता है, तो पारंपरिक रूप से (जैसे लिनक्स / यूनिक्स पर) व्यवहार करेंगे। इसलिए आपको मैप को वीम पर सेट करने की आवश्यकता नहीं है <^[j>
, बस इसे मैप करें <A+j>
या <M+j>
यह काम करता है।
:help key-notation
वर्णन करता है कि विभिन्न कुंजी को मैप करने के लिए किस प्रारूप का उपयोग करने की आवश्यकता है। ऊंचाई के मामले में, आप <A-
या तो उपयोग कर सकते हैं या <M-
। तो आपकी मैपिंग होगी
map <M-d> <C-d>
जब तक आप स्पष्ट रूप से दाएं हाथ की ओर से मैपिंग के लिए पुनर्मूल्यांकन की अनुमति नहीं देना चाहते हैं , तब तक (जैसे ) के nore
संस्करण का उपयोग करने की अनुशंसा करता हूं ।:map
noremap
<A-d>
। आपको संभवतः अपने टर्मिनल की सेटिंग्स को बदलने की आवश्यकता है, इसलिए यह इस <A-d>
रूप में भेजता है <Esc>d
।
मुझे यकीन नहीं है कि अब "संभव" है। कृपया नीचे दिए गए अद्यतन को पढ़ें।
हां, आप टर्मिनल वीम में भी कर सकते हैं, लेकिन कोई वास्तविक पकड़ नहीं है । आपको मूल रूप से दो चरणों का पालन करना होगा:
सुनिश्चित करें कि <M-d>
संकेतन मौजूद है, और वास्तव में आपके टर्मिनल इनपुट ( ^[
एस्केप कैरेक्टर) क्या है:
$ cat
^[d
$
" in your .vimrc
execute "set <M-d>=\ed"
" you have to use double quotes!
अपने नए "बनाए गए" संयोजन के लिए कुछ मैप करें:
noremap <M-d> :echo "m-d works!"<cr>
यह समझने के लिए कि यह कैसे काम करता है, आप इस "ट्रिक" को अन्य "अजीब" संयोजनों के लिए विस्तारित कर सकते हैं, उदाहरण के लिए, मैं दीमक का उपयोग कर रहा हूं, और विम <S-F1>
मुझे नहीं मिल रहा है ^[[1;2P
। फिर, मेरे vimrc में मैं करता हूँ: execute "set <S-F1>=\e[1;2P"
और फिर मैं इसे किसी भी चीज़ में मैप कर सकता हूँ।
नोट: मुझे नहीं पता कि क्यों, लेकिन कुछ लोगों के लिए \<Esc>
इसके बजाय काम करता है \e
।
अपडेट (फरवरी 2016)
टर्मिनल पर निर्भर करता है कि आपका टर्मिनल चलता है, शायद आप ... अधिकांश टर्मिनलों में, "alt + h", उदाहरण के लिए, मैप किया जाता है ^[h
, जो है: "एस्केप + एच"। तो यह कुंजी को अधिलेखित कर सकता है। मैंने अभी-अभी कोशिश की है (फिर से) और यह काम करने लगता है, लेकिन मेरा मानना है कि यह एक बहुत ही छोटी गाड़ी है और त्रुटि के कार्यान्वयन में त्रुटि है।
फिर भी, बहादुर के लिए पर्याप्त है, यहाँ एक प्रयोगात्मक प्लगइन है:
execute "set...
सामान के बजाय , आप बस सीधे उपयोग कर सकते हैं set <M-d>=^[d
। ^[
वास्तव में एक एस्केप वर्ण के साथ प्रवेश किया है C-v-Esc
। यह rxvt / urxvt में आवश्यक था, लेकिन xterm को विशेष उपचार की आवश्यकता नहीं होनी चाहिए। विम विकी में इस विषय पर अधिक जानकारी ।
मैक ओएसएक्स पर विम में मानचित्र Alt कुंजी:
उस कुंजी कोड को देखकर शुरू करें जिसे आपका टर्मिनल विम पर भेज रहा है:
$ sed -n l
^[[1;9D
उपरोक्त उदाहरण में, मैंने कमांड चलाया और दबाया Alt + Left।
^[[1;9D
बच गए अनुक्रम vim को भेजा जा रहा उपयोगकर्ता है, इसलिए हम कर सकते हैं कि हमारे मानचित्रण के लिए।
map <Esc>[1;9D
Option
कुंजी ( ⌥
) Esc+
iTerm2 के रूप में कॉन्फ़िगर किया गया है, मैं alt+q
vim छोड़ने के लिए मैप कर सकता हूं : nnoremap <silent> <Esc>q :qa!<cr>
आपका टर्मिनल Alt-D को "ठीक से" प्रसारित नहीं कर सकता है। आप सीवी का उपयोग वास्तव में विम के लिए वास्तविक भागने के अनुक्रम को प्राप्त करने के लिए कर सकते हैं और इसका उपयोग अपनी मैपिंग बनाने के लिए कर सकते हैं। यानी, अपना .vimrc संपादित करें और निम्न अनुक्रम "CV Alt-D" टाइप करके वास्तविक को बदलें ताकि आपके पास अपने vimrc में सही एस्केप अनुक्रम हो। यदि आपका टर्मिनल कुछ भी नहीं भेजता है तो यह काम नहीं करेगा।
मेरा टर्मिनल ^[x
कमांड का उत्पादन करेगा (उदाहरण के लिए alt-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 में जोड़ें।
हैलो, मैक पर उपरोक्त सभी परीक्षण के वर्षों के बाद कोई अच्छा समाधान नहीं है, मैं खोज करता रहा।
यहाँ मेरा समाधान है:
Alt सहित एक संयोजन कीस्ट्रोक बनाने के लिए आपको वरीयता> कीबोर्ड में संयोजन की घोषणा करनी होगी और उस संयोजन का उपयोग विम सेटअप फ़ाइल (मेटा कुंजी के रूप में चेक उपयोग विकल्प) में करना होगा।
आउटपुट एक असामान्य चरित्र ( a
उदाहरण के लिए नहीं) होना चाहिए ताकि आप एक नियमित चरित्र को ओवरराइड नहीं कर रहे हैं।
नीचे दिए गए उदाहरण में आपको ALT-Up के साथ काफी अधिक सक्षम होना चाहिए।
विम सेटिंग:
मैक सेटिंग: