keyboard - Zsh में होम/एंड चाबियाँ पोटीनी के साथ काम नहीं करते हैं




terminal terminal-emulator (4)

मैं एक Ubuntu बॉक्स पर डिफ़ॉल्ट शेल के रूप में zsh चला रहा हूं, और सब कुछ गनोम-टर्मिनल का उपयोग करके ठीक काम करता है (जहां तक ​​मुझे पता है कि एक्सट्रैम emulates है)। जब मैं एक खिड़कियों के बॉक्स से एसएसएच और पोटीन (जो भी एक्सट्रैम को एम्यूलेट करता है) के माध्यम से लॉगिन करता / करती हूं तो घर / एंड की चाबियाँ अब काम नहीं करती हैं।

मैं यह हल करने में सफल रहा हूं कि इन लाइनों को मेरे zshrc फ़ाइल में जोड़ने के लिए ...

bindkey '\e[1~' beginning-of-line
bindkey '\e[4~' end-of-line

... लेकिन मैं अभी भी सोच रहा हूं कि यहां क्या गलत है। कोई उपाय?


यह एक पोटीली बात है गनोम-टर्मिनल कोड को भेजता है ^[OH और ^[OF लिए गृह और अंत क्रमशः, पोटीनी भेजते समय ^[[1~ और ^[[4~पटकथा में मानक मोड से आरएक्सवीटी मोड तक होम / एंड चाबियाँ बदलने के लिए एक विकल्प है, और यह होम की को ठीक करने के लिए लगता है, लेकिन एंड कुंजी नहीं है (जो अब ^[Ow भेजता है) लगता है कि यह समय बग रिपोर्ट दर्ज करने का समय है ... :-)


ये बाइंडिंग केवल emacs मोड में सेट डिफ़ॉल्ट बाइंडिंग का हिस्सा नहीं है।

"बाइंडकी-ए" चलाने के बाद मेरे डिफ़ॉल्ट zsh इंस्टॉलेशन पर "कहाँ से शुरू-रेखा है" को निष्पादित करता है, यह केवल ^ के लिए बाध्य है। शायद आप zsh डेवलपर्स क्यों पूछना चाहिए :-)


उचित जवाब जो सभी डिस्टर्स में पोर्टेबल होना चाहिए (जरूरी नहीं कि सभी संस्करण zsh हालांकि, यहां ymmv) zkbd से zkbd सहायक उपयोगिता का उपयोग करना है।

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

Zkbd को एक autoloaded फ़ंक्शन के रूप में चलाएं, या एक शेल स्क्रिप्ट के रूप में:

zsh -f ~/zsh-4.3.17/Functions/Misc/zkbd

जब आप zkbd चलाते हैं, तो वह पहले आपको अपना टर्मिनल टाइप करने के लिए कहता है; यदि यह डिफ़ॉल्ट प्रदान करता है तो सही है, केवल वापसी वापस दबाएं यह आपको अपने कुंजीपटल और टर्मिनल की विशेषताओं को निर्धारित करने के लिए कई अलग-अलग कुंजियां दायर करने के लिए कहता है; zkbd आपको चेतावनी देता है कि क्या यह सामान्य से कुछ भी पाता है, जैसे कि हटाए गए कुंजी, जो न तो ^ H और ^? भेजता है।

Zkbd द्वारा पढ़े गए कीस्ट्रोक्स को एक एसोसिएटिव एरे नाम की कुंजी के लिए एक परिभाषा के रूप में दर्ज किया जाता है, जिसे उपनिर्देशिका .zkbd में या तो आपके HOME या ZDOTDIR निर्देशिका में फाइल में लिखा जाता है। फाइल का नाम टीईआरएम, वेंडर और ओस्टाइपीई पैरामीटर्स से बना है, जो हाइफ़न से जुड़ गया है।

आप इस फ़ाइल को अपने .zshrc या किसी अन्य स्टार्टअप फ़ाइल को source' or साथ पढ़ सकते हैं। आज्ञाओं, फिर बाइंडकी कमांड में कुंजी पैरामीटर का संदर्भ लें, जैसे:

          source ${ZDOTDIR:-$HOME}/.zkbd/$TERM-$VENDOR-$OSTYPE
          [[ -n ${key[Left]} ]] && bindkey "${key[Left]}" backward-char
          [[ -n ${key[Right]} ]] && bindkey "${key[Right]}" forward-char
          # etc.

ध्यान दें कि काम करने के लिए `autoload zkbd 'के लिए, zkdb फ़ाइल को आपके fpath सरणी में नामित एक निर्देशिका में होना चाहिए (देखें zshparam (1))। यदि आपके पास मानक zsh अधिष्ठापन है तो यह पहले से ही मामला हो सकता है; अगर ऐसा नहीं है, तो कार्य / विविध / zkbd को एक उपयुक्त निर्देशिका में कॉपी करें।

man -P "less -p 'keyboard definition'" देखें man -P "less -p 'keyboard definition'" zshcontrib, या मेटा-मैनपेज zshall


यह मेरे लिए काम कर रहा है

bindkey -v

bindkey '\eOH'  beginning-of-line
bindkey '\eOF'  end-of-line