VIM-de a mim, produtividade v0.1

Post on 09-Jul-2015

634 views 0 download

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

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

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

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

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

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

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

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

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

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

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

/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

: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

: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

:vimgrep

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

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

:vimgrep

Figure: Resultado

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

:vimgrep

Figure: :copen

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

:vimgrep

Figure: :cnext

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Duvidas

Duvidas?Agradecimento especial Emanuel Zabka

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