2007年8月29日 星期三

vim -- 在每行前加入行號

好久不見的 vim tip 又一發。如果已經有了一個(文字)檔,要怎麼更改內容,讓每行的前面加上行號呢?

答案有點複雜...可以用
:g/^/exe ":s/^/".line(".")."\t/"
這樣會將各行首塞個行號,再加個 tab 做分隔。詳細的 vim tip 連結在此


第一
:[range]g[lobal]/{pattern}/[cmd]
Execute the Ex command [cmd] (default ":p") on the
lines within [range] where {pattern} matches.
所以上面會走遍每一行首(其實就是每一行)執行 exe ":s/^/".line(".")."\t/"

第二
line( xxx ) 會回傳某個地方的行號,line(".") 會回傳目前游標所在的行號

所以綜合以上,上面的命令會讓 vim 走遍每一行,將行首代換成那一行的行號。

沒有留言: