7

いくつかの 場所で、端末 (?) がアプリケーション モードであることを確認するためのコマンドが表示されます。その後、キー バインドを設定/クエリするための terminfo データベースが機能します。

このアプリケーション モードが何であるかを見つけようとしましたが、成功しませんでした。このアプリケーション モードとは何ですか? Zshはそれがなくても問題なく動作すると思います。私は正しいですか?キーバインディングが処理された後に設定を解除するのが望ましいでしょうか? curses ベースのアプリケーションのような一部のアプリケーションでは、設定が解除されませんか?

これは、「アプリケーション モードとは何か、またはそれがどのように機能するか」という 1 つの質問にすぎません。他の質問は、あなたが私の問題を理解するのを助けるためだけに書きました.

4

1 に答える 1

4

誰かが同じ問題に直面した場合に備えて...いくつかの調査の後、 1つのpreztoのプルリクエストの下で私の質問への答えを見つけました。

次のように要約できます。

  1. 端末は特定されておらず、普遍的ではありません。カーソルの移動、色の変更、およびユーザーのキーの組み合わせ入力の処理を行う拡張機能を処理するために、いくつかの異なるプロトコルがありました。
  2. 誰かが、さまざまな端末や端末エミュレーターの違いを抽象化するために、大きなデータベースを作成しました。このデータベースは terminfo です。
  3. terminfo は、アプリケーション モードでのみ機能します。特殊なエスケープ シーケンスが端末に発行されると、モードを変更できます。新しいモードでは、異なるエスケープ シーケンス (terminfo で認識されるもの) を受け入れます。
  4. アプリケーション モードがサポートされているかどうかを検出し、サポートされていない場合は他の方法 (zkbd など) にフォールバックすることができます。
  5. zsh の一般的な構成では、ユーザー入力を受け取る前にアプリケーション モードに入り、コマンドを実行する前に終了するように zle (zsh のライン エディター) をセットアップします。その後、すべてのアプリケーションは引き続き正常に動作します。

注: すべての一般的な zsh の構成がそれほど堅牢であるとは限らず、前述の prezto のプル リクエストを読むことをお勧めします。

私の設定の一部は私のブログに記載されており、私の git repoで入手できます。

于 2014-02-23T06:48:52.190 に答える