VIM-de a mim, produtividade v0.1

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

description

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

Transcript of VIM-de a mim, produtividade v0.1

Page 1: VIM-de a mim, produtividade v0.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

Page 2: VIM-de a mim, produtividade v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

/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 v0.1

: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 v0.1

: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 v0.1

: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 v0.1

: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 v0.1

: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 v0.1

: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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

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 v0.1

Duvidas

Duvidas?Agradecimento especial Emanuel Zabka

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