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