Vim 自定义命令,将字符串与默认 Vim 命令放在一起

Vim 自定义命令,将字符串与默认 Vim 命令放在一起

我正在尝试在 .vimrc 中创建一个新的自定义命令,这样当我输入

:Hcom

该命令将把当前行的文本转换为 HTML 注释。

举个例子:

abcdef
:Hcom
<!-- abcdef -->


我不想使用宏或映射。等效的宏将是

let @h = '0i<\!-- ^[A -->^['

我不知道该如何做到这一点。没有脚本是否可能? 我尝试了以下操作(有或没有逃脱),但都没有成功:

:command Hcom put='0i<\!-- ^[A -->^['

答案1

:put命令将寄存器内容(或者,正如您在此处使用的特殊情况,表达式求值的结果,此处为静态字符串)逐字插入缓冲区。它不能用于播放命令。

由于您的命令是普通和插入模式映射,因此您可以使用:normal!来执行它们。键映射会直接将它们放在右侧;由于自定义:command在 Ex 模式下工作,因此您需要:normal作为从 Ex 到正常模式的翻译。

:command! Hcom normal! 0i<!-- ^[A -->^[

嵌入的^[必须是文字转义字符;我建议将它们写在:help key-notation;然后需要双引号并:execute解释字符串:

:command! Hcom execute "normal! 0i<!-- \<Esc>A -->\<Esc>"

在您投入更多精力来调整此命令之前,请注意,有几个评论插件可以很好地完成此操作,并且它们是通用的(并且通常可扩展),因此它们适用于任何文件类型:

相关内容