预设置 vim 宏在 vimrc 中

其实本篇文章核心内容是在预设置宏的时候注意转义问题( vim 中有很多转义问题,以后单独开一篇文章来说)

vim 宏的操作可以观看 vim 宏的操作视频可能更直观一些

将如下写入 vimrc 中,重启 vim 即可

let @s="I#\<Esc>A\""

上述表示:将宏存储在寄存器s中,功能为

  • 光标移动到第一个非空字符前且进入 insert 模式
  • 插入”#“字符
  • 进入 normal 模式
  • 光标移动到行尾最后一个字符后且进入插入模式
  • 插入"““字符

这里注意声明宏定义一定要用双引号""扩起来,中间如果有双引号操作,需要转义

<Esc>这个按键也需要转义处理

vim 宏的例子

最近经常有个需求,需要请求别的服务

且是用 http ,每次我都需要拷贝别人的文档,来写 Golang 的结构体,很麻烦,想着能不能自动化了。

最终效果希望自动加上 json tag 等内容

  1. 录制

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结束录制
  1. 回放
  • 按"V"进入 VISUAL 模式,将需要修改的行框起来
  • 按”:“进入命令行
  • 键入"normal @s”
  • 最终效果如下,并按回车

图示

可以得到如下

1
2
3
4
5
6
type Struct struct {
	inQosName	string	 `json:"inQosName"`
	ip	string	 `json:"ip"`
	ipPool	string	 `json:"ipPool"`
	ipVersion	int `json:"ipVersion"`
}
  1. 将如上宏定义在 vimrc 中,方便下次使用

技巧:使用"ap可以将寄存器a中的内容打印出来,注意转义~