आप टर्मिनल में कुंजियों को कमांड कैसे असाइन करते हैं?


10

क्या टर्मिनल उपयोग में शब्दों के लिए विशेष कुंजी संयोजनों को निर्दिष्ट करने का कोई समाधान है। उदाहरण के लिए कम कमांड बहुत उपयोगी है और मैं इसके माध्यम से किसी अन्य प्रक्रिया के आउटपुट को पाइप करने के लिए ia लॉट का उपयोग करता हूं।

यह विचार विशेष कुंजी संयोजनों को स्थापित करने के लिए होगा जो केवल अलग-अलग कमांड लिखने के लिए असाइन किए गए टर्मिनल उपयोग में सक्रिय हैं? इसलिए टर्मिनल विंडो में Ctrl+ दबाने से Lलिख सकते हैं

| less

या Ctrl+ के Gलिए खड़ा हो सकता है

| grep

नोट: मेरा मतलब है कि अक्षरों को जोड़ने से कमांडलाइन अंत में निष्पादित नहीं होती है। इसी तरह से टैबकंप्लीशन है लेकिन अधिक विशिष्ट है।

जवाबों:


10

हां, आप बाइंड कमांड का उपयोग कर सकते हैं

bind '"\ey"':"\"less \C-m\""

Alt-e को कम कमांड में मैप करता है और इसे निष्पादित करता है (\ Cm aka Ctrl-m के साथ)

शायद के लिए | आपको इससे बचने की जरूरत है।

bind '"\ey"':"\"\|less \C-m\""

यदि आप इसे केवल कमांड लाइन में जोड़ना चाहते हैं तो * \ Cm \ "" हटा दें

सावधान रहें क्योंकि पहले से ही कुछ बाइंडिंग परिभाषित हैं:

Ctrl + A    Go to the beginning of the line you are currently typing on
Ctrl + E    Go to the end of the line you are currently typing on
Ctrl + L                Clears the Screen, similar to the clear command
Ctrl + U    Clears the line before the cursor position. If you are at the end of the line, clears the entire line.
Ctrl + H    Same as backspace
Ctrl + R    Let’s you search through previously used commands
Ctrl + C    Kill whatever you are running
Ctrl + D    Exit the current shell
Ctrl + Z    Puts whatever you are running into a suspended background process. fg restores it.
Ctrl + W    Delete the word before the cursor
Ctrl + K    Clear the line after the cursor
Ctrl + T    Swap the last two characters before the cursor
Esc + T     Swap the last two words before the cursor
Alt + F     Move cursor forward one word on the current line
Alt + B     Move cursor backward one word on the current line
Tab     Auto-complete files and folder names

नियंत्रण कुंजी, जैसा कि आप ऊपर देख सकते हैं, सीएम के साथ बनाई गई है, इसलिए आप निम्न कमांड को Ctrl-g के साथ शुरू कर सकते हैं, निम्नानुसार:

बाइंड "" \ "Cg": "\" \ | कम * \ Cm \ ""

Alt (केवल ALT के लिए) के लिए कुंजी कोड प्राप्त करने के लिए, आप शेल से रीड कमांड का उपयोग कर सकते हैं:

@~$ read
^[y

^ [y \ _ के बराबर है

अधिक जानकारी के लिए, इस सवाल का जवाब भी stackoverflow में दिया गया था:

/programming/4119991/bash-call-script-with-customized-keyboard-shortcuts


धन्यवाद, मैं एक बाइंडिंग कैसे हटा सकता हूं या सभी बाइंडिंग दिखा सकता हूं?
NES

आपके पहले 2 उदाहरणों में कुछ गड़बड़ है। यह हमेशा आपके बाइंडिंग सिंटैक्स के साथ असाइन किए जाने के बाद वाइल्डकार्ड को प्रिंट करता है।
एनईएस

bind -p और bind -P आपको सभी बाइंडिंग दिखाएगा। मैंने स्टार के साथ एक गलती की ... मैं जवाब अपडेट कर रहा हूं
tmow

बहुत बहुत धन्यवाद। शायद आपके पास एक विचार है कि मछली में समान लक्ष्य तक कैसे पहुंचा जाए? मैं इसे अभी तक काम करने के लिए प्राप्त कर रहा हूं लेकिन समस्या यह है कि मछली डिफ़ॉल्ट रूप से स्ट्रिंग को कमांडलाइन में जोड़ने के बजाय स्वचालित रूप से कमांड निष्पादित करती है। यहाँ मैनपेज linux.die.net/man/1/bind है दुर्भाग्य से उदाहरण मेरे मामले के लिए बहुत उपयोगी नहीं है।
एनईएस

यह पहले से ही बनाया गया एक फंक्शन है जो मुझे लगता है कि fishshell.com/user_doc/index.html#editor Alt-p शॉर्टकट पर मुकदमा कर रहा है
tmow
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.