De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Change log automático no vim
Colaboração: Sérgio Luiz Araújo Silva
Data de Publicação: 25 de Abril de 2005
Que tal atualizar a data de modificação dos seus arquivos de
texto de forma automática no vim?
Editaremos o arquivo ~/.vimrc. Criamos um mapeamento para
uma tecla de função para salvar sem o tradicional :w <cr>
"<cr> é igual a enter"
Antes de salvar saia do modo insert com ESC
map <F9> :w<cr>
" salva um arquivo preexistente
fun! LastChange()
mark z
if getline(1) =~ ".*Last Change:" ||
\ getline(2) =~ ".*Last Change:" ||
\ getline(3) =~ ".*Last Change:" ||
\ getline(4) =~ ".*Last Change:" ||
\ getline(5) =~ ".*Last Change:"
exec "1,5s/\s*Last Change: .*$/Last Change: " . strftime("%c") . "/"
endif
exec "'z"
endfun
Insira em uma das cinco primeiras linhas de seus arquivos
Last Change: "alguma data"
Se for no próprio vimrc coloque aspas duplas no começo da linha
Abaixo uma chamada à função LastChange, pode dar o nome que
quiser contanto que substitua nos lugares certos
au BufWritePre * call LastChange()
Agora mais dois brindes, cabeçalhos prontos que você chama em
modo normal com ,cl e ,sh
fun! InsertChangeLog()
normal(1G)
call append(0, "Arquivo")
call append(1, "Criado: " . strftime("%a %d/%b/%Y hs %H:%M"))
call append(2, "ultima modificação: " . strftime("%a %d/%b/%Y hs %H:%M"))
call append(3, "Autor: Sérgio Luiz Araújo Silva")
normal($)
endfun
map ,cl :call InsertChangeLog()<cr>A
" Cria um cabeçalho para scripts bash
fun! InsertHeadBash()
normal(1G)
call append(0, "#!bin/bash")
call append(1, "# Criado em:" . strftime("%a %d/%b/%Y hs %H:%M"))
call append(2, "# ultima modificação:" . strftime("%a %d/%b/%Y hs %H:%M"))
call append(3, "# O NOME DA SUA EMPRESA")
- Hide quoted text -
call append(3, "# Propósito do script")
normal($)
endfun
map ,sh :call InsertHeadBash()<cr>A