VIM-de a mim, produtividade v0.1
-
Upload
gustavo-dutra -
Category
Technology
-
view
634 -
download
0
description
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