魚の挿入/上書きモード

魚の挿入/上書きモード

私は MacBook で Linux Mint を使用していますが、そのキーボードでは INSERT キーに相当するのは の組み合わせですFn + RETURN

現時点では、GNU-Emacs でのこの組み合わせの意図された動作のみがわかります。そこでは、 overwrite-mode は および にバインドされてい<insertchar>ます<insert>

たとえば、Web ブラウザでは効果がありません。Linux ターミナル内、および私が試したターミナル エミュレーター (konsole、xterm など) 内では、挿入モードに切り替える代わりに、エスケープ シーケンスが[2~画面に表示されます。

これは便利なものだと思うので、動作させたいと思っています。これを修正する場所を知っている人はいますか?

ちなみに、 はFn + Backspace"DELETE"前述のアプリケーションでは正常に動作します。

ちなみに 2: 私は fish シェルを使用しています。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 では、単純なプログラムが無視する場所にパラメータを追加するなどして、既存の制御シーケンスとの混乱を避けるように構成されています。

参考文献:

関連情報