você está aqui: Home  → Arquivo de Mensagens Programação Shell Linux: Inscrições Abertas

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


Veja a relação completa dos artigos de Sérgio Luiz Araújo Silva