我确定会在某个地方提出这个问题,但我不能在我的生活中找到它,而且它不在Vim文档的Defining command-line commands部分中
我想创建一个用户定义的命令,它会在当前单词之前插入单词foo
。
(注意:我希望它是一个功能,因为我不相信自己记住另一个快捷键。我知道如何使用{{1} } ...)功能
在我的noremap
我添加:
.vimrc
但是当我输入command AddFoo bifoo<esc>w
时,我会:AddFoo
。
是否可以使用发出普通模式命令的功能?
答案 0 :(得分:4)
:normal
Ex命令允许发出任意正常模式命令。
command AddFoo normal! bifoo<esc>w
如果要插入表达式等,则需要使用:execute
;我将使用:help key-notation
:
command AddFoo execute "normal! bifoo\<esc>w"
!
之后的:normal
会阻止使用自定义映射,例如:noremap
(vs :map
)。
答案 1 :(得分:1)
请确保您获得命令和功能之间的区别。
命令定义的右侧应该至少一个Ex命令,如write
或bnext
:
command! Foo update | tabnext
你可以调用一个函数:
command! Bar call Bar()
或执行普通模式宏:
command! Baz normal ciw"<C-r>""
请参阅:help :normal
。
答案 2 :(得分:0)
应该很容易得到你想要的东西,你只需要切换到正常模式进行更改:
command AddFoo normal bifoo<esc>w