Criando templates para scripts com VIM

Bem pessoal, eu sempre gostei de automatizar as coisas que trabalho no dia a dia. Então nada mais justo do que realizarmos uma automação no editor VIM para criação de templates para scripts.

Primeiramente iremos criar o diretório que conterá nossos templates, para isso vamos utilizar o comando abaixo:

mkdir -p $HOME/.vim/skel

Será necessário criamos também inluirmos no arquivo .vimrc a função que fará a leitura do diretório:

vim $HOME/.vimrc

autocmd BufNewFile * silent!
        \ 0r ~/.vim/skel/skel.%:e|norm G
 

Agora iremos criar 3 templates para 3 linguagens de programação diferente, sendo elas:

Python

Será necessário inserir o conteúdo abaixo:

vim skel.py

#!/usr/bin/python3
# -*- coding: utf-8 -*-
#=============================================================
# AUTOR: Leonardo Berbert
#

Shell

vim skel.sh

#!/usr/bin/sh
#=============================================================
# AUTOR: Leonardo Berbert
#

Perl

vim skel.pl

#!/usr/bin/perl
# -*- coding: utf-8 -*-
#=============================================================
# AUTOR: Leonardo Berbert
#

Agora que os passos acima foram finalizados, você poderia fazer um teste e criar um script de exemplo:

vim teste.py

Perceba que agora a mágica acontece e toda a estrtura será criada contendo o que você criou nos skel:

image

Como isso me ajuda bastante, resolvi compartilhar para ajudar a quem precisa.

’ leoberbert

1 curtida

Seus templates só funciona na hierarquia de filesystem Linux tradicional e limitado a isso. Se for usado em Linux que usa outra hierarquia ou se for usado em outros sistema operacionais tipo Unix e também se o Bash e outros não estiverem instalados nos patchs especificados no template não vai funcionar.

Para isso não acontecer usa-se o “env” “#!/usr/bin/env xxxx” o env vai puxar o interpretador no patch correto.

@aguamole

Boa noite! Sim, você tem razão na sua argumentação:

“#!/usr/bin/env xxxx”

Porém a idéia aqui é demonstrar que é possível criar templates para ficar evitando de preencher um header por exemplo.

No meu caso por exemplo eu ainda utilizo uma função no meu vimrc para fazer replace e inserir no header a data de modificação do arquivo por exemplo. Sei que você vai dizer que isso é possível ver com um simples ls -lrtc, porém a idéia é justamente deixar a imaginação trabalhar e cada um colocar o que precisar de acordo com sua necessidade.

Novamente agradeço pelo comentário.

Abraço,

's leoberbert

Precisa fazer mais alguma coisa além destes passos?

Tentei com o vim e neovim e não foi.

ME esqueci de incluir a função no vimrc que faz essa leitura… Inclui acima:

Será necessário criamos também inluirmos no arquivo .vimrc a função que fará a leitura do diretorio:

vim $HOME/.vimrc

autocmd BufNewFile * silent!
        \ 0r ~/.vim/skel/skel.%:e|norm G
 
1 curtida

Muito top. Não sabia da existência desta funcionalidade.

Para quem usa o neovim, estou usando o LazyVim e adicionei este código abaixo no arquivo …/lua/config/autocmds.lua

vim.cmd([[
  augroup templates
    autocmd!
    autocmd BufNewFile * silent! 0r ~/.vim/skel/skel.%:e | norm G
  augroup END
]])
1 curtida

@Pio

Tem uma coisa que eu uso muito no vim é uma linha como acessibilidade por conta do meu problema de visão:

vim ~/.vimrc

set cursorline

Me ajuda bastante a me localizar devido a visão reduzida :slight_smile:

1 curtida