मैं आज एक रोल पर हूं, यहां एक और सवाल है:
कैसे आते हैं जब मैं इन में डाल दिया .inputrc, वे दोनों एक ही काम करते हैं?
TAB: menu-complete
Shift-TAB: menu-complete-reverse
यानी वे दोनों जो कुछ भी करते हैं, आखिरी कहते हैं।
मैं आज एक रोल पर हूं, यहां एक और सवाल है:
कैसे आते हैं जब मैं इन में डाल दिया .inputrc, वे दोनों एक ही काम करते हैं?
TAB: menu-complete
Shift-TAB: menu-complete-reverse
यानी वे दोनों जो कुछ भी करते हैं, आखिरी कहते हैं।
जवाबों:
Readline नामक एक संशोधक के बारे में कुछ भी नहीं जानता है Shift, और चुपचाप अज्ञात संशोधक नामों की उपेक्षा करता है। कोशिश करो wibble-TAB।
Shift+ के लिए एक क्रिया को बांधने के लिए Tab, आपको यह पता लगाना होगा कि आपका टर्मिनल किस एस्केप सीक्वेंस को भेजता है। Bash में, रन catऔर टाइप करें Ctrl+ Vफिर Shift+ Tab। यह भागने के क्रम को शाब्दिक रूप से सम्मिलित करेगा। यह संभावना है कि पहला चरित्र एक भागने चरित्र होगा, जैसा कि दिखाया गया है ^[; अलग-अलग टर्मिनलों में अलग-अलग एस्केप सीक्वेंस होते हैं, लेकिन सामान्य संभावनाएं होती हैं ␛[Z(जैसे बचना, बाएं ब्रैकेट, कैपिटल जेड) और ␛␉(यानी एस्केप, टैब)। कुंजी को उचित रूप से बाँधें ~/.inputrc(जहाँ \eभागने का मतलब है)।
"\e\t": menu-complete-backward
"\e[Z": menu-complete-backward
catकिसी भी बैश बंधन से बचा जाता है। आमतौर पर बैश में अगले अक्षर को डालने के लिए एक ही Ctrl + V बाइंडिंग होता है, ताकि उसे कोई फर्क न पड़े।
$ cat <Enter> <Shift+Tab>जो प्रदर्शित करता है ^[[Z क्या मैं हमेशा \eउस अनुक्रम से आगे जोड़ता हूं जो मुझे मिलता है Ctrl+V? क्या यह इसका अनुवाद करता है:"\e^[[Z": shell-expand-command
^[`\ e`
Xubuntu 16.04 पर, टर्मिनल: xfce4- टर्मिनल 0.6.3, शेल: बैश
के लिए Shift+ Tabकाम करने के लिए मैं का इस्तेमाल किया था:
bind '"\e[Z": menu-complete-backward'
~/.bash_profileउपयोग: bind TAB:menu-completeऔर bind '"\e[Z": menu-complete-backward'(सिंगल और डबल उद्धरण का उपयोग ध्यान दें!)।
^[Zमेरे लिए (BASH) काम किया; विस्तृत उत्तर के लिए धन्यवाद! :)