patch补丁如何用

在神奇的VIM中有这样一段代码
:%s/^/^I/ 每一行的行首添加一个TAB字符
:$ 到文件的末行
:let end=line(".") 末行的行号 ==〉变量 END,函数line的功能是取得指定行的行号,此处参数"."表示当前行
:1 到文件的首行
"------------------------------------------
:let num=1 1 ==〉计数器
:while num<=end
:let line=getline(".") 取当前行的内容 ==〉变量 LINE
:let line=substitute(line,$,num,"") 在变量 LINE 的前面置入行号
:call setline(".",line) 将变量 LINE 的内容写回当前行
:+ 下移一行
:let num=num+1 计数器加一
:endwhile 循环执行,直到文件结束
为什么substitute(line,$,num,"") 在变量 LINE 的前面置入行号?
不是^代表行首,$代表行尾么? 我用'^'试了是在前面加入行号,但是用'$'试验却是在行尾加入了行号,而$确实在行首加了行号,这是怎么回事?

作者: shmily623   发布时间: 2011-06-10