我使用 Vim 进行所有程序编辑,并且在所有源代码文件的顶部都有一个标准头文件。当我使用 :w 保存任何更改时,我设置了一个 .vimrc 文件来更新此标头中的某些字段(如上次修改)
我的问题是,如何按照只计算非空行的基本规则放入一个函数来计算代码行数?
我知道在打开的 vim 缓冲区中,我可以使用
:%s/\n//gn
计算所有行,以及
:%s/\n\n//gn
计算空行(基本上是计算两个换行符连续出现多少次,表示一个空行)。但是我如何把它放在我的 .vimrc 文件中呢?
这是我的 .vimrc 中更新标头字段的代码片段:
function! LastModified()
if &modified
let save_cursor = getpos(".")
let n = min([20, line("$")])
keepjumps exe '1,' . n . 's#^\(.\{,10}Last Modified:\).*#\1' .
\ strftime(' %a %b %d, %Y %I:%M%p') . '#e'
keepjumps exe '1,' . n . 's#^\(.\{,10}Filename:\).*#\1' .
\ ' ' . @% . '#e'
keepjumps exe '1,' . n . 's#^\(.\{,10}LOC:\).*#\1' .
\ ' ' . '' . '#e'
call histdel('search', -1)
call setpos('.', save_cursor)
endif
endfun
另外,我想补充一下,我知道还有很多其他方法可以做到这一点(比如使用 shell 中的 wc --lines),但我有兴趣学习如何真正配置我的编辑器(所以称之为学习练习)。