「O」コマンドを使用するたびにvimが1秒間遅延するのはなぜですか(上記の新しい行を開いて挿入)。


26

ほとんどのコマンドを使用すると、すぐに有効になります。Oただし、コマンドを使用すると、「O」が現在の文字を約1秒間置き換え、現在の文字が返され、新しい行が挿入されて開かれます。

oコマンドにはそのような問題はありません(下の新しい行を開いて挿入します)。

違いがある場合は、Ubuntu 10.04のGnomeターミナルでvimfrom を使用していbashます。

回答:


27

前に押されたキーがESCであった場合、これはESC Oで始まるエスケープシーケンスを生成できるキーがあるためです。たとえば、カーソルキーモードによっては、上矢印キーでエスケープシーケンスESC O Aが生成される場合があります。

部分的なエスケープシーケンスが見つかった場合、vimは短いタイムアウトを待って、端末タイプに定義されたエスケープシーケンスの1つに一致する別の文字が受信されるかどうかを確認します。そうでない場合は、文字を個別のキーストロークとして扱います。これをテストするには、ラインが開くのを待っている間に大文字のAを入力して、代わりに上矢印として扱うかどうかを確認します。

これを制御するために使用できるvim設定がいくつかあります。 :set ttimeoutlen=100エスケープシーケンスのタイムアウトを100ミリ秒に変更します。 :set noesckeys挿入モードの場合、エスケープシーケンスを送信するキーの認識を完全に無効にします。また、vi互換モードではこのモードではesckeysがオフになっているため、この問題は発生しません。これが機能する理由vim -u NONEです。


明確にするために、140k行ファイルでの私の「実験」は、プラグインとファイルタイプの標準的な補完を備えたフルvimモードでした。私が使用し-u NONEたと結論付けたかもしれませんが、OPからの確認はまだありません。
msw

うわー!それはしばらくの間軽度の刺激でしたが、私はそれについて考えたことがありません。今完璧に理にかなっています。Esc OAは実際、上矢印のように機能します。
ヴィタリークシュナー

2
:set noesckeysおそらくあなたが望むものではありません-それを設定してから挿入モードで矢印キーを押してください。noesckeysは、挿入モード以外では速度を上げません。 ttimeoutlen間違いなく行く方法です
-JonnyRaa
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.