私はtmuxを使用しているので、Vimの挿入モードの切り替えは瞬時ではなくなりました。押した後 Esc 挿入モードでは、実際に挿入モードを終了するのにかなりの時間がかかります。押した後 Esc あとは他のキーがすぐに切り替わり、その後に押されたキーのコマンド Esc 実行されます。これを引き起こす可能性のあるアイデアは何ですか?
Vimをtmuxの外で実行しても遅延が発生しないので、Vimの設定は問題ではありません。これはおそらくtmuxに何らかの関係があると考えられます。私はgnome-terminal btwを使用しています。
また、注目に値します。tmuxでキーバインディングを定義できないようです。 Esc、私の計画は拘束することでした Esc に:
bind Escape send-keys ^[
悲しいかな、それは何かを拘束しているようです Esc tmuxは機能しません。画面でも同じ問題が発生します。
Manページを調べた後、tmuxにはこのオプションがあることがわかりました。次の~/.tmux.conf
は、遅延の問題を修正します。
set -sg escape-time 0
これを有効にするには、tmuxサーバーを再起動するか、設定をリロードする必要があります。これを行うには、tmuxプロンプトからsource-file ~/.tmux.conf
を発行します。
このページを見つけたときに解決しようとしていた別の同様の問題があったので、この答えを探していてこのページを同じ方法で見つけた他の人に役立つ場合に備えて、ここに投稿します。
問題:bashのviモードで、挿入モードからコマンドモードに切り替えると遅延が発生します
解決策:~/.inputrc
ファイル、追加set keyseq-timeout n
ここで、n
は0より大きいいくつかの低い値です。n
のデフォルトは500msで、これが遅延の原因です。ドキュメントを参照 here 。
また、現在どのモードにいるかを確認したい場合は、 Dylan Caliのbashのフォーク を確認してください。
タイトルがScreenについて言及しているように、GNU Screen内でエスケープキーの動作を修正するための解決策があります。( こちら から取得)。
追加
maptimeout 5
.screenrc
設定ファイル。
で始まるマッピングを使用しているようです 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の端末機能に違いがあり、問題が発生する可能性があるためです。