मैं एक नियमित आधार पर दो अलग-अलग कीबोर्ड लेआउट का उपयोग करने की थोड़ी असामान्य स्थिति में हूं ( प्रोग्रामर-ड्वोरक और तुर्की-एफ )। ये लेआउट एक-दूसरे से काफी अलग हैं और मैं केवल मांसपेशियों की यादों के एक सेट के साथ विम में कुशल होने में सक्षम हूं। मैं ड्वोरक लेआउट में विम कमांड के साथ बहुत कुशल हूं, लेकिन अगर मेरा कीबोर्ड तुर्की-एफ लेआउट में है तो इसका उपयोग करना लगभग असंभव है। दुर्भाग्य से मैं नियमित रूप से अंग्रेजी और तुर्की और यहां तक कि मिश्रित भाषाओं में फ़ाइलों को संपादित करता हूं। मेरी प्रवीणता ऐसी है कि मैं संबंधित कीबोर्ड लेआउट में या तो अच्छी तरह से भाषा टाइप कर सकता हूं, लेकिन मेरा दिमाग उन्हें क्रॉस-वायर करने से इनकार करता है और तुर्की में एक शब्द के कुछ अक्षर भी टाइप करता है जैसे कि ड्वोरक लेआउट या विसे वर्सा।
मेरे पास Xorg में लेआउट बदलने के लिए दो-कुंजी-सलामी बाइंडिंग है, लेकिन यहां तक कि मिश्रित भाषा की फ़ाइलों को संपादित करते समय यह मुझे अजीब अजीब वर्कफ़्लो के साथ छोड़ देता है:
<vim commands…>i<switch to tr>…content…<escape><switch to en><vim commands…>
मैं इसे कुछ इस तरह से छोटा करने में सक्षम होना चाहता हूं:
<vim commands…><leader>i…content…<escape><vim commands…>
... ऐसा है कि सिस्टम कीबोर्ड लेआउट को बदले बिना तुर्की लेआउट का अनुकरण करने के लिए मानों का <leader>i
एक समूह सेट करता है :imap
। एक ही समय में, i
अतिरिक्त मोड के बिना मोड सम्मिलित करने के लिए स्विच करेगा :imap
। मूल्य स्वयं आसान हैं, मुझे बस इनकी तरह वर्णमाला मैपिंग की आवश्यकता है:
:imap a u
:imap A U
:imap o i
:imap O İ
"etc.
सवाल यह है कि, कैसे सेटअप दो डालने मोड के लिए, एक सामान्य डालने मोड और डालने एक छद्म कि मैपिंग का एक समूह को छोड़ कर एक है, और मैं के साथ इन विधियों कैसे ट्रिगर कर सकते हैं <leader>i
, <leader>a
आदि?
:imap
कि यह एक दूरस्थ ssh सत्र में भी काम करेगा या जब $DISPLAY
अन्यथा सेट नहीं किया जाएगा।
InsertEnter
औरInsertLeave
ऑटोकैड हैं। विशेष रूप से,InsertLeave
यदि आप यह देख सकते हैं कि क्या यह तुर्की है, अगर यह है, तो ड्वोरक पर जाएँ, एक ध्वज सेट करें, और जब आप प्रविष्ट करें तो फिर से तुर्की में वापस जाएँ अगर ऐसा था तो पिछली बार जब आपने सम्मिलित विधा को छोड़ा था।