AIX: तीर का उपयोग करके पिछले कमांड को पुनः प्राप्त करना


1

मुझे सेट -o vi और k और j संयोजनों के बारे में पता है। मैं तीर और नीचे तीर को मैप करना चाहता हूं ताकि मैं बैश की तरह AIX (ksh प्रॉम्प्ट) का उपयोग कर सकूं। कोई सुझाव?

जवाबों:


2

यहाँ एक तरीका है जो मेरे लिए काम कर रहा है: निम्नलिखित को .profile स्क्रिप्ट में रखें

set -o emacs
alias __A=$(print -n "\020")
alias __B=$(print -n "\016")
alias __C=$(print -n "\006")
alias __D=$(print -n "\002")

1

आप संकेत 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इन्सर्ट मोड में होगी और अन्यथा शून्य होगी।


सुझाव के लिए धन्यवाद, हालांकि यह उम्मीद के मुताबिक काम नहीं कर रहा है। मैंने इन्हें जोड़ दिया है। लाभकारी और कुछ नहीं होता है।
रिंग बियरर

@ring बियरर: इन्सर्ट मोड में ( viमोड में) या एमएसीएस मोड में एक ksh प्रॉम्प्ट पर , Ctrl-v फिर अप-एरो दबाएं। क्या वह आपको देता है ^[[A? यदि आप echo "HI!"फ़ंक्शन में जोड़ते हैं , तो "HI!" हर keypress के साथ उत्पादन मिलता है?
डेनिस विलियमसन

नहीं, मैंने ठीक यही कोशिश की ("हाय") और कोई आउटपुट नहीं देखा।
अंगूठी वाहक

@ring बियरर: यदि आप कमांड लाइन से फंक्शन (इको के साथ) निष्पादित करते हैं, तो क्या आप "HI!" देखते हैं? यदि नहीं, तो आपको अपने स्रोत .profileसे निकलने या बाहर निकलने और शेल को पुनरारंभ करने की आवश्यकता है। (वैसे, मुझे लगता है कि आपने ऐसा किया है, लेकिन मैं पूरी तरह से मजबूर हूं।)
डेनिस विलियमसन

@ डेनिस, धन्यवाद। हालाँकि, मैं "हाय" या किसी भी पिछले कमांड को प्रॉम्प्ट पर नहीं देखता - यकीन नहीं कि क्या गलत है; ऊपर तीर प्रिंट ^ [[A CTRL + V
रिंग बियरर के साथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.