我有用于.vimrc
打开或切换到常用应用程序的映射。
使用案例:我打开了 10 个应用程序,并且使用的是 MacVim。<Leader>sc
发出映射到 的命令map <Leader>sc :silent !open /Applications/Google\ Chrome.app<CR>
比发出Command+Tab
多次命令以进入 Chrome 应用程序要快得多。
<Leader>sc
但是,从我发出命令到执行操作之间vim 存在延迟。
我怎样才能减少这个映射的延迟?
我希望这像open /Applications/Google\ Chrome.app
从命令行运行一样即时,但是 vim 在执行该命令之前会引入一点延迟。
编辑:我注意到有一个timeoutlen
设置,但这是全局的。我希望这些映射有类似的设置。
答案1
这很可能是因为您有另一个以 开头的映射<Leader>sc
,而 Vim 正在等待查看您是否只输入较短的映射,或者打算输入另一个较长的映射。
解决这个问题的唯一方法是改变其中一个映射,以便 Vim 知道没有歧义,这应该会导致它立即运行该命令。
输入“ :map <leader>sc
”并按回车键将显示所有以该序列开头的映射。
答案2
您无法timeoutlen
针对 Vim 中的特定命令/映射进行调整。您可能可以针对特定缓冲区/窗口/选项卡执行此操作,但对于该特定上下文中的任何命令/映射,它仍然是相同的值。
但我认为延迟是由于open
这里的使用造成的。
你为什么不使用 Quicksilver?我已经用了好几年了:无论我处于什么环境中,它都能提供相同的机制。无论我在 Vim、iTunes、Outlook 还是 Preview 中,我都可以输入完全相同的按键序列来切换到 Chrome。单是这种普遍性就使它成为我的必备品。还有它的速度<C-Space>c<CR>
。
在您的系统中,理论上,执行 Vim > Chrome 可以节省时间,但如何执行 Chrome > Vim?据我所知,您无法<leader>sv
在 Chrome 中使用,因此您必须求助于另一种机制。这至少需要设置和维护两个系统,或者至少需要一个非常有效的自定义系统和一个效率较低的默认系统。