该用例由全球所有(vim)开发人员共享(恕我直言):我们希望更新源文件中每个写入操作的标签和时间戳。在 Barry Arthur 的帮助下,我的尝试是这样的:
每次写入时更新的字符串示例
# 2013-01-09 01:04:31.0 +0100 / Me <me@domain.tld>
vimrc 代码
" if not maped, :x don't call UpdateTimestamp()
map :x :wq
function! UpdateTimestamp()
let old_pos = getpos('.')
let old_search = histget("search", -1)
g/^\(#\|\/\/\)\s\+\d\{4\}-\d\{2\}-\d\{2\}\s\+\d\{2\}:\d\{2\}:\d\{2\}\.\d\+\s\++\d\{4\}\s\+\/\s\+Me <me@domain.tld>.*/s/.*/\="# " . strftime('%F %H:%M:%S.0 %z') . " \/ Me <me@domain.tld>"/
exe "normal /".old_search
call setpos('.', old_pos)
endfunction
au BufWrite * call UpdateTimestamp()
未解决的问题
- 更新标签时不应修改撤消历史记录(如果可能)
- 屏幕位置在写入时发生变化
- 找不到图案时,屏幕上会显示一些不需要的错误
问题
简单:如何解决这些问题?