Red Hat Linuxで「Ctrl + L」を使用してksh画面を消去する方法は?

Red Hat Linuxで「Ctrl + L」を使用してksh画面を消去する方法は?

パテを使用してRed Hat Linuxサーバーに接続しています。 Linuxでは、私のシェルはKornシェルです。画面を消去するには、「Ctrl + l」の組み合わせを使用することに慣れています。このコンボがKshで動作しないいくつかの理由。 kshに「」と入力すると、ctrl + l新しい行に移動します。

頑張った

alias "^L"=clear

それでも同じ結果です。

私も試しました

bind -m '^L'=clear'^J'

しかし、バインドコマンドが見つからないと思います。コンピュータに新しいものをインストールできません。

この問題を解決する方法を提案できますか?ありがとうございます。

答え1

Red Hatはコマンドなしの「ksh-93」を提供しますbind。これは特殊機能によってトリガーされるKEYBD名前を提供します。trapマニュアルページによると、修正に使用できます。Emacs編集モード

例は次の場所にあります。[Korn Shell] Home、End、pgup、pgdown、削除キーを修正^L画面をきれいにする方法を示す便利な出発点です。デフォルトでは、metacontrolL^[^L)は画面消去機能にバインドされており、一般は^L変更したい次の行です。

   ^L        Line feed and print current line.
   M-^L      Clear the screen.

要求した内容を実行するには、例に1行を追加するだけです。

set -o emacs

keybd_trap () {
  case ${.sh.edchar} in
    $'\f')    .sh.edchar=$'\e\f';;  # clear-screen (THIS QUESTION)
    $'\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

何らかの理由でviモードはksh

キーが実際に機能にどのようにマッピングされるかについてのドキュメントはあいまいです。この例では、機能はsrc/cmd/ksh93/edit/emacs.cスイッチ/ケースステートメントの一部として実装されています。

#ifdef _cmd_tput
                case cntl('L'): /* clear screen */
                        sh_trap("tput clear", 0);
                        draw(ep,REFRESH);
                        return(-1);
#endif

エスケープ機能(つまり、「メタ」処理)から。したがって、カスタマイズ可能な組み込みの動作です。

追加資料:

Q4.キーバインディングはどのように行われますか?
A4。 ksh93 は、キーを押すたびに実行される KEYBD トラップを提供します。
    キーボードで入力されます。この罠を使って共犯者
    ksh93の配列機能は、キーバインディング機能を簡単に作成できます。
    入力されたキーシーケンスを別のキーシーケンスにマッピングします。

関連情報