我猜你已经知道 Shift-Esc 可以暂时禁用 vimperator。所以我写了如何根据你当前的位置禁用 vimperator。
一、解决办法:
autocmd LocationChange .* js modes.passAllKeys = false
autocmd LocationChange mail\\.google\\.com js modes.passAllKeys = true
autocmd LocationChange www\\.google\\.com/calendar js modes.passAllKeys = true
autocmd LocationChange www\\.google\\.com/reader js modes.passAllKeys = true
autocmd LocationChange mail\\.google\\.com/tasks js modes.passAllKeys = false
这会过滤 gMail、gCalendar、gReader,但不会过滤 gTask。
我给出的解决方案是级联方法,您可以定义所有网站以启用 vimperator,然后选择性地为每个网站禁用。因此,即使 gTask 使用与 gmail 相同的父站点,它也启用了 vimperator。
现在解释一下:
这些命令位于主目录中的 .vimperatorrc 中。您可以通过
更改 .vimperatorrc 的位置
source! *directory*
在 .vimperatorrc 文件中,但默认位置是主目录中的 .vimperatorrc 文件。 (Windows 中的 %userprofile%)
替代解决方案:
autocmd LocationChange .* js modes.passAllKeys = /mail\.google\.com/.test(buffer.URL)
*注意反斜杠转义点。
这种方法的问题是只有带有 autocmd 的最新命令行才能起作用。这意味着最后一个 autocmd 命令会覆盖第一个。所以你最终会导致对命令进行布尔运算,如下所示:
autocmd LocationChange .* js modes.passAllKeys = /(mail\.google\.com|google\.com\/reader)/.test(buffer.URL)
如您所见,当您要过滤掉许多网站时,这会变得很复杂。
文档:
http://vimperator.sourceforge.net/help/vimperator/autocommands.xhtml
解决方案来源:
http://code.google.com/p/vimperator-labs/issues/detail?id=406