ऑल्ट-लेफ्ट टू स्किप शब्द टर्मिनल एमुलेटर में काम नहीं करता है


16

पिछली नौकरी में एक डेबियन व्हीज़ी मशीन पर, मुझे सक्रिय कमांड-लाइन (बैश) पर शब्दों के बीच में छोड़ने के लिए Alt + Left और Alt + Right का उपयोग किया गया।

हालांकि, जब से घर पर मैंने जेसी (डेबियन 8.0, परीक्षण शाखा) को अपग्रेड किया है, यह अब काम नहीं करता है: पिछले शब्द को छोड़ देने के बजाय, Alt-Left कुछ ऐसा प्रिंट करता है Dया [D। ओटोह, अगर मैं ssh खोलता हूं और अपने हेडलेस डेबियन व्हीजी से जुड़ता हूं, तो यह पूरी तरह से काम करता है।

इसके अलावा, मैंने अभी अपनी नई नौकरी में फेडोरा 20 को स्थापित किया है और यहां व्यवहार समान है। यह बैश, csh और ksh (के तहत शुरू env -i), साथ ही rxvt-unicode और xfce4- टर्मिनल पर लागू होता है, इसलिए यह इन स्तर के बाहर कुछ होना चाहिए।

स्टैक में और कहां मुझे अंतर ढूंढना चाहिए?


4
मैं alt-b और alt-f (साथ ही बाकी रीडलाइन कीज़) आज़माने का सुझाव दूंगा, क्योंकि वे अधिक सार्वभौमिक हैं, और काफी संख्या में कमांड लाइन प्रोग्राम रीडलाइन बाइंडिंग का सम्मान करते हैं।
संकोची

जवाबों:


21

आपके पास संभवतः एक स्थानीय ~/.inputrcया वैश्विक /etc/inputrcफ़ाइल थी जो अपग्रेड पर खो गई थी। ~/.inputrcनिम्नलिखित लाइनों के साथ एक फ़ाइल बनाने के लिए एक आसान फिक्स है :

## enable Alt-arrows 
"\e[1;3D": backward-word ### Alt left
"\e[1;3C": forward-word ### Alt right

उन के साथ काम करेंगे xtermऔर terminatorऔर gnome-terminalलेकिन हो सकता है की जरूरत अन्य टर्मिनलों के लिए बदलाव किया जाना है। दुर्भाग्य से, प्रत्येक टर्मिनल एमुलेटर एक अलग सिंटैक्स का उपयोग कर सकता है। कुछ और विवरणों के लिए, मेरा जवाब यहां देखें ।


मैं वास्तव में Alt का मतलब था, और यह अभी भी रिमोट मशीन पर काम करता है। Ctrl + बाएँ / दाएँ को पहले से ही बाएँ और दाएँ टैब को स्थानांतरित करने के लिए Rxvt में लिया गया है (Shift + बाएँ / दाएँ स्विचिंग टैब और Shift + डाउनिंग नया एक खोलना)।
एलोइस महदाल

1
जिस तरह से GUI संपादकों में Ctrl + Left / Right सामान्य है, वैसे टर्मिनल पूरी तरह से अलग दुनिया हैं जहाँ मैंने अभी तक उस संयोजन को नहीं देखा है।
एलोइस महदाल

10

terdon ने मुझे सही दिशा में सेट किया: inputrc फ़ाइल।

अपराधी यह है कि काफी गैर-सहज रूप से, readline6 वास्तव में ~ / .inputrc के बजाय / etc / inputrc का उपयोग करता है , जो कि readline (3) जोर नहीं देता है और न ही छूट देता है:

इस फ़ाइल का नाम INPUTRC पर्यावरण चर के मान से लिया गया है। यदि वह चर अप्रभावित है, तो डिफ़ॉल्ट ~ / .inputrc है। यदि वह फ़ाइल मौजूद नहीं है या नहीं पढ़ी जा सकती है, तो अंतिम डिफ़ॉल्ट / etc / inputrc है।

तो जबकि डेबियन मशीनों / etc / inputrc दोनों में समान है जो कि libreadline6 पैकेज द्वारा प्रदान किया गया है (संस्करण समान है), नई मशीन पर ~ / .inputrc सिंगल लाइन के साथ मौजूद है set bell-style none:। जब यह फ़ाइल हटा दी जाती है, तो सभी ठीक काम करते हैं (नीचे नोट्स देखें)।

मैं कल तक फेडोरा की जांच नहीं कर सकता, लेकिन मुझे लगता है कि यह वही समस्या है। अपडेट: फेडोरा पर, ~ / .inputrc मौजूद नहीं था, यहां / etc / inputrc बस अलग है इसलिए यह इसे परिभाषित नहीं कर सकता है। एक हॉटफिक्स के रूप में मैंने बस डेबियन के इनपुट आर्क को मेरे ~ / .inputrc के रूप में सहेजा है।


टिप्पणियाँ:

यह रहस्य कि यह 7> 8 अपग्रेड के दौरान कैसे बदल गया, अनसुलझा रह गया, लेकिन आंशिक रूप से मेरी बुरी याद और कुछ अनजाने डॉटफाइल्स की करतूत का भी हिसाब लगाया जा सकता है। (BTW यह APT अपग्रेड नहीं था, बल्कि फिर से इनस्टॉल और मैन्युअल डॉटफाइल चल रहा था, इसलिए हो सकता है कि ~ .inputrc किसी तरह से मिल जाए।)

इसके अलावा, जब मैं ठीक कहता हूं, मेरा मतलब है कि यह Rxvt को छोड़कर हर जगह Ctrl के साथ काम करता है (ठीक है, मैंने केवल xfce4-टर्मिनल की जांच की है लेकिन हम जानते हैं कि Rxvt सामान्य विद्रोही है), जहां यह Alt को रीमैप किया गया है, जाहिरा तौर पर क्योंकि Ctrl को Rxvt द्वारा लिया गया है - विशिष्ट कार्यक्षमता - सूची में सक्रिय टैब ले जाएं।

जैसा कि मैनपेज में उल्लेख है, बैश के साथ आप वर्तमान में आपके पास क्या है, इसकी जांच के लिए अंतर्निहित बाइंड कमांड का उपयोग कर सकते हैं।


अच्छी पकड़, +1। वास्तव में, यह आपके विचार से अधिक सहज है। डिफॉल्ट व्यवहार उपयोगकर्ता-विशिष्ट डॉटफ़ाइल्स के लिए सिस्टम-वाइड डिफॉल्ट्स पर पूर्वता है। अन्यथा, उपयोगकर्ता अपनी सेटिंग नहीं बदल पाएंगे।
terdon

Alt + तीरों को विशेष रूप से सक्षम करने के लिए अद्यतन उत्तर देखें।
terdon

2
यह सामान्य है, आपको $include /etc/inputrcसबसे ऊपर की आवश्यकता है ~/.inputrcयदि आप उसे भी पढ़ना चाहते हैं।
क्रिस डाउन

@terdon यह पूरी तरह समझ में आता है से पहले पूरे सिस्टम में उपयोगकर्ता सेटिंग्स को पसंद करते हैं, लेकिन क्या मैं के रूप में अधिक सहज ज्ञान युक्त देखना चाहते हो सकता है कि ~ / .initrc होगा में / etc / initrc (यानी / etc / initrc होगा "विलय कर दिया" $includeघ डिफ़ॉल्ट रूप से)।
एलोइस महदाल

1
देखें: 1. हार्ड-कोडित विकल्प, 2. / etc / initrc, 3. ~ / .initrc --vs-- 1. हार्ड-कोडेड विकल्प 2. / etc / initrc या ~ / .initrc। पहला तरीका बहुत अधिक लचीला है क्योंकि इसे आसानी से निचले स्तर तक बढ़ाया जा सकता है (उदाहरण के लिए, प्रति परियोजना, अच्छी तरह से मैं मानता हूं कि यह उदाहरण रीडलाइन के साथ बहुत अधिक समझ में नहीं आता है लेकिन आपको बिंदु मिलता है)।
एलोइस महदाल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.