上記の答えは私にはうまくいきませんでした。viper のドキュメントを調べたところ、(viper-fast-keyseq-timeout) と (viper-ESC-keyseq-timeout) の 2 つのコマンドが見つかりました。前者は、定義された時間で区切られた任意のキーの組み合わせを Vi モードに解釈させて、Vi マクロにすることです。後者は、vi モードでの ESC の特別な意味を無視することです。後者を 0 に設定すると、問題が解決します。(iterm2、mac os X ライオン)
[参照]
viper-ESC-keyseq-timeout tty では 200、ウィンドウ表示では 0 この遅延 (ミリ秒単位) で区切られたエスケープ キー シーケンスは、コマンドとして解釈され、VI の ESC の特別な意味は無視されます。デフォルトは、ほとんどの端末に適しています。ただし、端末が非常に遅い場合は、これを少し増やした方がよい場合があります。矢印キーによって発行された ESC キー シーケンスが個別に入力された文字として解釈される場合 (したがって、矢印キーが機能しない場合)、端末が遅いかどうかがわかります。この値を大きくしすぎると速度が低下するため、制限してください。
viper-fast-keyseq-timeout 200 このミリ秒単位で区切られたキー シーケンスは、Vi スタイルのキーボード マクロとして扱われます。キー シーケンスがそのようなマクロとして定義されている場合、それが実行されます。それ以外の場合は、入力されたキーの通常のシーケンスとして処理されます。この変数を高く設定しすぎると、入力が遅くなる場合があります。設定が低すぎると、マクロをすばやく入力するのが難しくなる場合があります。
viper-translate-all-ESC-keysequencestty では t、ウィンドウ表示では nil 通常、Viper は Emacs に、低レベルのキー変換マップまたはファンクション キー マップで定義されている ESC キー シーケンスのみを変換させます。たとえば、矢印キーやファンクション キーによって出力されるものなどです。\e/ などの他のシーケンスは、ESC コマンドの後に / が続くものとして扱われます。これは、入力が速く、ESC を押した直後に他の文字を押す傾向がある人に適しています。ESC シーケンスを常に変換する Emacs が好きな人もいます。デフォルトでは、ダム端末を使用している場合にのみすべてのシーケンスを変換します。これにより、挿入モードで ESC をメタ キーとして使用できます。たとえば、ESC x をすばやく押すと、Mx と入力する効果があります。あなたのダム端末がそれほどダムではなく、メタキーを理解するなら、おそらくこの変数を nil に設定したほうがよいでしょう。どの方法が自分に合っているか試してみてください。