você está aqui: Home  → Arquivo de Mensagens

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

 

 

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script