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

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


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