Korn Shell: Kết thúc, pgup, pgdown và xóa khóa không hoạt động


8

Vì vậy, về cơ bản tôi End, Pageup/ Pagedown, và Deletequan trọng là không làm việc trong ksh93. Tôi đang chạy FreeBSD.

Các phím mũi tên của tôi đang hoạt động, và phím home của tôi cũng vậy.

Những phím đó hoạt động khi tôi đặt cái này vào .kshrc

set -o emacs

Tôi đã thử làm NÀY , bằng cách đặt cái này vào trong .kshrc. Để làm cho Endchìa khóa làm việc.

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

Tôi mở vim, và nhấn Ctrlv, và gõ 005. Và sự ^Exuất hiện. Tuy nhiên, không có gì làm việc.

Bất cứ ai cũng biết để có được những chìa khóa để làm việc?

Ngoài ra, khi tôi nhấn các phím đó, nó sẽ in ra ~. Tôi cũng biết rằng tôi có thể sử dụng Ctrld, hoặc Ctrla, tôi KHÔNG muốn sử dụng những thứ này.

Câu trả lời:


7

Câu trả lời đó là dành riêng cho các trình giả lập thiết bị đầu cuối nhất định, tôi không nghĩ nó có thể được khái quát hóa bên ngoài Solaris.

Trong ksh, nhấn Ctrl+ Vsau đó End. Điều này sẽ chèn một ký tự thoát theo nghĩa đen, theo sau là phần còn lại của chuỗi thoát mà khóa gửi. Ví dụ, bạn có thể thấy ^[[4~( ^[lúc đầu thực tế là một ký tự thoát, không ^theo sau [). Làm tương tự cho các phím con trỏ khác mà bạn muốn cấu hình lại.

Trong phần của bạn .kshrc, đặt bẫy KEYBD để dịch các chuỗi thoát từ các phím chức năng thành các liên kết cho các lệnh bạn muốn khóa gọi. Ví dụ: (bạn có thể cần điều chỉnh các chuỗi thoát - lưu ý rằng bên trong $'…',\ e` có nghĩa là một ký tự thoát):

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

Cảm ơn bạn vì sự giúp đỡ. Nhưng bây giờ tôi đang gặp một lỗi nói .kshrc: dòng 6: lỗi cú pháp: ')' không mong muốn
shix

Ngay tại nơi keybd_trap () {là một phần.
shix

1
@shix Xin lỗi, đã có một lỗi đánh máy (dấu ngoặc đơn phụ trên mỗi dòng chữ), đã được sửa ngay bây giờ.
Gilles 'SO- ngừng trở nên xấu xa'

Ồ Cảm ơn bạn rất nhiều. Tôi đã có vấn đề này một thời gian.
shix
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.