vim macro 宏
预设置 vim 宏在 vimrc 中
其实本篇文章核心内容是在预设置宏的时候注意转义问题( vim 中有很多转义问题,以后单独开一篇文章来说)
vim 宏的操作可以观看 vim 宏的操作视频可能更直观一些
将如下写入 vimrc 中,重启 vim 即可
let @s="I#\<Esc>A\""
上述表示:将宏存储在寄存器s中,功能为
- 光标移动到第一个非空字符前且进入 insert 模式
- 插入”#“字符
- 进入 normal 模式
- 光标移动到行尾最后一个字符后且进入插入模式
- 插入"““字符
这里注意声明宏定义一定要用双引号""
扩起来,中间如果有双引号操作,需要转义
<Esc>这个按键也需要转义处理
vim 宏的例子
最近经常有个需求,需要请求别的服务
且是用 http ,每次我都需要拷贝别人的文档,来写 Golang 的结构体,很麻烦,想着能不能自动化了。
最终效果希望自动加上 json tag 等内容
- 录制
1.1 进入 vim 打开一个文件,并拷贝文档内容到文件
ipName string
非必须
ip string
非必须
ipPool string
非必须
ipVersion integer
非必须
format: int32
1.2 手动删除掉一些宏难做的操作,将“非必须”等删除,如下
ipName string
ip string
ipPool string
ipVersion int
1.3 开始录制
我们的需求是在每行的后面加上json:"字段名"
# 光标置于首行,在 normal 模式下按 qa ,即开始录制宏存储在 a 寄存器中,也可以输入其它,q(a~z)
# 这时已经开始录制了,别按无关按键了
# 依次键入 ^yiwA `json:"<Esc>pa\"`
# 注意 <Esc> 为左上角按钮
# 最后在 normal 模式下按q结束录制
- 回放
- 按"V"进入 VISUAL 模式,将需要修改的行框起来
- 按”:“进入命令行
- 键入"normal @s”
- 最终效果如下,并按回车
可以得到如下
|
|
- 将如上宏定义在 vimrc 中,方便下次使用
技巧:使用"ap
可以将寄存器a中的内容打印出来,注意转义~