मैं आज एक रोल पर हूं, यहां एक और सवाल है:
कैसे आते हैं जब मैं इन में डाल दिया .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) काम किया; विस्तृत उत्तर के लिए धन्यवाद! :)