मुझे सेट -o vi और k और j संयोजनों के बारे में पता है। मैं तीर और नीचे तीर को मैप करना चाहता हूं ताकि मैं बैश की तरह AIX (ksh प्रॉम्प्ट) का उपयोग कर सकूं। कोई सुझाव?
मुझे सेट -o vi और k और j संयोजनों के बारे में पता है। मैं तीर और नीचे तीर को मैप करना चाहता हूं ताकि मैं बैश की तरह AIX (ksh प्रॉम्प्ट) का उपयोग कर सकूं। कोई सुझाव?
जवाबों:
यहाँ एक तरीका है जो मेरे लिए काम कर रहा है: निम्नलिखित को .profile स्क्रिप्ट में रखें
set -o emacs
alias __A=$(print -n "\020")
alias __B=$(print -n "\016")
alias __C=$(print -n "\006")
alias __D=$(print -n "\002")
आप संकेत trap
पर लिखने में सक्षम हो सकते हैं KEYBD
जो तीर कीस्ट्रोक्स को संसाधित करेगा vi
k
और j
उनकी जगह पर कीस्ट्रोक्स जारी करेगा ।
आप यह जान सकते हैं कि आपके तीर कुंजी के द्वारा कौन से अक्षर उत्सर्जित किए गए हैं Ctrl-v दबाकर फिर कुंजी। आपको कुछ ऐसा देखना चाहिए ^[[A
।
उदाहरण के लिए:
f () { if [[ ${.sh.edchar} == $'\033[A' ]]; then .sh.edchar="k"; fi; }
trap f KEYBD
यह .sh.edmode
जाँचने के लिए कि क्या इन्सर्ट को इन्सर्ट या कमांड मोड में प्रतिस्थापित किया गया है , वेरिएबल को टेस्ट करें (इसकी वैल्यू 0x1b
इन्सर्ट मोड में होगी और अन्यथा शून्य होगी।
vi
मोड में) या एमएसीएस मोड में एक ksh प्रॉम्प्ट पर , Ctrl-v फिर अप-एरो दबाएं। क्या वह आपको देता है ^[[A
? यदि आप echo "HI!"
फ़ंक्शन में जोड़ते हैं , तो "HI!" हर keypress के साथ उत्पादन मिलता है?
.profile
से निकलने या बाहर निकलने और शेल को पुनरारंभ करने की आवश्यकता है। (वैसे, मुझे लगता है कि आपने ऐसा किया है, लेकिन मैं पूरी तरह से मजबूर हूं।)