Korn Shell: Akhiri, pgup, pgdown, dan hapus kunci tidak berfungsi

8

Jadi pada dasarnya saya End, Pageup/ Pagedown, dan Deletekunci tidak berfungsi di ksh93. Saya menjalankan FreeBSD.

Tombol panah saya berfungsi, dan begitu juga kunci rumah saya.

Kunci-kunci itu berfungsi ketika saya memasukkan ini ke dalam .kshrc

set -o emacs

Saya telah mencoba melakukan INI , dengan meletakkan ini di laptop saya .kshrc. Untuk membuat Endkuncinya bekerja.

alias __Y=`echo "\005"`     # end = ^e = end of line

Saya membuka vim, dan menekan Ctrlv, dan mengetik 005. Dan ^Emuncul. Tetap saja, tidak ada yang berhasil.

Adakah yang tahu untuk mendapatkan kunci itu untuk bekerja?

Juga, Kapan pun saya menekan tombol-tombol itu akan mencetak a ~. Saya juga tahu bahwa saya bisa menggunakan Ctrld, atau Ctrla, saya TIDAK ingin menggunakannya.

shix
sumber

Jawaban:

7

Jawaban itu khusus untuk emulator terminal tertentu, saya tidak berpikir itu dapat digeneralisasi di luar Solaris.

Di ksh, tekan Ctrl+ Vlalu End. Ini akan menyisipkan karakter escape literal diikuti oleh sisa urutan escape yang dikirim kunci. Misalnya, Anda mungkin melihat ^[[4~( ^[di awal sebenarnya adalah karakter pelarian, tidak ^diikuti oleh [). Lakukan hal yang sama untuk tombol kursor lain yang ingin Anda konfigurasi ulang.

Di Anda .kshrc, atur perangkap KEYBD untuk menerjemahkan urutan pelarian dari tombol fungsi ke dalam binding untuk perintah yang Anda inginkan untuk dipanggil. Misalnya (Anda mungkin perlu menyesuaikan urutan escape - perhatikan bahwa di dalam $'…',\ e` berarti karakter escape):

keybd_trap () {
  case ${.sh.edchar} in
    $'\e[1~') .sh.edchar=$'\001';; # Home = beginning-of-line
    $'\e[4~') .sh.edchar=$'\005';; # End = end-of-line
    $'\e[5~') .sh.edchar=$'\e>';; # PgUp = history-previous
    $'\e[6~') .sh.edchar=$'\e<';; # PgDn = history-next
    $'\e[3~') .sh.edchar=$'\004';; # Delete = delete-char
  esac
}
trap keybd_trap KEYBD
set -o emacs
Gilles 'SANGAT berhenti menjadi jahat'
sumber
Terima kasih atas bantuannya. Tapi sekarang saya mendapatkan kesalahan yang mengatakan .kshrc: baris 6: kesalahan sintaks: ')' tidak terduga
shix
Tepat di mana bagian keybd_trap () {berada.
shix
1
@shix Maaf, ada kesalahan ketik (tanda kurung tambahan pada setiap baris kasus), diperbaiki sekarang.
Gilles 'SO- berhenti bersikap jahat'
Wow! Terima kasih banyak. Saya memiliki masalah ini untuk sementara waktu sekarang.
shix