私は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 を使用すると、既存の制御順序との混同を避けるように構成されます。たとえば、単純なプログラムはそれを無視するパラメータを追加します。
追加資料:
- ECMA-48:エンコードされた文字セットの制御機能
- 文字の挿入/削除(用語情報マニュアルページ)