Berkat pertanyaan Anda, saya akhirnya membaca dan meningkatkan pemahaman saya, tepuk tangan!
Jadi, sumber informasi yang sangat bagus adalah man readline
. Ikatan kunci yang ditentukan dalam berbagai inputrc
file mengontrol cara kerja pustaka readline BASH. Menurut halaman manual readline Anda dapat menggunakan nama kunci simbolis atau urutan melarikan diri:
Key Bindings
The syntax for controlling key bindings in the inputrc file is
simple. All that is required is the name of the command or
the text of a macro and a key sequence to which it should be
bound. The name may be specified in one of two ways: as a sym‐
bolic key name, possibly with Meta- or Control- prefixes, or
as a key sequence. The name and key sequence are separated by
a colon. There can be no whitespace between the name and the
colon.
When using the form keyname:function-name or macro, keyname is
the name of a key spelled out in English. For example:
Control-u: universal-argument
Meta-Rubout: backward-kill-word
Control-o: "> output"
Halaman manual juga menyatakan bahwa file konfigurasi default adalah ~/.inputrc
jadi saya sarankan untuk menempatkan binding Anda di sana.
Jika Anda ingin menggunakan tombol huruf biasa (misalnya Kontrol -g ), Control-g: forward-word
bekerja dengan baik. Tombol panah lebih sulit. Saya mencoba, dan gagal, menemukan kunci nama untuk tombol panah. Tak satu pun dari yang saya coba (left-arrow
, left
, :left
) berfungsi jadi sepertinya kita terjebak dengan escape sequence.
Sayangnya, urutan pelarian yang tepat berbeda antara emulator terminal (itulah sebabnya inputrc Ubuntu Anda memiliki banyak baris). Untuk mengetahui escape sequence mana yang digunakan terminal favorit Anda, jalankan read
lalu ketik urutan kunci yang Anda minati. Di terminator
, xterm
dan gnome-terminal
, Kontrol -Kiri berikan:
$ read
^[[1;5D
di aterm
:
$ read
^[Od <-- that is a capital O not a zero (0).
Dengan sedikit bereksperimen, saya menemukan bahwa ^[[D
adalah Kiri dan ^[[1;5D
adalah Kontrol -Kiri . ^[
pertama adalah Esc kunci, digunakan di sini, saya kira, untuk menunjukkan urutan pelarian .
Bagaimanapun, untuk mengikat Kontrol -Kiri ke forward-word
dengan cara yang sesuai untuk semua orang, saya menambahkan baris ini ke ~/inputrc
saya :
"\e[1;5D": backward-word
"\eOd": backward-word
Untuk alasan yang belum sepenuhnya saya pahami, Kontrol diwakili oleh \e
yang harus menjadi Esc .
~/.inputrc
terakhir saya file yang berfungsi untuk semua terminal yang tercantum di atas adalah:
"\e[1;5D": backward-word
"\eOd": backward-word
"\e[1;5C": forward-word
"\eOc": forward-word