Fishの挿入/上書きモード

Fishの挿入/上書きモード

私はMacBookでLinux Mintを使用しており、キーボードのINSERTキーの組み合わせに対応していますFn + RETURN

現在、GNU-Emacsでは、この組み合わせの予想される動作のみを表示できます。ここでは、オーバーライドモードがおよび<insertchar>にバインドされています<insert>

たとえば、Webブラウザでは何の効果もありません。 Linux端末と私が試したすべての端末エミュレータ(konsole、xtermなど)内で[2~挿入モードに切り替えるのではなく、エスケープシーケンスが画面に印刷されます。

私はそれが役に立つと思うので、それを動作させたいと思います。この問題をどこで解決できるかを知っている人はいますか?

注: Fn + Backspace、委任者は"DELETE"上記のアプリケーションでうまく動作します。

ところで、いいえ。 2: 魚の皮を使用しました。 Bashシェルではエスケープシーケンスは印刷されませんが、キーの組み合わせも機能しません。

答え1

端末エミュレータはテキスト自体を編集できないため、このレベルでは挿入モードと上書きモードの概念はありません。

彼らは単に実行中のアプリケーションにキーを押して(カーネルのttyドライバを介して)受信し(再びカーネルttyドライバを介して)、アプリケーションのデータを解釈し、それに応じて画面を更新します。

Insertキーの場合、正しい動作は実際に\e[2~エスケープシーケンスを送信することです。

これを解釈して挿入モードと上書きモードを切り替えるのは、アプリケーション(fish/bash/etc.シェル、emacs/etc.テキストエディタなど)によって異なります(後者を実装する場合)。

答え2

端末エミュレータには、画面に文字(および行)を挿入および削除するための制御シーケンスがあります。しかし、アプリケーションを実行するとき(どちらか)シェルまたはテキストエディタ)、入力できる制御シーケンスは通常次のとおりです。いいえターミナルにエコ。アプリケーションはこれらの特殊キーを読み取り、端末に送信する制御シーケンスを決定します。効果(挿入、削除、再入力)はアプリケーション機能。実際のデータはアプリケーションのメモリ(またはデータファイル)にあります。

Insertほとんどの端末には、次のようにアクセスできる特殊キー(例:)があります。習慣同様の名前の制御シーケンスに一致する文字を送信します。到着端末)。その理由はもともとは、ローカルモード人々が使うものです。

すべてのANSI互換端末が動作します。地元のモード(この機能を中断させるいくつかの無関係なモードを無視)これは...不利です送受信モードSRM( )規格に記載されています。古い端末では、他のモードを考慮する必要があるかもしれません入れる。内部に用語情報(5)記載されたマニュアルページ:

   move_insert_mode          mir    mi   safe to move while
                                         in insert mode

慣例は取り除き、すべての端末に制御順序と一致する特殊キーがあるわけではありません。例えば、

  • そしてrxvt、挿入キーは挿入escape[2~文字の送信中に送信できます。制御シーケンスescape[@および(複数文字の場合)挿入モードは次のとおりです。escape[4m
  • 修正済み特殊キー(例controlInsert:)は一致する文字を送信できない可能性があります。どの制御順序。 xterm を使用すると、既存の制御順序との混同を避けるように構成されます。たとえば、単純なプログラムはそれを無視するパラメータを追加します。

追加資料:

関連情報