web-dev-qa-db-ja.com

tmuxまたはscreenを使用してvimでモードを切り替えるときのわずかな遅延

私はtmuxを使用しているので、Vimの挿入モードの切り替えは瞬時ではなくなりました。押した後 Esc 挿入モードでは、実際に挿入モードを終了するのにかなりの時間がかかります。押した後 Esc あとは他のキーがすぐに切り替わり、その後に押されたキーのコマンド Esc 実行されます。これを引き起こす可能性のあるアイデアは何ですか?

Vimをtmuxの外で実行しても遅延が発生しないので、Vimの設定は問題ではありません。これはおそらくtmuxに何らかの関係があると考えられます。私はgnome-terminal btwを使用しています。

また、注目に値します。tmuxでキーバインディングを定義できないようです。 Esc、私の計画は拘束することでした Esc に:

bind Escape send-keys ^[

悲しいかな、それは何かを拘束しているようです Esc tmuxは機能しません。画面でも同じ問題が発生します。

70

Manページを調べた後、tmuxにはこのオプションがあることがわかりました。次の~/.tmux.confは、遅延の問題を修正します。

 set -sg escape-time 0

これを有効にするには、tmuxサーバーを再起動するか、設定をリロードする必要があります。これを行うには、tmuxプロンプトからsource-file ~/.tmux.confを発行します。

127

このページを見つけたときに解決しようとしていた別の同様の問題があったので、この答えを探していてこのページを同じ方法で見つけた他の人に役立つ場合に備えて、ここに投稿します。

問題:bashのviモードで、挿入モードからコマンドモードに切り替えると遅延が発生します

解決策:~/.inputrcファイル、追加set keyseq-timeout nここで、nは0より大きいいくつかの低い値です。nのデフォルトは500msで、これが遅延の原因です。ドキュメントを参照 here

また、現在どのモードにいるかを確認したい場合は、 Dylan Caliのbashのフォーク を確認してください。

5
Kvass

タイトルがScreenについて言及しているように、GNU Screen内でエスケープキーの動作を修正するための解決策があります。( こちら から取得)。

追加

maptimeout 5

.screenrc設定ファイル。

2
Twonky

で始まるマッピングを使用しているようです ESC。を押すと ESC、vimは、次のキーがマッピング内のキーであるかどうかを確認するまで待機する必要があります。そうでない場合は、すぐに続行できます。

Vimの設定は端末に依存する可能性があるため、tmuxの外部で発生しないという事実はあまり意味がありません。 Vimは$TERM環境変数を照会し、その値に応じて異なる構成を選択できます。

Gnome-terminalはAFAIK、xterm$TERM変数の値として使用し、tmuxはscreenを使用するため、すべてのvim構成ファイルを調べて、使用されるのは、$TERM変数がscreenと等しい場合です。私の推測では、端末がESCの場合、システムの一部のvim構成ファイルは、矢印キー(screen文字で始まるもの)を処理するためのマッピングを設定します。

Vimを起動する前にtmuxの$TERM変数を一時的に変更することでテストできます。シェルがbashの場合は、vimを次のように呼び出します。

TERM=xterm vim

tmuxで問題が解決するかどうかを確認します。ただし、これを修正として使用しないでください。これは、tmuxとxtermの端末機能に違いがあり、問題が発生する可能性があるためです。

1
Jan Hlavacek