Ini menunjukkan bahwa pengikatan kunci default Meta+Esc(dan Ctrl+i) dalam mode pengeditan baris perintah Emacs adalah fungsi Readline complete. The Metakey biasanya Escpada keyboard tanpa eksplisit Metakunci. Dokumentasi Readline untuk fungsi ini mengatakan
Mencoba melakukan penyelesaian pada teks sebelum titik. Penyelesaian aktual yang dilakukan adalah khusus aplikasi. Bash, misalnya, mencoba menyelesaikan memperlakukan teks sebagai variabel (jika teks dimulai dengan $), nama pengguna (jika teks dimulai dengan
~), nama host (jika teks dimulai dengan @), atau perintah (termasuk alias dan fungsi) pada gilirannya. Jika tidak ada yang menghasilkan kecocokan, nama file selesai dicoba. Gdb, di sisi lain, memungkinkan penyelesaian fungsi dan variabel program, dan hanya mencoba penyelesaian nama file dalam keadaan tertentu.
Mengenai komentar Anda untuk jawaban Anthon : Tidak, menekan Escdua kali tidak sama dengan menekan pada Tabumumnya (kecuali jika ada di program yang memetakan keduanya ke tindakan yang sama, seperti yang dilakukan Readline secara default). Namun Ctrl+iadalah sama dengan Tab, seperti Ctrl+[sama dengan Esc. Ini berarti bahwa Anda dapat melakukan penyelesaian dengan Ctrl+[Ctrl+[in bashjika Anda mau, asalkan dobel Escterikat pada completefungsi Readline . Ini berguna jika Anda bekerja di terminal VT220, misalnya, yang tidak memiliki tombol Escape:
Kusalananda, terima kasih atas jawaban mendalam ini. Tentang poin terakhir Anda: mengapa menekan Escdua kali (atau \M-\e) tidak sama dengan Tabdi bash, jika keduanya selesai?
flow2k
1
@ flow2k Adalah sama jika kedua Esc-Esc dan Tab terikat ke completefungsi, yang secara default, tetapi tidak secara umum (yaitu penekanan tombol tidak "sama"). Anda tidak dapat mengganti Tab dengan Esc-Esc di mana saja, hanya di program yang mampu membaca. Namun, Anda dapat mengganti Tab dengan Ctrl-i atau Esc dengan Ctrl- [di mana saja.
Kusalananda
Tindak lanjut jika saya boleh: Saya tidak melihat Tabdi output dari bind -p. Mengapa demikian? Mungkin karena Tab"hardcoded" dan tidak dapat diikat?
flow2k
1
@ flow2k Tidak, Tab identik dengan Ctrl-i. Carilah \C-i. Ini adalah kesetaraan pada tingkat perangkat keras.
Kusalananda
8
Itu disebut penyelesaian file, dan jika Anda tidak memiliki perintah sebelumnya pada commandline, bash akan menawarkan Anda untuk menyelesaikan semua 2837 perintah yang diketahuinya, baik yang terpasang maupun yang ditemukan di Anda PATH
Esc
dua kali (atau\M-\e
) tidak sama denganTab
di bash, jika keduanya selesai?complete
fungsi, yang secara default, tetapi tidak secara umum (yaitu penekanan tombol tidak "sama"). Anda tidak dapat mengganti Tab dengan Esc-Esc di mana saja, hanya di program yang mampu membaca. Namun, Anda dapat mengganti Tab dengan Ctrl-i atau Esc dengan Ctrl- [di mana saja.Tab
di output daribind -p
. Mengapa demikian? Mungkin karenaTab
"hardcoded" dan tidak dapat diikat?\C-i
. Ini adalah kesetaraan pada tingkat perangkat keras.Itu disebut penyelesaian file, dan jika Anda tidak memiliki perintah sebelumnya pada commandline, bash akan menawarkan Anda untuk menyelesaikan semua 2837 perintah yang diketahuinya, baik yang terpasang maupun yang ditemukan di Anda
PATH
Disajikan dalam urutan
sumber