Então, se eu acertar você, sua primeira e segunda tentativas mostram que o mecanismo básico funciona, mas você está lutando para colocar tudo junto, certo?
O problema é com o BufWriteCmd
; esse gancho deve gravar o conteúdo do buffer por conta própria. O plugin netrw usa aqueles para implementar o acesso remoto ao sistema de arquivos, por exemplo. Você só precisa definir um único BufWritePre
hook para sua função e, em seguida, agir dependendo se você encontrou uma data atual:
function! ChangeDateIfApplicableAndIncrementLastDigit()
if !match(getline(1,"$"),strftime("%Y%m%d")) >= 0
%s/\d\{10}/\=strftime("%Y%m%d00")/
else
%s/\d\{10}/\=submatch(0)+1
endif
endfunction
autocmd BufWritePre /tmp/test call ChangeDateIfApplicableAndIncrementLastDigit()