मैं एक नियमित आधार पर दो अलग-अलग कीबोर्ड लेआउट का उपयोग करने की थोड़ी असामान्य स्थिति में हूं ( प्रोग्रामर-ड्वोरक और तुर्की-एफ )। ये लेआउट एक-दूसरे से काफी अलग हैं और मैं केवल मांसपेशियों की यादों के एक सेट के साथ विम में कुशल होने में सक्षम हूं। मैं ड्वोरक लेआउट में विम कमांड के साथ बहुत कुशल हूं, लेकिन अगर मेरा कीबोर्ड तुर्की-एफ लेआउट में है तो इसका उपयोग करना लगभग असंभव है। दुर्भाग्य से मैं नियमित रूप से अंग्रेजी और तुर्की और यहां तक कि मिश्रित भाषाओं में फ़ाइलों को संपादित करता हूं। मेरी प्रवीणता ऐसी है कि मैं संबंधित कीबोर्ड लेआउट में या तो अच्छी तरह से भाषा टाइप कर सकता हूं, लेकिन मेरा दिमाग उन्हें क्रॉस-वायर करने से इनकार करता है और तुर्की में एक शब्द के कुछ अक्षर भी टाइप करता है जैसे कि ड्वोरक लेआउट या विसे वर्सा।
मेरे पास 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यदि आप यह देख सकते हैं कि क्या यह तुर्की है, अगर यह है, तो ड्वोरक पर जाएँ, एक ध्वज सेट करें, और जब आप प्रविष्ट करें तो फिर से तुर्की में वापस जाएँ अगर ऐसा था तो पिछली बार जब आपने सम्मिलित विधा को छोड़ा था।