.inputrc TAB ไม่ทำงานตามที่คาดไว้


11

วันนี้ฉันมีคำถามอื่นอีก:

ทำไมเมื่อฉันใส่สิ่งเหล่านี้เข้าไป.inputrcพวกเขาทั้งสองทำสิ่งเดียวกัน

TAB: menu-complete
Shift-TAB: menu-complete-reverse

เช่นพวกเขาทั้งสองทำสิ่งที่คนสุดท้ายพูด

คำตอบ:


15

Readline ไม่รู้อะไรเกี่ยวกับโมดิฟายเออร์ที่เรียกShiftและไม่สนใจชื่อโมดิฟายเออร์ที่ไม่รู้จักอย่างเงียบ ๆ ลองwibble-TABดู

ในการผูกการกระทำกับShift+ Tabคุณจะต้องค้นหาลำดับการหลบหนีที่เทอร์มินัลของคุณส่ง ในทุบตีวิ่งcatและประเภทCtrl+ Vแล้ว+Shift Tabสิ่งนี้จะแทรกลำดับการหลบหนีอย่างแท้จริง เป็นไปได้ว่าตัวอักษรตัวแรกจะเป็นตัวหนีแสดงเป็น^[; เทอร์มินัลต่าง ๆ มีลำดับการหลีกเลี่ยงที่แตกต่างกัน แต่ความเป็นไปได้ทั่วไปคือ␛[Z(เช่นการหลบหนีวงเล็บซ้ายตัวพิมพ์ใหญ่ Z) และ␛␉(เช่นการหลบหนีแท็บ) ผูกกุญแจไว้อย่างเหมาะสมใน~/.inputrc(ซึ่ง\eหมายถึงอักขระหลบหนี)

"\e\t": menu-complete-backward
"\e[Z": menu-complete-backward

1
อา^[Zทำงานให้ฉัน (BASH); ขอบคุณสำหรับคำตอบอย่างละเอียด! :)
user541686

คุณกด Enter ก่อนหรือหลัง 'cat' หรือไม่ ทำไมต้องเป็น 'cat' ดูเหมือนว่าฉันจะได้รับ escape sequences เดียวกันโดยไม่มี 'cat'
dougkramer

@ douglas.kramer การcatหลีกเลี่ยงการผูก bash ใด ๆ โดยทั่วไปแล้ว bash จะมีการกด Ctrl + V เหมือนกันเพื่อแทรกตัวอักษรตัวถัดไปดังนั้นมันจึงไม่ได้สร้างความแตกต่าง
Gilles 'หยุดความชั่วร้าย'

ฉันมีปัญหาในการรับ Shift + Tab เพื่อผูกกับ 'shell-expand-command' ฉันได้รับ: $ cat <Enter> <Shift+Tab>จอแสดงผลใด^[[Z ฉันจะเพิ่ม\eล่วงหน้าตามลำดับที่ได้รับเสมอCtrl+Vหรือไม่ สิ่งนี้แปลเป็น:"\e^[[Z": shell-expand-command
dougkramer


4

บน Xubuntu 16.04 เทอร์มินัล: xfce4-terminal 0.6.3, shell: bash

สำหรับShift+ Tabในการทำงานฉันต้องใช้:

bind '"\e[Z": menu-complete-backward'

กำลัง~/.bash_profileใช้งาน: bind TAB:menu-completeและbind '"\e[Z": menu-complete-backward'(บันทึกการใช้คำพูดเดี่ยวและคู่!)
Erik
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.