Menjalankan fungsi readline tanpa mengikat kunci?

26

Saya baru saja membaca halaman manual readline dan menemukan banyak perintah hebat yang tidak saya ketahui. Namun, beberapa tidak memiliki ikatan kunci default. Apakah ada cara untuk menjalankan perintah tidak terikat dari shell?

Saya tidak bertanya bagaimana cara mengikat perintah di ~ / .inputrc, tetapi bagaimana menjalankannya sebagai "satu" dari shell atau dalam skrip bash.

Misalnya, perintah "dump-variable". Apakah ada beberapa perintah yang bisa saya beri "dump-variable" sebagai argumen untuk menjalankannya?

erikcw
sumber
2
Saya tidak berpikir ada, dari sekilas ke manual dan sumber readline.
Jim Paris

Jawaban:

10

Saya percaya apa yang Anda cari adalah bindperintah itu sendiri. Menurut man builtininformasi yang berjalan bind <readline-command>memungkinkan Anda untuk menjalankan satu kali, namun, saya tidak bisa membuatnya berfungsi seperti yang dikatakan manual ... itu terus membuat kunci tidak berfungsi untuk saya; jarak tempuh Anda dapat bervariasi. Saya memang menemukan perintah berikut yang mungkin berguna bagi Anda.

bind -p # Equivalent to dump-functions [machine readable]
bind -P # Equivalent to dump-functions [human readable]

bind -s # Equivalent to dump-macros    [machine readable]
bind -S # Equivalent to dump-macros    [human readable]

bind -v # Equivalent to dump-variables [machine readable]
bind -V # Equivalent to dump-variables [human readable]

Sunting Catatan Saya ingin menunjukkan betapa menjengkelkannya karena tidak berfungsi seperti yang dikatakan manual karena jika Anda mengetik binddan kemudian tekan tab untuk lengkapi-otomatis, ini menunjukkan semua perintah.

sparticvs
sumber
3
Kembali secara langsung memanggil fungsi readline: Saya tidak berpikir manual ini sebenarnya mengklaim bahwa Anda dapat melakukannya; dalam kasus Anda merujuk pada bentuk sintaksis bind readline-command: Saya menduga commandada singkatan untuk garis definisi (pemetaan), bukan fungsi readline yang langsung dapat dipanggil . Penyelesaian otomatis merupakan hal yang sudah diatur sebelumnya secara eksplisit pada beberapa platform (misalnya, Fedora 20), tetapi tidak pada banyak platform lainnya ; kehadirannya TIDAK berarti bahwa Anda dapat memanggil fungsi-fungsi readline langsung - itu adalah cukup "bodoh" perintah selesai spesifikasi: penyelesaian bekerja pada setiap argumen yang diberikan untuk bind.
mklement0
1
+1 untuk perintah untuk mencantumkan fungsi / makro / variabel yang berlaku; itu layak menambahkan -Xuntuk perintah shell (didefinisikan melalui -x).
mklement0