Kornシェル:End、pgup、pgdown、deleteキーが機能しない


8

したがって、基本的に、私のEndPageup/ Pagedown、およびDeleteキーはksh93では機能しません。ちなみに私はFreeBSDを実行しています。

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

これらのキーは、これを自分の中に入れると機能します .kshrc

set -o emacs

私がやって試してみましたが、これを私の中でこれを置くことによって、.kshrcEndキーを機能させるため。

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

vimを開き、を押しCtrlvてタイプしました005。そして^E現れた。それでも、何もうまくいきませんでした。

誰かがとにかくそれらのキーを機能させることを知っていますか?

また、これらのキーを押すと、が出力されます~。また、を使用できることCtrld、またはCtrla使用したくないことも知っています。

回答:


7

その答えは特定のターミナルエミュレータに固有のものです。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

お手伝いありがとう。「)」予想外:6行目:構文エラーしかし、今、私はは.kshrcというエラーになっています
shix

keybd_trap(){部分がある場所。
shix

1
@shix申し訳ありませんが、タイプミス(各ケース行の余分な括弧)がありましたが、これを修正しました。
Gilles「SO-悪をやめなさい」

うわー!どうもありがとうございます。私はしばらくの間この問題を抱えてきました。
shix
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.