Korn Shell: End、pgup、pgdown、および delete キーが機能しません。

Korn Shell: End、pgup、pgdown、および delete キーが機能しません。

したがって、デフォルトでは、私EndPageup/ PagedownDeleteキーはksh93では機能しません。ところで、私はFreeBSDを実行しています。

矢印キーが機能し、ホームキーも機能します。

コンピュータに入れたときにキーが機能しました。.kshrc

set -o emacs

頑張ったこれ、私の.kshrcEnd

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

vimを開き、を押してCtrlvを入力します005。それから^E現れました。しかし、まだ何も動作しませんでした。

このキーを操作する方法を知っている人はいますか?

また、このキーを押すたびに、またはを~使用できることも知っています。このキーを使用したくありません。CtrldCtrla

答え1

その答え特定のターミナルエミュレータに限って、Solaris以外では一般化できないようです。

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

関連情報