Vim-de a mim, Produtividade - por Gustavo Dutra

44
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

Transcript of Vim-de a mim, Produtividade - por Gustavo Dutra

Page 1: Vim-de a mim, Produtividade - por Gustavo Dutra

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

Page 2: Vim-de a mim, Produtividade - por Gustavo Dutra

Sumario

1 Objetivo

2 Vim

3 Princıpios

4 BuscasImportanciaBuscando com eficiencia

5 Operacoes em massaExemplos

6 Sessions

7 Macros

8 Pulos

9 Abreviacoes

10 TemplatesExemplos

11 Plugins

12 DuvidasGustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 2 / 29

Page 3: Vim-de a mim, Produtividade - por Gustavo Dutra

Objetivo

Propor algumas praticas e repensar nossas acoes a fim de torna-las maiseficazes e que consumam menos tempo e esforco utilizando o Vim comoeditor de texto. Para isto, trago 3 princıpios a serem seguidos e algumassolucoes para os problemas que, pelo menos para mim, eram corriqueiros.

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 3 / 29

Page 4: Vim-de a mim, Produtividade - por Gustavo Dutra

Vim

O Vim e um editor de texto e nao, necessariamente, um editor decodigo-fonte. Pode-se editar facil e agilmente qualquer tipo de texto.

Posts de blogs

E-mails

Textos para wiki, foruns, etc

Posts de twitter

Criar PDF’s

Criar apresentacoes

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 4 / 29

Page 5: Vim-de a mim, Produtividade - por Gustavo Dutra

Princıpios

Sao 3 os princıpios para aumentar a produtividade, levando em conta avontade e a motivacao para ser produtivo:

Detectando problemasErros constantes de digitacaoTrabalho manual desgastanteRepeticao de textos

Procurando solucoesLer a documentacaoProcurar por pluginsProcurar por dicas em blogsCriar um script em alguma linguagem

Criando habitosRefazer utilizando a solucaoBrincar com arquivos de testesColar postit’s no monitor

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 5 / 29

Page 6: Vim-de a mim, Produtividade - por Gustavo Dutra

Princıpios

Sao 3 os princıpios para aumentar a produtividade, levando em conta avontade e a motivacao para ser produtivo:

Detectando problemasErros constantes de digitacaoTrabalho manual desgastanteRepeticao de textos

Procurando solucoesLer a documentacaoProcurar por pluginsProcurar por dicas em blogsCriar um script em alguma linguagem

Criando habitosRefazer utilizando a solucaoBrincar com arquivos de testesColar postit’s no monitor

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 5 / 29

Page 7: Vim-de a mim, Produtividade - por Gustavo Dutra

Princıpios

Sao 3 os princıpios para aumentar a produtividade, levando em conta avontade e a motivacao para ser produtivo:

Detectando problemasErros constantes de digitacaoTrabalho manual desgastanteRepeticao de textos

Procurando solucoesLer a documentacaoProcurar por pluginsProcurar por dicas em blogsCriar um script em alguma linguagem

Criando habitosRefazer utilizando a solucaoBrincar com arquivos de testesColar postit’s no monitor

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 5 / 29

Page 8: Vim-de a mim, Produtividade - por Gustavo Dutra

Princıpios

Sao 3 os princıpios para aumentar a produtividade, levando em conta avontade e a motivacao para ser produtivo:

Detectando problemasErros constantes de digitacaoTrabalho manual desgastanteRepeticao de textos

Procurando solucoesLer a documentacaoProcurar por pluginsProcurar por dicas em blogsCriar um script em alguma linguagem

Criando habitosRefazer utilizando a solucaoBrincar com arquivos de testesColar postit’s no monitor

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 5 / 29

Page 9: Vim-de a mim, Produtividade - por Gustavo Dutra

Buscas - Importancia

Certeza de encontrar todas as incidencias

Ficam visualmente destacadas (com :set hlsearch)

Testar substituicoes

Verificar a ortografia atras de erros de digitacao

Encontrar variaveis ou funcoes nao utilizadas, so declaradas

Encontrar rapidamente algum termo

Verificar a existencia de algum termo

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 6 / 29

Page 10: Vim-de a mim, Produtividade - por Gustavo Dutra

Buscando com eficiencia

/termo Busca pela incidencia de termo nos arquivos abertos

:vimgrep Abre os arquivos com a incidencia do termo na Quickfix List

:vimgrepadd Adiciona novos arquivos e incidencias a Quickfix List

: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

Page 11: Vim-de a mim, Produtividade - por Gustavo Dutra

/termo

Exemplos

/texto

/\<casa\</$var

/public void static Main(String\[\] args)

/\([0-9]\+\)texto\1

Navegacao

n Avanca para a proxima incidencia

N Volta para a incidencia anterior

zz Centraliza a linha atual na tela

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 8 / 29

Page 12: Vim-de a mim, Produtividade - por Gustavo Dutra

:vimgrep

:help :vimgrep

:vim[grep][!] /{pattern}/[g][j] {files}

Busca incidencias de pattern nos files listados.

pattern pode ser uma expressao regular ou nao

A exclamacao (!) ignora as alteracoes ja feita no arquivo atual

g procura por todas as incidencias, nao so a primeira, em cada arquivo

j pula para o primeiro resultado ao executar o comando

files podem conter wildcards, como *, ? e **

Os resultados sao abertos na quickfix list

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 9 / 29

Page 13: Vim-de a mim, Produtividade - por Gustavo Dutra

: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 proxima incidencia

:cprevious Posiciona o cursor sobre a incidencia anterior

:cclose Fecha a Quickfix List

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 10 / 29

Page 14: Vim-de a mim, Produtividade - por Gustavo Dutra

:vimgrep

Figure: :vimgrep /:q\¿/g *tex

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 11 / 29

Page 15: Vim-de a mim, Produtividade - por Gustavo Dutra

:vimgrep

Figure: Resultado

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 12 / 29

Page 16: Vim-de a mim, Produtividade - por Gustavo Dutra

:vimgrep

Figure: :copen

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 13 / 29

Page 17: Vim-de a mim, Produtividade - por Gustavo Dutra

:vimgrep

Figure: :cnext

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 14 / 29

Page 18: Vim-de a mim, Produtividade - por Gustavo Dutra

Operacoes em massa

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

Page 19: Vim-de a mim, Produtividade - por Gustavo Dutra

Operacoes em massa

Comandos

:windo cmd Executa um comandos em todas as janelas abertas (:[v]split)CTRL-w t:cmdCTRL-w w:cmd...

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 16 / 29

Page 20: Vim-de a mim, Produtividade - por Gustavo Dutra

Exemplos

:bufdo :%s/$variavel velha/$variavel nova/g

:bufdo :%g/ˆ$/d

:bufdo :%g/ˆ#/d

:tabdo :set fileencoding=utf-8 |:w:bufdo :0r header.file

:windo :syntax on |:set syntax=tex

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 17 / 29

Page 21: Vim-de a mim, Produtividade - por Gustavo Dutra

Sessions

Imagine que voce esta em casa programando. Chega sua namorada e diz:”amor, desliga esse computador e vamos pro quarto”. O que fazer?

Respostas:1 Desliga o computador pressionando o botao pra ir mais rapido,

mais tarde e so reabrir os arquivos e lembrar de onde parou2 Diz pra ela que agora nao pode, pois tem 10 arquivos abertos, 1

diff e esta no meio de um algoritmo complexo3 Finge que nao escutou nada4 Desliga o monitor e reza pra que ninguem mais mexa no

computador5 Salva a sessao e continua da onde parou quando quiser

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 18 / 29

Page 22: Vim-de a mim, Produtividade - por Gustavo Dutra

Sessions

Imagine que voce esta em casa programando. Chega sua namorada e diz:”amor, desliga esse computador e vamos pro quarto”. O que fazer?

Respostas:1 Desliga o computador pressionando o botao pra ir mais rapido,

mais tarde e so reabrir os arquivos e lembrar de onde parou

2 Diz pra ela que agora nao pode, pois tem 10 arquivos abertos, 1diff e esta no meio de um algoritmo complexo

3 Finge que nao escutou nada4 Desliga o monitor e reza pra que ninguem mais mexa no

computador5 Salva a sessao e continua da onde parou quando quiser

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 18 / 29

Page 23: Vim-de a mim, Produtividade - por Gustavo Dutra

Sessions

Imagine que voce esta em casa programando. Chega sua namorada e diz:”amor, desliga esse computador e vamos pro quarto”. O que fazer?

Respostas:1 Desliga o computador pressionando o botao pra ir mais rapido,

mais tarde e so reabrir os arquivos e lembrar de onde parou2 Diz pra ela que agora nao pode, pois tem 10 arquivos abertos, 1

diff e esta no meio de um algoritmo complexo

3 Finge que nao escutou nada4 Desliga o monitor e reza pra que ninguem mais mexa no

computador5 Salva a sessao e continua da onde parou quando quiser

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 18 / 29

Page 24: Vim-de a mim, Produtividade - por Gustavo Dutra

Sessions

Imagine que voce esta em casa programando. Chega sua namorada e diz:”amor, desliga esse computador e vamos pro quarto”. O que fazer?

Respostas:1 Desliga o computador pressionando o botao pra ir mais rapido,

mais tarde e so reabrir os arquivos e lembrar de onde parou2 Diz pra ela que agora nao pode, pois tem 10 arquivos abertos, 1

diff e esta no meio de um algoritmo complexo3 Finge que nao escutou nada

4 Desliga o monitor e reza pra que ninguem mais mexa nocomputador

5 Salva a sessao e continua da onde parou quando quiser

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 18 / 29

Page 25: Vim-de a mim, Produtividade - por Gustavo Dutra

Sessions

Imagine que voce esta em casa programando. Chega sua namorada e diz:”amor, desliga esse computador e vamos pro quarto”. O que fazer?

Respostas:1 Desliga o computador pressionando o botao pra ir mais rapido,

mais tarde e so reabrir os arquivos e lembrar de onde parou2 Diz pra ela que agora nao pode, pois tem 10 arquivos abertos, 1

diff e esta no meio de um algoritmo complexo3 Finge que nao escutou nada4 Desliga o monitor e reza pra que ninguem mais mexa no

computador

5 Salva a sessao e continua da onde parou quando quiser

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 18 / 29

Page 26: Vim-de a mim, Produtividade - por Gustavo Dutra

Sessions

Imagine que voce esta em casa programando. Chega sua namorada e diz:”amor, desliga esse computador e vamos pro quarto”. O que fazer?

Respostas:1 Desliga o computador pressionando o botao pra ir mais rapido,

mais tarde e so reabrir os arquivos e lembrar de onde parou2 Diz pra ela que agora nao pode, pois tem 10 arquivos abertos, 1

diff e esta no meio de um algoritmo complexo3 Finge que nao escutou nada4 Desliga o monitor e reza pra que ninguem mais mexa no

computador5 Salva a sessao e continua da onde parou quando quiser

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 18 / 29

Page 27: Vim-de a mim, Produtividade - por Gustavo Dutra

Sessions

Sempre que se abre o vim, se inicia uma nova sessao. E nela sao gravados:

Hitorico de comandos

Historicos de undos

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

Page 28: Vim-de a mim, Produtividade - por Gustavo Dutra

Macros

Macro

Macro e um conjunto de comandos que podem ser executadosautomaticamente com uma finalidade.

Geralmente sao usadas para tarefas repetitivas e que seguem umpadrao.

Macros muito utilizadas podem ser carregadas automaticamente pelo.vimrc

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 20 / 29

Page 29: Vim-de a mim, Produtividade - por Gustavo Dutra

Pulos

gg Primeira linha do arquivo

G Ultima do arquivo

ˆ Primeiro caracter nao nulo

$ Ultimo caracter nao nulo

b Primeiro caracter da palavra acima do cursor

e Ultima caracter da palavra acima do cursor

fx Primeira incidencia depois do cursor de x na linha

Fx Primeira incidencia anterior ao cursor de x na linha

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 21 / 29

Page 30: Vim-de a mim, Produtividade - por Gustavo Dutra

Pulos

gg Primeira linha do arquivo

G Ultima do arquivo

ˆ Primeiro caracter nao nulo

$ Ultimo caracter nao nulo

b Primeiro caracter da palavra acima do cursor

e Ultima caracter da palavra acima do cursor

fx Primeira incidencia depois do cursor de x na linha

Fx Primeira incidencia anterior ao cursor de x na linha

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 21 / 29

Page 31: Vim-de a mim, Produtividade - por Gustavo Dutra

Pulos

gg Primeira linha do arquivo

G Ultima do arquivo

ˆ Primeiro caracter nao nulo

$ Ultimo caracter nao nulo

b Primeiro caracter da palavra acima do cursor

e Ultima caracter da palavra acima do cursor

fx Primeira incidencia depois do cursor de x na linha

Fx Primeira incidencia anterior ao cursor de x na linha

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 21 / 29

Page 32: Vim-de a mim, Produtividade - por Gustavo Dutra

Pulos

gg Primeira linha do arquivo

G Ultima do arquivo

ˆ Primeiro caracter nao nulo

$ Ultimo caracter nao nulo

b Primeiro caracter da palavra acima do cursor

e Ultima caracter da palavra acima do cursor

fx Primeira incidencia depois do cursor de x na linha

Fx Primeira incidencia anterior ao cursor de x na linha

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 21 / 29

Page 33: Vim-de a mim, Produtividade - por Gustavo Dutra

Pulos

gg Primeira linha do arquivo

G Ultima do arquivo

ˆ Primeiro caracter nao nulo

$ Ultimo caracter nao nulo

b Primeiro caracter da palavra acima do cursor

e Ultima caracter da palavra acima do cursor

fx Primeira incidencia depois do cursor de x na linha

Fx Primeira incidencia anterior ao cursor de x na linha

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 21 / 29

Page 34: Vim-de a mim, Produtividade - por Gustavo Dutra

Pulos

gg Primeira linha do arquivo

G Ultima do arquivo

ˆ Primeiro caracter nao nulo

$ Ultimo caracter nao nulo

b Primeiro caracter da palavra acima do cursor

e Ultima caracter da palavra acima do cursor

fx Primeira incidencia depois do cursor de x na linha

Fx Primeira incidencia anterior ao cursor de x na linha

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 21 / 29

Page 35: Vim-de a mim, Produtividade - por Gustavo Dutra

Pulos

gg Primeira linha do arquivo

G Ultima do arquivo

ˆ Primeiro caracter nao nulo

$ Ultimo caracter nao nulo

b Primeiro caracter da palavra acima do cursor

e Ultima caracter da palavra acima do cursor

fx Primeira incidencia depois do cursor de x na linha

Fx Primeira incidencia anterior ao cursor de x na linha

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 21 / 29

Page 36: Vim-de a mim, Produtividade - por Gustavo Dutra

Pulos

gg Primeira linha do arquivo

G Ultima do arquivo

ˆ Primeiro caracter nao nulo

$ Ultimo caracter nao nulo

b Primeiro caracter da palavra acima do cursor

e Ultima caracter da palavra acima do cursor

fx Primeira incidencia depois do cursor de x na linha

Fx Primeira incidencia anterior ao cursor de x na linha

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 21 / 29

Page 37: Vim-de a mim, Produtividade - por Gustavo Dutra

Pulos por Marcas

Quando usar?

Quando se e difıcil encontrar algum trecho especıfico do arquivo

Quando se precisa apenas um trecho de varios arquivos pra seescrever um outro

Quando o arquivo e muito longo e precisa ser scrollado

<Insira aqui a sua utilidade>

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 22 / 29

Page 38: Vim-de a mim, Produtividade - por Gustavo Dutra

Pulos por Marcas

Como usar?

ma Marca a letra a neste ponto.

Marca a linha cujo cursor esta em cima.Pode-se utilizar qualquer uma das 26 letras.Sao 26 letras por arquivo aberto.Devem ser em minusculas.

mA Marca a letra A neste ponto.

Marca a linha cujo cursor esta em cima.Pode-se utiilziar qualquer uma das 26 letras.Sao 26 letras por sessao.Devem ser em minusculas.Sao visıveis de qualquer arquivo

’a Pula para a marca a (mesmo arquivo)

’A Pula para a marca A (mesma sessao)

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 23 / 29

Page 39: Vim-de a mim, Produtividade - por Gustavo Dutra

Abreviacoes

Corrigir frequentes erros de digitacao

Correcao gramatical

Facilitar escrita de textos muitos longos

Podem variar de acordo com tipo do arquivo (.txt, .java, .c)

Exemplos:

pq porquetchelinux 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

Page 40: Vim-de a mim, Produtividade - por Gustavo Dutra

Abreviacoes

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

Page 41: Vim-de a mim, Produtividade - por Gustavo Dutra

Templates

Funcionalidade

Permite que, ao abrir um novo arquivo, o arquivo tenha um templatepadrao

Acelerando o desenvolvimento

Certificando-se de que nao sera esquecido de nada

Menos erros de digitacao

Evita o raciocınio e a memorizacao sobre coisas desnecessarias

Padroniza documentos

Utilidade

Criar template para uma extensao de arquivo

Criar template para um arquivo que contenha uma certa palavra

Criar template para um arquivo que esteja dentro de um certodiretorio

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 26 / 29

Page 42: Vim-de a mim, Produtividade - por Gustavo Dutra

Exemplos

1 Criar o arquivo bash.template com o template desejado

2 Colocar no .vimrc o codigo para carregar o template para todos osarquivos com extensao .sh

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

Page 43: Vim-de a mim, Produtividade - por Gustavo Dutra

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

Page 44: Vim-de a mim, Produtividade - por Gustavo Dutra

Duvidas

Duvidas?Agradecimento especial Emanuel Zabka

Gustavo Dutra (http://gustavodutra.com) VIM-de a mim, Produtividade November 13, 2009 29 / 29