在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次),然后结束宏。
posted @ 2012-02-21 16:19  poiu_elab  阅读(1872)  评论(0编辑  收藏  举报