「フォーカス」という用語は、現在どの端末(またはウィンドウ)がキーボードおよびマウスの入力イベントを受け入れているかを示します。1つだけがフォーカスを持つことができます。グラフィカル環境でフォーカスを獲得したり失ったりする方法を確立するためのプロトコルがありますが、探索するのは役に立ちません。
説明から(フォーカスが回復したときのTmuxの現在のペインインジケーターも参照)、iTerm2はこのxterm
機能を実装しているようです。
FocusIn / FocusOut
FocusIn / FocusOutは、異なるプロトコルを使用するため、任意のマウスイベントと組み合わせることができます。設定すると、端末がフォーカスを取得するとxtermがCSI Iを送信し、フォーカスを失うとCSI Oを送信します。
プライベートモード1004(2007年にxtermに追加されたパッチ#224)によって有効になります。
CSI ? Pm h
DEC Private Mode Set (DECSET).
Ps = 1 0 0 4 -> Send FocusIn/FocusOut events.
このパッチに関連する可能性があります。Vim-フォーカスレポートモード(DECSET / DECRST 1004)のサポートを追加し、xterm互換端末で動作します。
/ * xterm互換端末とtmuxでフォーカスレポートがサポートされています。* /
そのため、ターミナルがxtermマウスプロトコルを使用しないことをvimに伝えることで、これを無効にすることができます。引用されたパッチは、vimにFocusIn / FocusOut機能(通常はオフになっているはずです)をオンにし、ロジックに何らかの欠陥がある場合、vimを終了した後に機能を有効のままにしておくように指示します。
vimはモードが有効になっている最も可能性の高い原因ですが、他のプログラム(またはスクリプト)がオンになっている可能性があります。別の回答で示唆されているように、script
プログラムを使用して端末への出力を収集する(typescript
ファイルを生成する)ことで、それを絞り込むことができます。分析には時間がかかる可能性があります(また、このサイトは添付ファイルをサポートしていないようであるため、詳細な議論を求めるのには適していません)。私は通常unmap
、この目的のためにtypescriptファイルを読み取り可能な形式に変換するために使用します。