在vim中输入行号(数字序列)
原文讲的是如何在vim中输入你想要的行号,这里可以推而广之(?还是窄之)如何输入数字序列
http://blah.blogsome.com/2007/06/27/vim_line_no/
方法一<LINE>
使用line()函数产生行号用:s命令插入行号。
1 " 为所有行加上行号
2 " 使用合适的范围或者正则表达式就可以限定作用的范围。
3 :g/^/ s//\=line('.').' '/
优点是简单易用。缺点是不够灵活,只能用以显示指定行的行号。
方法二<变量>
这是也是简单灵活的一种解法。
" 为所有行加上行号 :let i=1 :g/^/ s//\=i.' '/ |let i=i+1
这里的i后面的.是字符连接符。为了写出一个空格与后面的字符分开。
注意:g后面的两条命令(:s, :let)一定要写在一起。这是比较通用的一种编号方式,可以应付大部分的编号问题。
方法三<外部程序>
大量的外部程序可以使用,这里就说个最简单的。
:%!cat -n
方法四<CTRL-A>
Vim提供了Ctrl-A和Ctrl-X来分别对光标下(或者光标右边第一个)数字进行增、减操作。按Ctrl-A一次可加一,按Ctrl-X则是减一。如果你用的是Windows,那很有可能Ctrl-A已被映射成全选了。输入
:nunmap <C-A>
使之恢复功能。
先看一下,普通模式下的操作步骤:
第一、手工添加第一行序号和空格。
第二、输入0"ayw将序号放到寄存器a。
第三、移到下一行并输入:
qq0"aP0^A"ayawjq
上面的命令将指令序列存进寄存器q。^A表示按Ctrl-A组合键。
第四、28@q对接下来的28行添加行号。
上面添加空格是很重要的步骤(因为我们使用了yaw复制数字和空格),这里解释一下第三步:
- `qq‘
- 开始录制宏,并保存到寄存器q中
- `0‘
- 设定光标的位置到行首
- `"aP‘
- 放上前面保存的序号和空格
- `0^A‘
- 回到行首并按Ctrl-A加一
- `"ayaw‘
- 复制当前数字和空格到寄存器A
- `jq‘
- 移到下一行(这样我们才能确保28@q是对下面的28行进行操作而不是对当前行操作28次),然后结束宏。