繁体   English   中英

Vim:在用户定义的命令中发出普通模式命令

[英]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命令,例如writebnext

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM