मानचित्रण <C-F>
( Ctrl+letter) हमेशा मानचित्रण रूप में ही है <C-f>
( Ctrl+Shift+letter)। आप एक के बिना दूसरे का नक्शा नहीं बना सकते।
समस्या की जड़ यह है कि विम टर्मिनल से वर्ण पढ़ता है, जो दोनों के लिए ^F
(ASCII कोड 0x06
) भेजता है Ctrl+fऔर Ctrl+Shift+f; विम का यह जानने का कोई तरीका नहीं है कि आपने Shift कुंजी दबाया है या नहीं। यह पोस्ट टर्मिनलों और नियंत्रण पात्रों के बारे में कुछ और जानकारी प्रदान करता है ।
सिद्धांत रूप में, यह gVim के साथ किया जा सकता है, चूंकि अधिकांश (या सभी?) ग्राफिक वातावरण बहुत अधिक विस्तृत प्रमुख घटनाओं को भेजते हैं। लेकिन दुर्भाग्य से, जीवीएम एक टर्मिनल एमुलेटर की तरह बहुत काम करता है, <C-f>
और <C-F>
दोनों के बीच अंतर नहीं कर सकता है (यह शायद विम-जीवीएम संगतता के लिए एक डिजाइन निर्णय था)।
संभव समाधान:
जब आप दबाते हैं, तो आप Vim को एक अलग कोड भेजने के लिए अपने टर्मिनल एमुलेटर को कॉन्फ़िगर कर सकते हैं Ctrl+Shift+f। उदाहरण के लिए, xterm के लिए आप कर सकते हैं:
XTerm*VT100.translations: #override \n\
Ctrl ~Meta Shift <Key>f: string(0x1b) string("[24;6~")\n\
Ctrl ~Meta Shift <Key>r: string(0x1b) string("[23;6~")
इसके लिए <C-S-F12>
और <C-S-F11>
विम को कोड भेजेंगे , जिसे आप चुन सकते हैं:
nnoremap <C-S-F12> :echo 'ctrl+F pressed!'<CR>
nnoremap <C-S-F11> :echo 'ctrl+R pressed!'<CR>
ध्यान दें कि आप मैप कर सकते हैंAlt+Shift+letter , क्योंकि टर्मिनल उन लोगों के लिए एक अलग कोड भेजता है: <Esc>f
( 0x1b0x66
) या <Esc>F
( 0x1b0x46
)।
NeoVim, जहाँ तक मैं पा सकते हैं, इस तरह के रूप में कुछ मामलों को छोड़कर इस समस्या को ठीक नहीं किया गया है Ctrl+Shift+Enterऔर Ctrl+Shift+Tab, लेकिन यह संभव है कि भविष्य में यह सुविधा जोड़ दिया जाएगा है।