web-dev-qa-db-ja.com

コマンド発行後の遅延を減らすVim

.vimrc内に、一般的に使用されるアプリケーションを開いたり切り替えたりするためのマッピングがあります。

ユースケース:10個の開いているアプリケーションがあり、MacVimを使用しています。 <Leader>scにマップされているmap <Leader>sc :silent !open /Applications/Google\ Chrome.app<CR>を発行して、Chromeアプリにアクセスするよりも、Command+Tabを数回発行する方が高速です。

ただし、<Leader>scを発行してからアクションを実行するまで、vimによる遅延があります。

このマッピングのためだけにこの遅延を減らすにはどうすればよいですか?コマンドラインからopen /Applications/Google\ Chrome.appを実行するのと同じくらい瞬時にこれを実行したいのですが、vimはそのコマンドを実行する前にわずかな遅延を導入します。

編集:timeoutlen設定があることに気づきましたが、それはグローバルです。これらのマッピングについても同様のものが欲しいのですが。

3

これは、<Leader>scで始まる別のマッピングがあり、Vimが短いマッピングを入力しているだけなのか、他の長いマッピングを入力しようとしているのかを待機しているためと考えられます。

この問題を回避する唯一の方法は、マッピングの1つを変更して、Vimにあいまいさがないことを認識させることです。これにより、コマンドが即座に実行されます。

:map <leader>sc」と入力してEnterキーを押すと、そのシーケンスで始まるすべてのマッピングが表示されます。

3
Heptite

Vimの特定のコマンド/マッピング用にtimeoutlenを調整することはできません。おそらく特定のバッファ/ウィンドウ/タブに対してそれを行うことができますが、それでもその特定のコンテキストのコマンド/マッピングに対して同じ値になります。

しかし、ここでopenを使用したことが遅延の原因だと思います。

Quicksilverを使ってみませんか?私は何年も使用しています。どのようなコンテキストでも同じメカニズムを提供します。Vim、iTunes、Outlook、プレビューのいずれを使用していても、まったく同じキーシーケンスを入力してChromeに切り替えることができます。このユビキタスだけでも、私にとっては必需品です。それと_<C-Space>c<CR>_の速度。

あなたのシステムでは、理論的にはVim> Chromeを実行するときに時間を節約できますが、どのようにChrome> Vim?AFAIKは使用できません_<leader>sv_ in Chromeなので、別のメカニズムに頼る必要があります。これは、セットアップと保守を行うための少なくとも2つのシステム、または少なくともカスタムの非常に効果的なシステムとデフォルトの効果の低いシステムです。

0
romainl