Zsh में ALT + LeftArrowKey समाधान की तलाश


130

मैंने अभी हाल ही में बैश से लेकर zsh तक स्विच किया है, हालांकि मुझे एक बार में एक शब्द आगे पीछे जाने के लिए मेरा Alt+ LeftArrowKeyऔर Alt+ याद आता है RightArrowKey

अभी, अगर मैं दबाता हूँ Alt+ तो मैं LeftArrowKeyकुछ अक्षरों को वापस लेता हूँ और फिर मैं अटक जाता हूँ। मैं आगे पीछे नहीं जाऊंगा और यह रेखा के अंत में वापस नहीं आएगा Alt+ RightArrowKeyजैसा कि मुझे उम्मीद है। मैं लाइन के अंत में जाने के लिए तीर कुंजियों का उपयोग भी नहीं कर सकता, केवल दूसरे से अंतिम तक। या तो लाइन पर नए वर्ण इनपुट नहीं कर सकते हैं या वास्तव में हटा सकते हैं।

मैं अपने प्रिय शॉर्टकट को कैसे वापस ला सकता हूं?

मैं मैक ओएस एक्स पर टर्मिनल का उपयोग कर रहा हूँ अगर यह महत्वपूर्ण है।

जवाबों:


243

भागो catतो प्रेस कुंजी कोड को देखने के लिए अपने शॉर्टकट भेजें।
(प्रेस Ctrl+ जब आप कर रहे हैं Cमारने के लिए cat।)
मेरे लिए, (ubuntu, konsole, xterm) दबाने Alt+ भेजता है ^[[1;3D, इसलिए मैं अपने .zshrc में डालूंगा

bindkey "^[[1;3C" forward-word
bindkey "^[[1;3D" backward-word

(वास्तव में मैं Ctrlशब्द के माध्यम से शब्द को स्थानांतरित करने के लिए + तीर का उपयोग करना पसंद करता हूं , जैसे कि विंडोज़ या लिनक्स गार्ड के तहत एक सामान्य टेक्स्टबॉक्स में)।

संबंधित प्रश्न: मुख्य सेटिंग्स को ठीक करें (होम / एंड / इंसर्ट / डिलीट करें)। Zshrc जब टर्मिनेटर टर्मिनल एमुलेटर में Zsh चल रहा हो


15
तुम मेरे तारणहार हो! मेरे मैक पर "Alt + <-" दिया "^ [b" और -> दिया "^ [f", इसलिए मैंने इन्हें जोड़ा। एक जादू की तरह काम करता है। मैक पर डेस्कटॉप + के बीच स्विच करने के लिए Ctrl + तीर आरक्षित हैं।
मैड्स ओम लार्सन

1
एक नोट यह है कि ctrl + <के लिए - कैट ^[[Dमेरे लिए रिपोर्टिंग कर रही थी जबकि ctrl + v रिपोर्टिंग कर रही थी ^[OD। Ctrl + v के सुझाव ने काम किया, लेकिन बिल्ली ने नहीं किया। इसके अलावा, ctrl + v, alt + <- और alt + -> दोनों के लिए एक ही बात बता रहा था। मैं बिल्ली के आउटपुट को देखते हुए और "O" के साथ किसी भी [[] को बदलकर इन दोनों को जोड़ने में सक्षम था
माइक एस

10
कैट के नीचे मेरा आउटपुट ^[^[[Cफॉरवर्ड शब्द के लिए और ^[^[[Dबैकवर्ड वर्ड के लिए है, लेकिन इन में .zshrc के लिए अपडेट करना किसी कारण से काम नहीं आया।
युंती

2
@Yunti - लाना bindkey "^[^[[D" backward-wordऔर bindkey "^[^[[C" forward-wordमें ~ / .zprofile मेरे लिए काम किया!
फर्नांडो एस्पिनोसा

आदमी! मेरी ज़िंदगी बचाई! साझा करने के लिए धन्यवाद!
जोआओ हेनरिक

187

शेल की परवाह किए बिना iTerm का उपयोग करने वाले किसी के लिए

यहां दिए गए सभी समाधान मेरी राय में पीछे की ओर जाते हैं। आप अनिवार्य रूप से अपने शेल को अपने टर्मिनल में सेट किए गए कुछ एस्क सीक्वेंस या अन्य कुंजी बाइंडिंग को सुनने के लिए कह रहे हैं, जब आप गोले को स्विच करते हैं तो संगतता समस्याएं पैदा करते हैं (यदि आप SSH को किसी अन्य शेल में स्विच करते हैं, तो BASH से ZSH, आदि पर स्विच करें और आप खो दें कुछ अगर आपके सभी कीबाइंडिंग नहीं)।

अधिकांश गोले में डिफ़ॉल्ट अनुक्रमों का एक सेट होता है जो पूर्व-बाउंड होते हैं। इसके अलावा, जब वे 100% सुसंगत नहीं होते हैं, तो वे काफी करीब होते हैं। तो शेल में किसी विशेष क्रिया के लिए कीबाइंडिंग बनाने के लिए मैंने जो सबसे आसान तरीका खोजा है वह यह है कि आपके टर्मिनल एप्लिकेशन को डिफ़ॉल्ट कीबाइंडिंग के साथ बाँधने के लिए कहा जाए जो कि गोले के अनुरूप हो।

मैंने आपके टर्मिनल को देशी मैक कीबाइंडिंग के रूप में प्रतिक्रिया देने के लिए एक संक्षिप्त समाधान लिखा है

ITerm प्राथमिकताएं खोलें + ,और Profilesटैब पर जाएं ( Keysटैब का उपयोग किया जा सकता है, लेकिन आपकी प्रोफ़ाइल में कीबाइंडिंग जोड़ने से आप अपनी प्रोफ़ाइल को बचा सकते हैं और इसे कई कंप्यूटरों में सिंक कर सकते हैं) और keysउप-टैब और निम्नलिखित दर्ज करें:

कर्सर को एक शब्द छोड़ दें

+ हेक्स कोड भेजें:0x1b 0x62

कर्सर को एक शब्द सही करें

+ हेक्स कोड भेजें:0x1b 0x66

और यह आपको न केवल ZSH में, बल्कि अगर आप SSH में BASH, irb / pry, नोड आदि को चलाने वाले सर्वर में वांछित व्यवहार देते हैं, तो आपको वांछित व्यवहार देना चाहिए।


1
मुझे स्वीकार किए गए समाधान से परेशानी हो रही थी क्योंकि मुझे zsh ठीक काम कर रहा था लेकिन irb और अन्य कंसोल नहीं। पिछली सेटिंग्स को मिटाना (सुझाव के अनुसार iTerm प्रोफ़ाइल में) एक आकर्षण की तरह काम करता है!
लेलेकन

1
बाइंडकी समाधान मैक पर कष्टप्रद त्रुटि ध्वनि करेगा। इसे करने का सही तरीका होना चाहिए।
वीशी ज़ेंग

@ केवल इसीलिए क्योंकि या तो आपका शेल डिफ़ॉल्ट कॉन्फ़िगरेशन के लिए मैप नहीं किया गया है। भागो bindkey | grep forward-wordआपको "^[f" forward-wordवापस लौटना चाहिए लेकिन यदि आप नहीं करते हैं, तो आपके पास 2 विकल्प हैं। दूसरों में से किसी एक को दिया गया नक्शा, या "^[f" forward-wordअपने में जोड़ें .zshrc
ट्रैविस

मैं ध्यान दूंगा, कि गोले भर में उपयोग के "^[f"लिए सबसे लगातार इस्तेमाल होने वाला बंधन है forward-word, और मेरे संस्करण में केवल एक सेट बाश है।
ट्रैविस

किसी तरह यह विकल्प के बजाय मेरे लिए कमांड बटन के साथ काम किया। धन्यवाद दोस्त। :)
वैभव जैन

72

निम्नलिखित को जोड़कर ~ / .zshrc ने मेरे लिए OSX Mountain Lion पर काम किया।

bindkey -e
bindkey '[C' forward-word
bindkey '[D' backward-word

4
यह समाधान प्रत्येक उपयोग के साथ iTerm 2 में एक "घंटी" चलाता है, इसलिए शब्दों के बीच कूदना वास्तव में कष्टप्रद हो सकता है।
मैथ्यू मोर

1
किसी को भी यह पता लगाने के लिए कि यह कैसे घटाना है। @MatthewMorek
डैनियल कोबे

18
'\ e \ e' घंटी को रोकता है। टर्मिनल अनुकूलता मोड में iTerm 2 के साथ El Capitan पर मेरा विन्यास है bindkey "\e\e[D" backward-word bindkey "\e\e[C" forward-word
जोहान्स गोंट्रम

धन्यवाद, इसने macOs Sierra पर इस मुद्दे को हल किया। मुझे टर्मिनल या iTerm2 पर किसी भी घंटी की आवाज़ नहीं मिलती है।
रास्पो

आप इसे शब्दों के अंत से स्थानांतरित करने के लिए कैसे सेट करते हैं और शुरुआत या उन्हें नहीं?
Mafro34

22

MacOS उच्च Siera 10.13.6 या Mojave 10.14.2 पर और ZSH के साथ iTerm2 का उपयोग करते हुए मुझे ऐसे शब्दों से हटना होगा:

bindkey "\e\e[D" backward-word
bindkey "\e\e[C" forward-word

एक और समाधान rme ​​के लिए काम नहीं करता है


1
यह एकमात्र समाधान है जो मेरे लिए भी काम करता है। धन्यवाद! Mac OS Mojave
jamescampbell

ओएस कैटालिना पर भी काम करता है!
रीड रिचर्ड्स

7

हालांकि सख्ती से अपने सवाल का जवाब नहीं, डिफ़ॉल्ट के लिए बाध्यकारी forward-wordऔर backward-wordकर रहे हैं alt-fresp। alt-b

यह हर जगह काम करता है, आपको घर की पंक्ति को छोड़ने की आवश्यकता नहीं है, और एक अच्छी mnemonic संपत्ति (f = अग्रेषित, बी = बैक) है, जबकि यह भी संगत है ctrl-fऔर किया ctrl-bजा रहा है forward-characterऔर backward-character

अपने तीर कुंजी को चीर!


4
मेरे लिए zsh / iterm2 में काम नहीं करता, प्रिंट ƒ और c (cb cf काम करता है)।
डावरिन

2

मेरे लिए यह काम करने के लिए मैंने इस उत्तर का उपयोग किया , हालांकि मुझे कोड स्वैप करना था (बाएं <-> दाएं)

हेक्स कोड भेजें: 0x1b 0x66
Send + → हेक्स कोड भेजें: 0x1b 0x62

और मेरे लिए निम्नलिखित जोड़ें ~/.zshrc

bindkey -e
bindkey "^[b" forward-word
bindkey '^[f' backward-word

यह यकीनन कम भ्रमित करने वाला होगा यदि आप bindkeyइसके बजाय अपने एस को बदल ^[fदेते हैं forward-word, और न करने के लिए बाध्य करते हैं backward-word
निकोले

1

Mavericks (10.9.4) पर कोड 1; 5 है ... इसलिए तीर के साथ पूरी तरह से बांधने के लिए मेरे पास .zshrc का उपयोग करना है:

bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word

आप CTRL + V का उपयोग कर सकते हैं और फिर जिस कमांड का आप उपयोग करना चाहते हैं

Yosemite में रोब के समाधान का उपयोग करें


1
bindkey "[C" forward-word bindkey "[D" backward-word
फेरी

0

Zsh में, आप bindkeyकीबोर्ड शॉर्टकट देखने के लिए कमांड का उपयोग कर सकते हैं ।

bindkeyकस्टम कीबाइंडिंग के बिना उपलब्ध विकल्पों का पता लगाने के लिए उपयोग करें ।

अर्थात् ^[b पिछड़े एक शब्द स्थानांतरित करने के लिए और ^[fआगे एक शब्द भी ले जाने के लिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.