我可以(重新)映射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
使用vim8.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