私は 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 では、単純なプログラムが無視する場所にパラメータを追加するなどして、既存の制御シーケンスとの混乱を避けるように構成されています。
参考文献:
- ECMA-48: コード化文字セットの制御関数
- 文字の挿入/削除(terminfo マニュアルページ)