Vim:在用户定义的命令中发出正常模式命令

Lon*_*Rob 2 vim

我确定这会在某个地方被问到,但我终生都找不到它,而且它不在Vim 文档的“定义命令行命令”部分中。

我想创建一个用户定义的命令,它将foo在当前单词之前插入单词。

(注意:我希望它是一个函数,因为我不相信自己会记住另一个快捷键。我知道如何使用noremap...)

在我的.vimrc补充:

command AddFoo bifoo<esc>w
Run Code Online (Sandbox Code Playgroud)

但是当我输入时,:AddFoo我得到Not an editor command: bifoow.

是否可以有一个发出正常模式命令的功能?

Ing*_*kat 5

:normalEx命令允许发出任意正常模式下的命令。

command AddFoo normal! bifoo<esc>w
Run Code Online (Sandbox Code Playgroud)

如果要插入表达式等,则需要使用:execute; 我将再次使用以下示例展示您的示例:help key-notation

command AddFoo execute "normal! bifoo\<esc>w"
Run Code Online (Sandbox Code Playgroud)

!:normal阻止使用自定义映射,如:noremap(VS :map)。