Vim能否显示上次保存后的修改次数?能否在状态栏展示该信息?
Vim查看文件自上次保存后的修改次数及状态栏显示方案
一、查看修改次数的实现方法
Vim没有原生的直接统计修改次数的选项,但可以通过自定义变量和函数实现:
- 添加自动命令,记录保存时的修改标记值
在Vim的配置文件(如~/.vimrc)中加入:
autocmd BufWritePost * let b:last_saved_tick = b:changedtick
这个命令会在每次保存缓冲区后,把当前的b:changedtick(Vim内置的缓冲区修改计数器,每次内容变更都会递增)存到缓冲区本地变量里。
- 定义计算修改次数的函数
同样在配置文件中添加:
function! GetModificationCount() if !exists('b:last_saved_tick') return 0 endif return b:changedtick - b:last_saved_tick endfunction
如果文件从未保存过,返回0;否则返回当前修改标记与保存时标记的差值,也就是自上次保存后的修改次数。
- 查看次数
在普通模式下执行:echo GetModificationCount(),就能直接看到结果。
二、将修改次数显示在状态栏
只需把上述函数的结果整合到statusline设置中即可:
在配置文件中添加:
set statusline+=%{GetModificationCount()} changes
这样状态栏会自动追加类似2 changes的内容,实时显示自上次保存后的修改次数。
如果需要更复杂的状态栏格式,可以结合其他statusline占位符调整,比如:
set statusline=%f\ %{GetModificationCount()} changes\ %=%l:%c
这个设置会显示文件名、修改次数,以及右下角的行列号。
内容的提问来源于stack exchange,提问作者David Shaw
相关产品推荐
相关产品推荐

