GNU/Linux >> Belajar Linux >  >> Linux

ubah tombol pintasan bash seperti Ctrl-C?

Itu bukan fitur bash, itu fitur driver terminal. Dengan demikian, mereka ditentukan oleh stty(1) .

$ stty -a
speed 38400 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;
swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

Ini hampir benar-benar terpecahkan sekarang. Bagian dari solusi pertama kali menarik perhatian saya oleh MTK358 di http://www.linuxquestions.org/questions/linux-software-2/change-bash-shortcut-keys-such-as-ctrl-c-818170/ . Dia menunjukkan fakta (agak jelas, yang membuat saya malu) bahwa tombol pintas salin dan tempel dapat dengan mudah diubah oleh pengaturan menu konsole. Begitu saya melihatnya, butuh waktu sekitar 1 menit untuk menyiapkan Ctrl-C dan Ctrl-V untuk menyalin dan menempel dengan terminal.

Bagian lain dari solusi seharusnya sudah jelas dari halaman manual stty, tetapi tidak (bagi saya). Saya akhirnya hanya bereksperimen berdasarkan berbagai petunjuk, seperti yang diposting di atas.

Saya memutuskan kunci non-numerik mana yang ingin saya ganti Ctrl-C sebagai perintah terminasi. (Saya menggunakan "k"). Saya tidak pernah menemukan info tentang cara menyampaikan pengubah shift ke stty, jadi saya menyerah. Dengan keputusan itu, yang harus saya lakukan hanyalah memasukkan yang berikut ini di baris perintah:

sty intr \^k

Saya memverifikasi bahwa semuanya berfungsi seperti yang diinginkan.

Sekarang saya hanya perlu menempatkan satu perintah di atas (stty intr \^k) dalam skrip startup. Saya tidak yakin yang mana yang "tepat". Saya ingin perubahan ini diterapkan di seluruh sistem dan permanen.

Adakah saran untuk skrip mana saya harus menempatkan perintah?

Dan akhirnya, mengenai balasan khotbah, itu tidak perlu dan tidak membantu.


Beberapa di antaranya dapat diatur menggunakan mekanisme pintasan keyboard KDE biasa. Di menu "Pengaturan" Konsole, klik "Konfigurasikan Pintasan", dan Anda akan mendapatkan dialog yang dapat Anda gunakan untuk mengubah ikatan kunci untuk fungsi yang ditangani oleh KDE. Itu akan memungkinkan Anda untuk memetakan kembali Ctrl+C untuk menyalin dan Ctrl+V untuk menempel - tetapi perlu diingat bahwa setelah Anda melakukannya, urutan kunci tersebut tidak akan lagi diteruskan ke terminal, jadi Anda tidak akan dapat menggunakan Ctrl+C untuk menghentikan program, misalnya.

Fungsi lainnya dikontrol oleh readline perpustakaan, yang dapat Anda konfigurasikan dengan mengedit file ~/.inputrc . Agar Ctrl+Z mengembalikan hasil edit apa pun yang dilakukan pada baris saat ini, Anda ingin menambahkan

C-z: revert-line

tetapi urutan kunci itu mungkin sudah dijebak oleh terminal, jadi Anda mungkin harus menggunakan stty untuk melepaskan ikatannya sebelum berhasil. Pertama cari ^Z dalam keluaran stty -a (seperti yang ditunjukkan dalam jawaban Ignacio) dan kemudian, misalnya, jika muncul di susp = ^Z , jalankan

stty susp ^-

untuk melepaskan pemetaan kunci itu.

Perubahan lain yang Anda tanyakan harus dilakukan dengan stty seperti yang dikatakan Ignacio, karena itu adalah fungsi terminal, tapi saya tidak yakin persis bagaimana caranya. Masalahnya adalah saya tidak tahu apakah terminal mengenali Shift, atau jika ya, bagaimana menyampaikan informasi itu ke stty .


Linux
  1. 9 Tombol Pintasan Pemutar Media VLC yang Berguna

  2. 10 tombol pintas penulis LibreOffice yang berguna

  3. Bash:Tombol Shift+panah Buat A,b,c,d?

  1. Tombol Pintasan yang Independen dengan Tata Letak Keyboard?

  2. Bagaimana Cara Mengubah Cron Shell (sh ke Bash)?

  3. Bagaimana Cara Mengubah Pintasan Kata Sebelumnya/Berikutnya Di Bash?

  1. Bagaimana cara mengubah penyelesaian riwayat bash untuk menyelesaikan apa yang sudah dipertaruhkan?

  2. Bagaimana cara mengubah direktori di Git Bash dengan Git untuk Windows?

  3. Bash:Tidak ada file atau direktori seperti itu?