Isso é possível, mas exigirá que você tenha algum conhecimento da linguagem de script do Vim. Você precisará escrever uma função Vim que possa encontrar a localização da data dentro da seção atual sem "escapar" aquela seção, e então alterar essa linha. Uma vez que a função esteja escrita, você precisará anexá-la a um autocmd.
Por exemplo, se a sua função foi chamada TexAutoDate()
, você poderia chamá-la automaticamente toda vez que gravar um arquivo que termina em .tex
desta maneira:
:autocmd BufWritePre *.tex :call TexAutoDate()
Infelizmente, o corpo real da função será bastante complexo e, sem saber mais sobre o layout do arquivo, não posso ajudá-lo muito. Eu tenho uma função que escrevi para um propósito similar, mas ela não se restringe a seções. A seguinte função atualiza a linha "Última alteração:" de um arquivo de ajuda do Vim automaticamente ao escrever:
function HelpModifiedUpdate()
if &filetype != "help"
return
endif
let today=strftime('%Y %b %d')
" Save current cursor position:
let lnum = line('.')
let col = col('.')
if search('Last change: ', 'w')
let line1 = getline('.')
if line1 =~ today
" Restore cursor position:
call cursor(lnum, col)
return
endif
let line2 = substitute(
\line1,
\'Last change: .*',
\'Last change: ' . today,
\''
\)
call setline('.', line2)
endif
" Restore cursor position:
call cursor(lnum, col)
endfunction
Veja:
:help :autocmd
:help :function
:help eval.txt
O último é extenso e você não precisará ler o arquivo inteiro, mas ele conterá muito do que você precisa se você ainda não conhece o script Vim.