前言
本文主要给大家介绍了关于在vim中插入数字序列的方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
待处理文本
假设文本原来内容是
| 这是第一行 这是第二行 这是第四行 这是第五行 |
插入行号变成
| 1 这是第一行 2 这是第二行 3 4 这是第四行 5 这是第五行 |
还有一种想要的效果是
| 这是第一行 line[1] 这是第二行 line[2] 这是第三行 line[3] 这是第四行 line[4] |
下文会对上面两种需求都给出答案,利用下面提到的方法其实远可以实现更复杂的数字序列插入。包括替换指定字符,并在后面依次跟上序列数字。
使用line()
line('.')可以返回当前行号
| :g/^/s//=line('.').' '/ |
非常简单,但不太灵活,只能用于显示当前行的行号
使用ex命令
vim提供了一些可以打印行号的ex命令,如"=", "p # ", "#"
为了获取vim的命令输出,这里需要使用redir
| "为前5行加上行号 :redir @a | 1,5#|redir END :1,5d | put! a |1d |6d |
在粘贴后在前后都多出一行,所以要用d来删除
使用range, setline, getline
range()可以产生数字序列列表
| :for i in range(6) :call setline(i, i.' '.getline(i)) :endfor |
range(6)会产生数字列表1-5, 不包含6
变量积加
| : let i=1 | g/^/s//=i.' '/ | let i=i+1 |
这种方法更灵活,可以通过控制i的值变化来控制插入的值
宏和Ctrl-A
可以在数字上按ctrl-A来让数字加一, Ctrl-X让数字减一
过程如下:
手工添加第一行的序号和空格 输入0"ayw将序号和空格放到寄存器a中 移到下一行,执行下面按键| qz0"aP0^A"ayawjq |
执行4@z来在下面4行执行保存在寄存器z中的命令序列
上面命令序列的详细解释如下
如果没有空格做标志,那么就不能用aw来复制一个word,要用v来选择相应数字部分
注意:在命令行下, ctrl-a需要用ctrl-v, ctrl-a来表示这个按键
在vim下宏比较强大,但一般要写出一个可行的宏需要很多次调试
外部命令
seq是linux下输出序列的命令








