vim中级命令

14 篇文章 1 订阅

这一个星期研究了下vim的相关命令


这里记录一下学到的高级一点的用法


1)s匹配整行

用:s/.*/xxxx  将当前行的内容替换为xxxx

解释一下:vim的正则表达式中,.匹配任何单个字符,*表示前面匹配原的任意次重复,所以能匹配到整行的内容。

这个是需要注意的地方,因为常用的通配符中*代表任意单个或多个字符,可能会错误的认为*或^*$能匹配到整行。


:%s/.*world.* 清空含有world的行


2)s中匹配内容的使用

举个例子,例如有10行文本

abc1

abc2

abc3

abc4

abc5

abc6

abc7

abc8

abc9

abc10

想要变成这种格式:

abcxx: abc: xx,如abc4: abc: 4

那么可用下面的命令:

:205,214 s/\([a-z]\+\)\(\d\+\)/\0\: \1: \2

解释一下:

205,214是这10行的行号范围

匹配的内容其实是:[a-z]\+\d\+,意思很简单,就是一个或多个小写字母连上一个或多个数字

替换为:\0\: \1: \2

\0代表匹配的整个内容,也就是一个或多个小写字母连上一个或多个数字

\1代表第一对\(\)中的匹配内容,也就是[a-z]\+,所以是一个或多个小写字母

依次类推,\2代表第二对\(\)中的匹配内容,也就是\d\+,所以是一个多个数字

可以到\9。


1

2

3

变为

imgx.png

用命令

:214,216 s/.*/img\0\.png

就变为了
img1.png
img2.png
img3.png


还原回去用u命令,重做用ctrl+r命令

还原回去也可以用命令

214,216 s/img\|\.png//g


 3)g命令来给内容加上标号

用如下命令给205到213行设定标号

let i=1 | 205,213 g/^/s//\=printf("%02d ", i)/|let i=i+1


4)录制宏

normal模式下输入qq进入录制模式,然后i进入插入模式,对当前行进行编辑操作,按ESC返回正常模式,输入q结束录制,然后输入@q就可以执行录制的宏


例如:

1

2

3

4

5

6

7

8

9

输入qq开始录制,到第一行,i进入插入模式,在1前面输入img,1后面输入.png,第一行就变成了img1.png,ESC到normal模式,q退出录制

输入

:2,9 norm @q

那么第1到第9行都变成了imgx.png的格式,就是重复执行一组命令


在norm模式下,输入q:进入历史命令列表,这是一个可编辑缓冲区


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值