xtermはフォーカス信号を失い、vimは入力モードを終了しますか?

xtermはフォーカス信号を失い、vimは入力モードを終了しますか?

私は長年KDEデスクトップのDebian / Ubuntu / Arbianバージョンでxtermを使用してきました。私はマウスデスクトップの設定に従ってフォーカスを使用し、.vimrcで ":set mouse = a"を使用します。最新バージョンでは、追跡方法がわからない誤動作が発生しました。 Debian 10->11、Buster->Bullseyeで発生しているようです。

vimが入力モードにあるときにvimが実行中のxtermの外にカーソルを移動すると(ウィンドウがフォーカスを失う)、ビープ音が鳴り、まるで誰かがそのウィンドウでescを押したかのようにvimがコマンドモードに切り替わります。以前の動作は、コピーした内容を別のウィンドウに貼り付けることができるように、フォーカスがviウィンドウに戻るまで静かに待つことでした。

デスクトップのgvimにはこの問題はありません。
これは、新しい(Bullseye)システムでshell + vimを使用してsshを介して通信する既存の(バスター)デスクトップで発生します。

ここで何が起こっているのでしょうか?新しいシェルが捕捉するように設計された信号を伝えますか?追跡する方法?

ベストアンサー1

vimrcに次の行を追加してみてください。 (追加情報:help xterm-focus-event:)

set t_fd= t_fe=

Vim 8.2.2345には、デフォルトで有効になっているxterm focusイベントのサポートが追加されました。

https://github.com/vim/vim/commit/681fc3fa782e99fe69ed2c83c3e29109d2d61e1a

私の環境では、この新しい設定が有効になり、挿入モードでescへのマッピングがあるときにウィンドウがフォーカスを失うと、escを押したかのようにvimがコマンドモードになります。

(バグなのか仕様なのかはわかりません。)

おすすめ記事