vim技巧两则:使用数字序列替换匹配的pattern和插入数字序列
使用数字序列替换
vim查找替换时,可以使用一个数字序列来替换匹配的内容
1 | :let i=1 \[range\]g/PATTERN/s//\\=i/g let i=i+1 |
插入数字序列
1 | :put =range(11,15) |
可以在文件当前行后插入5行:
1 | 11 |
函数式替换
在替换命令 s/// 中可以使用函数表达式来书写替换内容,格式为
1 | :s/替换字符串/\\=函数式 |
在函数式中可以使用 submatch(1)、submatch(2) 等来引用 \1、\2 等的内容,而submatch(0)可以引用匹配的整个内容。
举个栗子,将文件从第一行开始的行首替换为如下样式:
1 | mem\[0\]= |
可以执行如下替换:
1 | :%s/^/\\='mem\['.(line(".")-1).'\]=' |
References:
[1]Making a list of numbers
[2]vi/vim的巧妙使用-数值加减,递增,序列等