现在的位置: 首页 > 综合 > 正文

vim 插入一列序号

2014年09月05日 ⁄ 综合 ⁄ 共 617字 ⁄ 字号 评论关闭


vimmer可以在vim中使用如下命令用来在所选中的一段文字的每行开头处插入连续的序号:

  :let i=1 | '<,'>g/^/ s//\=i/ | let i+=1

上述命令可以分解成两个命令:

(1)  :let i=1

(2)  :'<,'>g/^/ s//\=i/ | let i+=1

(1) 给一个变量 i 赋了数值 1。

(2) 对当前选中的文字行使用 global 命令,针对每处符合模式 “^” 的地方执行了指令: s//\=i/ | let i+=1 ,即把每处匹配到的当前模式依次替换成了 i 的值,同时把 i 的值增加 1。

详解:

(a) | 在这里用来连接先后依次执行的命令。

(b) let {expression} 即赋值命令。let i=1 给变量 i 赋值 1。let i+=1 给变量 i 的值增加 1。

(c) '<,'>指示的是命令作用域为所选中的文字。

(d) g/{pattern}/{command} 即global命令,一段为模式,一段为命令。

(e) 模式“^”即正则表达式的行首。

(f) s/{pattern}/{text}/{flags} 即substitude命令。s//\=i/ 的 {pattern} 为空,即默认当前模式,即 global 所给的模式“^”。{text} 为 \=i,即替换成 i 的值。省却了{flags}。 

所以上述命令的执行效果就是对选中的文字行开头插入连续的行号。

抱歉!评论已关闭.