.inputrc TAB tidak berlaku seperti yang diharapkan

11

Saya siap hari ini, ini pertanyaan lain:

Kenapa ketika saya memasukkan ini ke dalam .inputrc, mereka berdua melakukan hal yang sama?

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

yaitu mereka berdua melakukan apa pun yang dikatakan terakhir.

pengguna541686
sumber

Jawaban:

15

Readline tidak tahu apa-apa tentang pengubah yang dipanggil Shift, dan diam-diam mengabaikan nama pengubah yang tidak dikenal. Coba wibble-TAB.

Untuk mengikat tindakan ke Shift+ Tab, Anda perlu mencari tahu urutan escape apa yang dikirim terminal Anda. Di bash, jalankan catdan ketik Ctrl+ Vlalu Shift+ Tab. Ini akan menyisipkan urutan melarikan diri secara harfiah. Kemungkinan karakter pertama adalah karakter pelarian, ditampilkan sebagai ^[; terminal yang berbeda memiliki urutan escape yang berbeda, tetapi kemungkinan yang umum adalah ␛[Z(yaitu escape, bracket kiri, modal Z) dan ␛␉(yaitu escape, tab). Ikat kunci dengan tepat di ~/.inputrc( di mana \eberarti karakter melarikan diri).

"\e\t": menu-complete-backward
"\e[Z": menu-complete-backward
Gilles 'SANGAT berhenti menjadi jahat'
sumber
1
Ah, ^[Zbekerja untuk saya (BASH); terima kasih atas jawaban terinci! :)
user541686
Apakah Anda menekan Enter sebelum atau setelah 'kucing'? Mengapa 'kucing' dibutuhkan? Saya sepertinya mendapatkan urutan pelarian yang sama tanpa 'kucing'.
dougkramer
@ douglas.kramer Running catmenghindari bash binding. Biasanya bash memiliki ikatan Ctrl + V yang sama untuk menyisipkan karakter berikutnya secara harfiah sehingga tidak ada bedanya.
Gilles 'SANGAT berhenti menjadi jahat'
Saya kesulitan mendapatkan Shift + Tab untuk mengikat 'shell-expand-command'. Saya mendapatkan: $ cat <Enter> <Shift+Tab>tampilan mana ^[[Z Apakah saya selalu menambahkan \esebelum urutan yang saya dapatkan Ctrl+V? Apakah ini diterjemahkan ke:"\e^[[Z": shell-expand-command
dougkramer
@Anda Ganti ^[dengan `\ e`
Gilles 'SO- stop being evil'
4

Pada Xubuntu 16.04, terminal: xfce4-terminal 0.6.3, shell: bash

Agar Shift+ Tabberfungsi, saya harus menggunakan:

bind '"\e[Z": menu-complete-backward'
Raizul
sumber
Sedang ~/.bash_profiledigunakan: bind TAB:menu-completedan bind '"\e[Z": menu-complete-backward'(perhatikan penggunaan tanda kutip tunggal dan ganda!).
Erik