Bagaimana Anda menetapkan perintah ke kunci di Terminal?

10

Apakah ada solusi untuk menetapkan kombinasi tombol khusus untuk kata-kata dalam penggunaan terminal. Sebagai contoh, perintah yang kurang sangat berguna dan saya menggunakan banyak ia untuk menyalurkan output dari proses lain melewatinya.

Idenya adalah untuk mengatur kombinasi tombol khusus yang hanya aktif dalam penggunaan terminal ditugaskan untuk menulis perintah yang berbeda? Jadi menekan Ctrl+ Ldi jendela terminal bisa menulis

| less

atau Ctrl+ Gbisa berarti

| grep

Catatan: Maksud saya menambahkan huruf ke commandline tidak menjalankan akhirnya. Dengan cara yang sama, apa yang dimaksud dengan penyelesaian tab tapi lebih spesifik.

NES
sumber

Jawaban:

10

Ya, Anda bisa menggunakan perintah bind

bind '"\ey"':"\"less \C-m\""

Itu memetakan Alt-e ke perintah less dan menjalankannya (dengan \ Cm alias Ctrl-m)

Mungkin untuk | Anda harus menghindarinya.

bind '"\ey"':"\"\|less \C-m\""

Jika Anda hanya ingin menambahkannya ke baris perintah, hapus * * Cm \ ""

Hati-hati karena sudah ada beberapa binding yang didefinisikan:

Ctrl + A    Go to the beginning of the line you are currently typing on
Ctrl + E    Go to the end of the line you are currently typing on
Ctrl + L                Clears the Screen, similar to the clear command
Ctrl + U    Clears the line before the cursor position. If you are at the end of the line, clears the entire line.
Ctrl + H    Same as backspace
Ctrl + R    Let’s you search through previously used commands
Ctrl + C    Kill whatever you are running
Ctrl + D    Exit the current shell
Ctrl + Z    Puts whatever you are running into a suspended background process. fg restores it.
Ctrl + W    Delete the word before the cursor
Ctrl + K    Clear the line after the cursor
Ctrl + T    Swap the last two characters before the cursor
Esc + T     Swap the last two words before the cursor
Alt + F     Move cursor forward one word on the current line
Alt + B     Move cursor backward one word on the current line
Tab     Auto-complete files and folder names

Kunci Kontrol, seperti yang Anda lihat di atas, dibuat dengan Cm, sehingga Anda dapat memulai perintah yang lebih sedikit dengan Ctrl-g, sebagai berikut:

bind '"\ Cg"': "\" \ | less * \ Cm \ ""

Untuk mendapatkan kode kunci untuk Alt (hanya untuk ALT), Anda dapat menggunakan perintah baca dari shell:

@~$ read
^[y

^ [kamu sama dengan \ ey

Untuk info lebih lanjut, pertanyaan ini dijawab juga di stackoverflow:

/programming/4119991/bash-call-script-with-customized-keyboard-shortcuts

tmow
sumber
terima kasih, bagaimana saya bisa menghapus ikatan atau menampilkan semua ikatan?
NES
ada yang salah dengan 2 contoh pertama Anda. selalu mencetak juga wildcard setelah kurang dari yang saya tetapkan dengan sintaks mengikat Anda.
NES
bind -p dan bind -P akan menunjukkan semua binding. Saya membuat kesalahan dengan bintang ... Saya memperbarui jawabannya
tmow
Terima kasih banyak. mungkin Anda punya ide bagaimana mencapai tujuan yang sama pada ikan? saya mendapatkannya sejauh ini untuk bekerja tetapi masalahnya adalah bahwa ikan tampaknya secara otomatis menjalankan perintah, bukan hanya menambahkan string ke commandline secara default. di sini adalah manual linux.die.net/man/1/bind Sayangnya contohnya tidak ada yang sangat membantu untuk kasus saya.
NES
Ini sudah merupakan fungsi bawaan saya rasa fishshell.com/user_doc/index.html#editor menggugat pintasan Alt-p
tmow