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

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

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

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

컴퓨터에 넣었을 때 키가 작동했습니다..kshrc

set -o emacs

나는 노력했다이것, 내 .kshrc.End

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

vim을 열고 를 누르고 Ctrlv를 입력합니다 005. 그런 다음 ^E나타났습니다. 그러나 여전히 아무것도 작동하지 않았습니다.

이 키를 작동시키는 방법을 아는 사람이 있나요?

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

답변1

그 대답특정 터미널 에뮬레이터에 한정해서, 솔라리스 외부에서는 일반화할 수 없을 것 같습니다.

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

당신의 .kshrc것에서키보드 트랩기능 키의 이스케이프 시퀀스를 키가 호출할 명령에 대한 바인딩으로 변환합니다. 예를 들어 (이스케이프 시퀀스를 조정해야 할 수도 있습니다. $'…',내부의 \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

관련 정보