我对 Vim/Vimscript 还很陌生,我正在尝试配置我的 .vimperatorrc 以执行与运行时相同的操作:open google search-term
。
从阅读来看,我似乎需要nnoremap g :open google<Space>
。它几乎可以工作,但直到我按下另一个键,窗口才会出现。
我还需要做其他事情吗?明确地说,我希望它基本上做同样的事情,但不需要额外按下按键来打开搜索窗口。
答案1
当您尝试使用映射时,在命令行中显示内容之前会犹豫一下,这可能表明 Vimperator 除了您迄今为止按下的选项之外还有更多选项。它正在等待更多按键,以查看是否可以通过以下方式解决歧义:A) 匹配具有更多字符的映射(不存在剩余歧义)或 B) 不匹配任何其他内容,从而使用匹配的较短映射。我将首先使用带有引导键的示例进行演示,然后再回到您的具体问题。
假设您的.vimperatorrc
文件中有以下内容(并假设您的 leader 键是默认键,\
(请参阅:h mapleader
)):
nnoremap <leader>g :open google<space>
一旦输入完毕\g
,:open google
就会如预期那样出现。但是,假设您的 中有以下内容.vimperatorrc
:
nnoremap <leader>g :open google<space>
nnoremap <leader>gw :open google wiki<space>
现在,输入 后\g
,没有任何明显的变化(除非您仔细查看当前 URL 的左侧,它会显示您输入的命令模式按键)。这是因为 Vimperator 不确定您是否需要该\g
映射,或者您是否打算同时按下 aw
来完成\gw
映射。在这种情况下,您可以输入命令:nmap \g
(先不要按<enter>
),然后您会看到这两个映射。
但是,在您的场景中,您正在映射字符g
。 Vimperator 有许多与以字母 开头的键组合相关的操作g
。例如,gt
&gT
表示“移动到下一个/上一个选项卡”。 (由于这些是默认键绑定,因此在您键入命令 时不会显示它们:nmap g
。)可能可以取消所有默认g[another character]
映射,但这是不合常规的,可能也不健康。为了防止与默认键绑定发生冲突,惯例会鼓励您将 Leader 键与自定义映射一起使用,如上所示。