Técnicas e comandos para ajudar no ganho de produtividade usando o editor Vim.
Uma versão alternativa se encontra em http://www.slideshare.net/bellthoven/vimde
1. VIM-de a mim, Produtividade
Gustavo Dutra
http://gustavodutra.com
November 13, 2009
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 1 / 29
2. Sum´rio
a
1 Objetivo
2 Vim
3 Princ´
ıpios
4 Buscas
Importˆncia
a
Buscando com eficiˆncia
e
5 Opera¸˜es em massa
co
Exemplos
6 Sessions
7 Macros
8 Pulos
9 Abrevia¸˜es
co
10 Templates
Exemplos
11 Plugins
12 D´vidas
u
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 2 / 29
3. Objetivo
Propor algumas pr´ticas e repensar nossas a¸˜es a fim de torn´-las mais
a co a
eficazes e que consumam menos tempo e esfor¸o utilizando o Vim como
c
editor de texto. Para isto, trago 3 princ´
ıpios a serem seguidos e algumas
solu¸˜es para os problemas que, pelo menos para mim, eram corriqueiros.
co
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 3 / 29
4. Vim
O Vim ´ um editor de texto e n˜o, necessariamente, um editor de
e a
c´digo-fonte. Pode-se editar f´cil e agilmente qualquer tipo de texto.
o a
Posts de blogs
E-mails
Textos para wiki, f´runs, etc
o
Posts de twitter
Criar PDF’s
Criar apresenta¸˜es
co
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 4 / 29
5. Princ´
ıpios
S˜o 3 os princ´
a ıpios para aumentar a produtividade, levando em conta a
vontade e a motiva¸˜o para ser produtivo:
ca
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 5 / 29
6. Princ´
ıpios
S˜o 3 os princ´
a ıpios para aumentar a produtividade, levando em conta a
vontade e a motiva¸˜o para ser produtivo:
ca
Detectando problemas
Erros constantes de digita¸˜o
ca
Trabalho manual desgastante
Repeti¸˜o de textos
ca
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 5 / 29
7. Princ´
ıpios
S˜o 3 os princ´
a ıpios para aumentar a produtividade, levando em conta a
vontade e a motiva¸˜o para ser produtivo:
ca
Detectando problemas
Erros constantes de digita¸˜o
ca
Trabalho manual desgastante
Repeti¸˜o de textos
ca
Procurando solu¸˜es
co
Ler a documenta¸˜o
ca
Procurar por plugins
Procurar por dicas em blogs
Criar um script em alguma linguagem
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 5 / 29
8. Princ´
ıpios
S˜o 3 os princ´
a ıpios para aumentar a produtividade, levando em conta a
vontade e a motiva¸˜o para ser produtivo:
ca
Detectando problemas
Erros constantes de digita¸˜o
ca
Trabalho manual desgastante
Repeti¸˜o de textos
ca
Procurando solu¸˜es
co
Ler a documenta¸˜o
ca
Procurar por plugins
Procurar por dicas em blogs
Criar um script em alguma linguagem
Criando h´bitos
a
Refazer utilizando a solu¸˜o
ca
Brincar com arquivos de testes
Colar postit’s no monitor
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 5 / 29
9. Buscas - Importˆncia
a
Certeza de encontrar todas as incidˆncias
e
Ficam visualmente destacadas (com :set hlsearch)
Testar substitui¸˜es
co
Verificar a ortografia atr´s de erros de digita¸˜o
a ca
Encontrar vari´veis ou fun¸˜es n˜o utilizadas, s´ declaradas
a co a o
Encontrar rapidamente algum termo
Verificar a existˆncia de algum termo
e
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 6 / 29
10. Buscando com eficiˆncia
e
/termo Busca pela incidˆncia de termo nos arquivos abertos
e
:vimgrep Abre os arquivos com a incidˆncia do termo na Quickfix List
e
:vimgrepadd Adiciona novos arquivos e incidˆncias a Quickfix List
e
:grep Executa um comando externo e abre os arquivos resultados
(set grepprg)
:!grep Apenas mostra o output do comando externo
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 7 / 29
11. /termo
Exemplos
/texto
/<casa<
/$var
/public void static Main(String[] args)
/([0-9]+)texto1
Navega¸˜o
ca
n Avan¸a para a pr´xima incidˆncia
c o e
N Volta para a incidˆncia anterior
e
zz Centraliza a linha atual na tela
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 8 / 29
12. :vimgrep
:help :vimgrep
:vim[grep][!] /{pattern}/[g][j] {files}
Busca incidˆncias de pattern nos files listados.
e
pattern pode ser uma express˜o regular ou n˜o
a a
A exclama¸˜o (!) ignora as altera¸˜es j´ feita no arquivo atual
ca co a
g procura por todas as incidˆncias, n˜o s´ a primeira, em cada arquivo
e a o
j pula para o primeiro resultado ao executar o comando
files podem conter wildcards, como *, ? e **
Os resultados s˜o abertos na quickfix list
a
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 9 / 29
13. :vimgrep
Exemplos
:vimgrep! /$var/ arquivo.pl
:vimgrep /texto/ *.rb
:vimgrep /cTeXtO/ *.py dir/*.py
:vimgrep /minhaFuncao/g **/*.c
:vimgrep /<([ˆ ]+)[ˆ>]*>.+</1>/ index.html
Navegando na Quickfix List
:copen Abre a Quickfix List
:cnext Posiciona o cursor sobre a pr´xima incidˆncia
o e
:cprevious Posiciona o cursor sobre a incidˆncia anterior
e
:cclose Fecha a Quickfix List
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 10 / 29
14. :vimgrep
Figure: :vimgrep /:q¿/g *tex
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 11 / 29
15. :vimgrep
Figure: Resultado
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 12 / 29
16. :vimgrep
Figure: :copen
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 13 / 29
17. :vimgrep
Figure: :cnext
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 14 / 29
18. Opera¸oes em massa
c˜
Comandos
:bufdo cmd Executa um comando em todos os buffers abertos (:e)
:bfirst
:cmd
:bnext
:cmd
...
:tabdo cmd Executa um comandos em todas as abas abertas (:tabnew)
:tabfirst
:cmd
:tabnext
:cmd
...
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 15 / 29
19. Opera¸oes em massa
c˜
Comandos
:windo cmd Executa um comandos em todas as janelas abertas (:[v]split)
CTRL-w t
:cmd
CTRL-w w
:cmd
...
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 16 / 29
21. Sessions
Imagine que vocˆ est´ em casa programando. Chega sua namorada e diz:
e a
”amor, desliga esse computador e vamos pro quarto”. O que fazer?
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 18 / 29
22. Sessions
Imagine que vocˆ est´ em casa programando. Chega sua namorada e diz:
e a
”amor, desliga esse computador e vamos pro quarto”. O que fazer?
Respostas:
1 Desliga o computador pressionando o bot˜o pra ir mais r´pido,
a a
mais tarde ´ s´ reabrir os arquivos e lembrar de onde parou
e o
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 18 / 29
23. Sessions
Imagine que vocˆ est´ em casa programando. Chega sua namorada e diz:
e a
”amor, desliga esse computador e vamos pro quarto”. O que fazer?
Respostas:
1 Desliga o computador pressionando o bot˜o pra ir mais r´pido,
a a
mais tarde ´ s´ reabrir os arquivos e lembrar de onde parou
e o
2 Diz pra ela que agora n˜o pode, pois tem 10 arquivos abertos, 1
a
diff e est´ no meio de um algoritmo complexo
a
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 18 / 29
24. Sessions
Imagine que vocˆ est´ em casa programando. Chega sua namorada e diz:
e a
”amor, desliga esse computador e vamos pro quarto”. O que fazer?
Respostas:
1 Desliga o computador pressionando o bot˜o pra ir mais r´pido,
a a
mais tarde ´ s´ reabrir os arquivos e lembrar de onde parou
e o
2 Diz pra ela que agora n˜o pode, pois tem 10 arquivos abertos, 1
a
diff e est´ no meio de um algoritmo complexo
a
3 Finge que n˜o escutou nada
a
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 18 / 29
25. Sessions
Imagine que vocˆ est´ em casa programando. Chega sua namorada e diz:
e a
”amor, desliga esse computador e vamos pro quarto”. O que fazer?
Respostas:
1 Desliga o computador pressionando o bot˜o pra ir mais r´pido,
a a
mais tarde ´ s´ reabrir os arquivos e lembrar de onde parou
e o
2 Diz pra ela que agora n˜o pode, pois tem 10 arquivos abertos, 1
a
diff e est´ no meio de um algoritmo complexo
a
3 Finge que n˜o escutou nada
a
4 Desliga o monitor e reza pra que ningu´m mais mexa no
e
computador
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 18 / 29
26. Sessions
Imagine que vocˆ est´ em casa programando. Chega sua namorada e diz:
e a
”amor, desliga esse computador e vamos pro quarto”. O que fazer?
Respostas:
1 Desliga o computador pressionando o bot˜o pra ir mais r´pido,
a a
mais tarde ´ s´ reabrir os arquivos e lembrar de onde parou
e o
2 Diz pra ela que agora n˜o pode, pois tem 10 arquivos abertos, 1
a
diff e est´ no meio de um algoritmo complexo
a
3 Finge que n˜o escutou nada
a
4 Desliga o monitor e reza pra que ningu´m mais mexa no
e
computador
5 Salva a sess˜o e continua da onde parou quando quiser
a
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 18 / 29
27. Sessions
Sempre que se abre o vim, se inicia uma nova sess˜o. E nela s˜o gravados:
a a
Hit´rico de comandos
o
Hist´ricos de undos
o
Arquivos abertos em buffers
Arquivos abertos em abas
Mapeamento de teclas
Abreviaturas. . .
Como usar?
:mksession sessions/algoritmo X.vim
$ vim -S sessions/algoritmo X.vim
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 19 / 29
28. Macros
Macro
Macro ´ um conjunto de comandos que podem ser executados
e
automaticamente com uma finalidade.
Geralmente s˜o usadas para tarefas repetitivas e que seguem um
a
padr˜o.
a
Macros muito utilizadas podem ser carregadas automaticamente pelo
.vimrc
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 20 / 29
29. Pulos
gg Primeira linha do arquivo
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 21 / 29
30. Pulos
gg Primeira linha do arquivo
´
G Ultima do arquivo
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 21 / 29
31. Pulos
gg Primeira linha do arquivo
´
G Ultima do arquivo
ˆ Primeiro caracter n˜o nulo
a
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 21 / 29
32. Pulos
gg Primeira linha do arquivo
´
G Ultima do arquivo
ˆ Primeiro caracter n˜o nulo
a
´
$ Ultimo caracter n˜o nulo
a
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 21 / 29
33. Pulos
gg Primeira linha do arquivo
´
G Ultima do arquivo
ˆ Primeiro caracter n˜o nulo
a
´
$ Ultimo caracter n˜o nulo
a
b Primeiro caracter da palavra acima do cursor
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 21 / 29
34. Pulos
gg Primeira linha do arquivo
´
G Ultima do arquivo
ˆ Primeiro caracter n˜o nulo
a
´
$ Ultimo caracter n˜o nulo
a
b Primeiro caracter da palavra acima do cursor
´
e Ultima caracter da palavra acima do cursor
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 21 / 29
35. Pulos
gg Primeira linha do arquivo
´
G Ultima do arquivo
ˆ Primeiro caracter n˜o nulo
a
´
$ Ultimo caracter n˜o nulo
a
b Primeiro caracter da palavra acima do cursor
´
e Ultima caracter da palavra acima do cursor
fx Primeira incidˆncia depois do cursor de x na linha
e
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 21 / 29
36. Pulos
gg Primeira linha do arquivo
´
G Ultima do arquivo
ˆ Primeiro caracter n˜o nulo
a
´
$ Ultimo caracter n˜o nulo
a
b Primeiro caracter da palavra acima do cursor
´
e Ultima caracter da palavra acima do cursor
fx Primeira incidˆncia depois do cursor de x na linha
e
Fx Primeira incidˆncia anterior ao cursor de x na linha
e
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 21 / 29
37. Pulos por Marcas
Quando usar?
Quando se ´ dif´ encontrar algum trecho espec´
e ıcil ıfico do arquivo
Quando se precisa apenas um trecho de v´rios arquivos pra se
a
escrever um outro
Quando o arquivo ´ muito longo e precisa ser scrollado
e
<Insira aqui a sua utilidade>
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 22 / 29
38. Pulos por Marcas
Como usar?
ma Marca a letra a neste ponto.
Marca a linha cujo cursor est´ em cima.
a
Pode-se utilizar qualquer uma das 26 letras.
S˜o 26 letras por arquivo aberto.
a
Devem ser em min´sculas.
u
mA Marca a letra A neste ponto.
Marca a linha cujo cursor est´ em cima.
a
Pode-se utiilziar qualquer uma das 26 letras.
S˜o 26 letras por sess˜o.
a a
Devem ser em min´sculas.
u
S˜o vis´
a ıveis de qualquer arquivo
’a Pula para a marca a (mesmo arquivo)
’A Pula para a marca A (mesma sess˜o)
a
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 23 / 29
39. Abrevia¸oes
c˜
Corrigir frequˆntes erros de digita¸˜o
e ca
Corre¸˜o gramatical
ca
Facilitar escrita de textos muitos longos
Podem variar de acordo com tipo do arquivo (.txt, .java, .c)
Exemplos:
pq porque
tchelinux Tche Linux - Rio Grande Do Sul
forloop for ($i = 0; $i <count($array); $i++) {}
:Wq :wq
:Q :q
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 24 / 29
40. Abrevia¸oes
c˜
Como usar?
:iabbr pq porque
:iabbr tchelinux Tche Linux - Rio Grande Do Sul
:abbr forloop for ($i = 0; $i <count($array); $i++) {}
:cabbr Wq wq
:cabbr Q q
:cabbr trim s/ˆs+|s+$//g
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 25 / 29
41. Templates
Funcionalidade
Permite que, ao abrir um novo arquivo, o arquivo tenha um template
padr˜o
a
Acelerando o desenvolvimento
Certificando-se de que n˜o ser´ esquecido de nada
a a
Menos erros de digita¸˜o
ca
Evita o racioc´ e a memoriza¸˜o sobre coisas desnecess´rias
ınio ca a
Padroniza documentos
Utilidade
Criar template para uma extens˜o de arquivo
a
Criar template para um arquivo que contenha uma certa palavra
Criar template para um arquivo que esteja dentro de um certo
diret´rio
o
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 26 / 29
42. Exemplos
1 Criar o arquivo bash.template com o template desejado
2 Colocar no .vimrc o c´digo para carregar o template para todos os
o
arquivos com extens˜o .sh
a
3 Sentir a magia
bash.template
#!/bin/bash
.vimrc
autocmd BufNewFile *.sh 0r bash.template
Shell
$ vim teste.sh
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 27 / 29
43. Plugins
NERDTree
FuzzyFinder
SnipMate
PotWiki
Taglist
MiniBufExpl
MatchIt
Mark
VimOutliner
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 28 / 29
44. D´vidas
u
D´vidas?
u
Agradecimento especial Emanuel Zabka
Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 29 / 29