需求
给一段文字自动添加序号,要求本行的序号可以根据上一行的序号自动增一,若上一行没有序号,则从 1 开始
实现
用 ruby 编写 vim 脚本非常容易实现
" 每行的前面添加序号,根据上一行序号自动递增,若上一行没有序号,则从1开始
function! num#add_num()
ruby << EOF
def get_current_line()
count = 0
" 得到当前缓冲区
cb = Vim::Buffer.current
" 得到上一行的行号
previousLine = cb.line_number - 1
" 如果行号存在,并且以数字开头
if previousLine >= 1 && cb[previousLine] =~ /^\d+/
" 得到上一行的序号
count = $&.to_i
end
" 修改本行内容
cb.line = "#{count + 1}. #{line}"
end
get_current_line()
EOF
endfunction
添加自定义命令
在.vimrc
中,添加如下一行
command! -range=% AddNum :<line1>,<line2> cal num#add_num()
关于自定义命令请查看这篇文章:vim 添加自定义命令