Para quem não sabe, o Vi é um antigo editor de texto mas que é vastamente utilizado até hoje por conta dos seus super poderes e customização. Comecei a utilizá-lo o Vim (Vi Improved) quando trabalhei na Myfreecomm graças a ajuda do Flávio Amieiro. Hoje em dia sou um defensor do editor e faço propagandas dele quando dá.
Faz um tempo e alguns amigos meus me pediram dicas sobre o Vim e ajuda para começar a utilizar e aprender a manipular melhor o editor. Para isso, eu sempre passava o endereço do meu repositório com meus arquivos de configuração e explicava o que eu utilizava. Como já me cansei de fazer isso, resolvi fazer esse post para mostrar o que eu uso com mais frequência quando estou trabalhando com o Vim.
1 – NerdTree Plugin
Esse eu acredito que seja um must-have do Vim. Basicamente você ganha o poder de visualizar a árvore de arquivos a partir do diretório que você está. Isso é bom porque você pode fazer busca de arquivos, navegar por diretórios e abrir arquivos de maneira mais rápida. Você pode instalá-lo seguindo essas instruções. A única coisa de diferente que fiz foi mudar o mapeamento da exibição da árvore.
2 – Code Fold
Eu me confundo muito quando tem muito código em um arquivo e eu só preciso trabalhar em uma parte dele. Para resolver esse problema utilizo uma função que faz esconde o código respeitando a sua identação. Acredito que essa seja a função que eu mais utilize do meu vimrc. Para utilizá-la, é só copiar essa parte de código para o seu vimrc e utilizar espaço quando fora do modo de edição.
3 – Tab completion
Existem ferramentas mais eficientes para fazer o tab completion de linguagens, mas eu gosto da função que utilizo exatamente por ela não ser guiada por nenhuma linguagem de programação. Basicamente ele utiliza o que já foi escrito no próprio arquivo para fazer avaliações de possíveis complementos, ou seja, ele assume que o que você vai utilizar, provavelmente já foi escrito. Acho essa abordagem bem interessante porque limita bastante o número de possibilidades e
evita listas gigantescas de alternativas. O código para essa função está aqui.
4 – Closetag
Esse é um script simples que faz um map para fechar tags HTML automaticamente. Assim, depois de criar o conteúdo de uma tag, apenas faço um CONTROL + _ e essa tag está fechada. Parece bobo, mas é uma mão na roda! Para utilizar é só colocar essas linhas no seu vimrc e copiar esse arquivo para o diretório .vim/scripts/.
5 – Ipython Debugger instantâneo
O último item da lista é a função Python que fiz como experimento para inserir e remover breakpoints para fazer debug de código Python. Já fiz um post falando sobre essas funções, então se quiserem saber como utilizar é só olhar lá.
Esses são os 5 pontos que mais utilizo. Ainda existem outras coisas, mas esses são os que utilizo praticamente todo dia que abro o Vim para trabalhar. Como bonus vale dar uma olhada nos mapeamentos de teclado para de navegação e manuseio de mais de uma janela que utilizo dentro do Vim.
Se você está começando, também aconselho o post Aprenda Vim Progressivamente que é original do Yann Esposito, mas que o Tarsis Azevedo fez uma ótima tradução.
Compartilhe nos comentários os seus plugins e maneiras de utilizar o Vim que eu não compartilhei nesse texto para iniciarmos uma rica discussão! Até a próxima!
Outro dia achei um plugin para fazer o Zen HTML no vim. Sensacional. Facilita muito escrever um html. E parabéns pelo seu artigo. Gostei e já copiei a função de complete que você fez.
Andre, vou dar uma olhada nesse plugin também! Acho que é o mesmo que o Gilson falou, não? Sobre a função, eu copiei ela de algum vimrc mas o Vinicius já deu uma dica mais simples aqui.
Muito essas dicas Bernado!
Um plugin que recomendo para front-end e que uso muito é o Sparkup, que insere o Zen Coding no Vim.
Gilson, obrigado pela sugestão! Vou dar uma olhada nesse plugin e ver se começo a utilizar!
Sua função não teria a mesma finalidade do CTRL+N do vim em modo de inserção?
Vinicius, você tem razão! Eu nem conhecia essa do CTRL + N em modo de inserção e valeu pela dica já. Essa função não é minha e foi uma das primeiras que eu peguei para utilizar no Vim. Acho que é por costume, estou acostumado com a utilização do CTRL + Tab. Mas talvez adicionando o mapping eu nao tenha mais a necessidade dela.
O que essa ToggleFold() faz de especial? Porque o próprio vim tem suporte nativo a code folding. Meu .vimrc tem isso aqui (baseado em [1]):
set foldmethod=indent “fold based on indent
set foldlevel=1
set foldnestmax=10 “deepest fold is 10 levels
set nofoldenable “dont fold by default
[1] http://smartic.us/2009/04/06/code-folding-in-vim/
Pra gerenciar as minhas configs do VIM eu uso o projeto Janus (https://github.com/carlhuda/janus). Achei bem interessante a proposta deles e passei a usar.
E acho engraçado como todos mundo gosta do NerdTree. Eu acho horroroso.
Eu to usando mto o plugin ctrl+p, que é um find igual ao do sublime. xD