Korn Shell: End, pgup, pgdown 및 delete 키가 작동하지 않습니다.

Korn Shell: End, pgup, pgdown 및 delete 키가 작동하지 않습니다.

따라서 기본적으로 my End, Pageup/ PagedownDelete키는 ksh93에서 작동하지 않습니다. 그런데 저는 FreeBSD를 실행하고 있습니다.

화살표 키가 작동하고 홈 키도 작동합니다.

그 열쇠는 내가 이것을 내 컴퓨터에 넣으면 작동합니다..kshrc

set -o emacs

나는 노력했다이것, 이것을 내 .kshrc. 핵심 작업을 수행합니다 End.

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

나는 vim을 열고 를 누르고 Ctrlv를 입력 했습니다 005. 그리고 그 사람이 ^E나타났습니다. 그래도 아무것도 효과가 없었습니다.

어쨌든 그 열쇠를 작동시키는 방법을 아는 사람이 있나요?

또한 해당 키를 누를 때마다 ~. 나는 또한 Ctrld, 또는 를 사용할 수 있다는 것을 알고 있습니다 Ctrla. 나는 이것을 사용하고 싶지 않습니다.

답변1

그 대답특정 터미널 에뮬레이터에만 해당되므로 Solaris 외부에서는 일반화할 수 없을 것 같습니다.

ksh에서는 Ctrl+를 누른 V다음 를 누르세요 End. 그러면 리터럴 이스케이프 문자와 키가 보내는 나머지 이스케이프 시퀀스가 ​​삽입됩니다. 예를 들어, 시작 부분의 ^[[4~^[실제로 이스케이프 문자이고 ^뒤에는 가 없음을 알 수 있습니다 [. 재구성하려는 다른 커서 키에 대해서도 동일한 작업을 수행합니다.

에서.kshrcKEYBD 트랩기능 키의 이스케이프 시퀀스를 키가 호출할 명령에 대한 바인딩으로 변환합니다. 예를 들어, 이스케이프 시퀀스를 조정해야 할 수도 있습니다. $'…',\e` 내부는 이스케이프 문자를 의미합니다.

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

관련 정보