[英]Vim: Issue normal-mode commands in user-defined command
我敢肯定这会在某个地方被问到,但是我一生都找不到,而且不在Vim文档的“ 定义命令行命令”部分中。
我想创建一个用户定义的命令,该命令将在当前单词之前插入单词foo
。
(注意:我希望它成为一个函数,因为我不相信自己会记住另一个快捷键。我知道如何使用noremap
来实现它……)
在我的.vimrc
添加:
command AddFoo bifoo<esc>w
但是当我输入:AddFoo
我得到的Not an editor command: bifoow
。
是否可以具有发出普通模式命令的功能?
:normal
Ex命令允许发出任意的普通模式命令。
command AddFoo normal! bifoo<esc>w
如果要插入表达式等,则需要使用:execute
; 我将再次使用:help key-notation
展示您的示例:
command AddFoo execute "normal! bifoo\<esc>w"
!
:normal
禁止使用自定义映射,例如:noremap
(vs :map
)。
请确保您获得命令和功能之间的区别。
命令定义的右侧应该至少是一个Ex命令,例如write
或bnext
:
command! Foo update | tabnext
您可以调用一个函数:
command! Bar call Bar()
或执行普通模式宏:
command! Baz normal ciw"<C-r>""
参见:help :normal
。
获得所需的内容应该很简单,您只需切换到普通模式即可进行更改:
command AddFoo normal bifoo<esc>w
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.