我可以(重新)映射vim中的Ex命令吗?

我可以(重新)映射vim中的Ex命令吗?,vim,Vim,我喜欢维姆和它给我的速度。但有时,我的手指速度太快,我发现自己输入的是:WQ,而不是:WQ。(在德语键盘上,您必须按Shift键才能获得冒号:)然后Vim会抱怨WQ不是编辑器命令 有没有办法生成W和Q编辑器命令?试试看 :command WQ wq :command Wq wq :command W w :command Q q 通过这种方式,您可以定义自己的命令。有关详细信息,请参见:help命令。,您可以使用 :cmap WQ wq 还有。 我有 cmap h tab help

我喜欢维姆和它给我的速度。但有时,我的手指速度太快,我发现自己输入的是
:WQ
,而不是
:WQ
。(在德语键盘上,您必须按Shift键才能获得冒号
)然后Vim会抱怨
WQ
不是编辑器命令

有没有办法生成
W
Q
编辑器命令?

试试看

 :command WQ wq
 :command Wq wq
 :command W w
 :command Q q
通过这种方式,您可以定义自己的命令。有关详细信息,请参见
:help命令。

,您可以使用

:cmap WQ wq
还有。 我有

cmap h tab help
在my
.vimrc
中,这意味着在新选项卡中打开帮助页面

:

但这里有一个更好的解决方案,如上所述(对于帮助映射, 因此,它仅适用于以下情况:h):

cnoreabrev h getcmdtype()==”:“&&getcmdline()==”h“?“制表符h”:“h”

替代方法:

使用“”


你也可以用shift键在标准的美国QWERTY上得到一个冒号。这不应该在超级用户上吗?你也可以映射;(或:键上的任何内容)to:,反之亦然,因此无需使用shift键获取:。;默认情况下,跳转到使用f找到的角色的下一个实例(类似于n查找a/search的下一个实例)。如果您决定重新映射它,您将失去该功能。@AnthonyDiSanti如果您重新映射
,则不会返回到
<代码>noremap;:
noremap::请不要忘记将上述内容添加到vimrc中,这样您就不必每次都这样做。请注意,在.vimrc中,您需要省略前导冒号。例如,它应该是:
command Wq Wq
此解决方案仅限于以大写字母开头的命令名。可以找到更好的解决方案。这不允许使用参数,例如,
:W example.txt
将无法工作,如果您使用
:command W
使用vim
8.0.1453
,在我的
中,我必须使用
cmap WQ WQ
,而不是“command”。Vim给了我
E128:无效的命令名
否则。如果(G)Vim,则在哪个版本上?当您键入“:cmap h tab help:h”时会发生什么情况?-1:接触太多。例如,
:echo 3
将生成
:ectab helpo 3
<代码>:e sh.py
变为
:e stab help.py
。这是离题的,但您可能需要类似于
cnoreabrev h getcmdtype()==”:“&&getcmdline()==”h“?“tab h”:“h”
用于帮助映射,因此它仅在您执行
:h
时适用。谢谢@JimStewart这是一个更好的解决方案,我会将其添加到我的答案中!:cmap h tab help使vim output tab在整个屏幕上形成一个永久循环。记住这一点的一个有用方法是:完整关键字是
cabbrev
:)+1这还允许使用以小写字母开头的别名(与
:command
)形成对比。此解决方案将取代
WQ
命令中的任何位置,而不仅仅是在开头,这对于“WQ”来说可能很少见,但对于更常见的键入字符串来说也不常见。因此,这是更好的。
cnoreabbrev <expr> h getcmdtype() == ":" && getcmdline() == "h" ? "tab h" : "h"
:ca WQ wq