Slide 1

Slide 1 text

O editor onipresente e O editor onipresente e flexível flexível

Slide 2

Slide 2 text

Palestrante: Gilson Filho Palestrante: Gilson Filho ● Comecei a programar à 6 anos; Comecei a programar à 6 anos; ● Programador web a 4 anos; Programador web a 4 anos; ● Usuário linux há 5 anos; Usuário linux há 5 anos; ● Python, Java, ASP, Visual Basic; Python, Java, ASP, Visual Basic; ● Moderador do GruPy-DF; Moderador do GruPy-DF; ● Participante do Candjango; Participante do Candjango; ● Contribui com vários projetos opensource. Contribui com vários projetos opensource.

Slide 3

Slide 3 text

O que é o Vim? O que é o Vim?

Slide 4

Slide 4 text

Sobre o Editor Sobre o Editor ● Foi criado por Bram Moolenaar e seu primeiro Foi criado por Bram Moolenaar e seu primeiro release foi em 1991; release foi em 1991; ● Baseado no editor Vi, um editor usado em Baseado no editor Vi, um editor usado em sistemas Unix-like; sistemas Unix-like; ● Possui novas e melhores funcionalidades, por Possui novas e melhores funcionalidades, por isso o nome (Vim – Vi Improved); isso o nome (Vim – Vi Improved);

Slide 5

Slide 5 text

Características Características

Slide 6

Slide 6 text

Características Características ● Software Livre (GPL): Software Livre (GPL): gratuito e código fonte gratuito e código fonte disponível; disponível; ● Onipresente: Onipresente: ou seja, roda em qualquer SO ou seja, roda em qualquer SO existente e em várias formas (terminal ou existente e em várias formas (terminal ou gráfico): gráfico): – Windows, Linux, Mac OS, AmigaOS, DOS, AIX, HP- Windows, Linux, Mac OS, AmigaOS, DOS, AIX, HP- UX, FreeBSD, Solaris, etc... UX, FreeBSD, Solaris, etc...

Slide 7

Slide 7 text

Características Características ● Flexível: Flexível: programável com interpretadores programável com interpretadores (Perl, Python e Ruby) ou sua linguagem de (Perl, Python e Ruby) ou sua linguagem de script script ● Preparado: Preparado: suporte a 500 linguagens, syntax suporte a 500 linguagens, syntax hightlight e vários esquemas de cores hightlight e vários esquemas de cores ● Experiente: Experiente: já tem 20 anos de idade ;) já tem 20 anos de idade ;)

Slide 8

Slide 8 text

Instalando o editor Instalando o editor

Slide 9

Slide 9 text

No Linux No Linux ● Na maioria das distribuições Linux, o Vim já fica Na maioria das distribuições Linux, o Vim já fica instalado por padrão. instalado por padrão. ● Pode-se instalar a versão gráfica do editor; Pode-se instalar a versão gráfica do editor; – Debian Debian ● sudo apt-get install vim-gtk [vim-gnome] sudo apt-get install vim-gtk [vim-gnome] – Fedora Fedora ● yum install gvim yum install gvim – Outras distribuições (compilando) Outras distribuições (compilando) ● http://bit.ly/compile-gvim http://bit.ly/compile-gvim

Slide 10

Slide 10 text

No Windows No Windows ● Possui interface gráfica para instalar: Possui interface gráfica para instalar: – Download: Download: http://bit.ly/windows-vim http://bit.ly/windows-vim – Next, Next, Finish. Next, Next, Finish.

Slide 11

Slide 11 text

No Mac OS No Mac OS ● Projeto MacVim Projeto MacVim – Download: Download: http://bit.ly/macvim http://bit.ly/macvim – Instale em Instale em Applications Applications

Slide 12

Slide 12 text

Mostrando o Ambiente Mostrando o Ambiente

Slide 13

Slide 13 text

Mostrando o Ambiente Mostrando o Ambiente

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

5 5 Usando o editor Usando o editor

Slide 16

Slide 16 text

Abrindo arquivos Abrindo arquivos ● Abrindo um ou mais arquivos Abrindo um ou mais arquivos – vim arq [arq2] [arqN] vim arq [arq2] [arqN] ● Abrir em somente leitura Abrir em somente leitura – vim -R arq [arq2] [arqN] vim -R arq [arq2] [arqN] ● Abrir e posiciona cursor na última linha Abrir e posiciona cursor na última linha – vim + arq vim + arq ● Abrir e posiciona cursor na linha X Abrir e posiciona cursor na linha X – vim +15 arq vim +15 arq ● Abrir arquivo e fazendo busca ao mesmo tempo Abrir arquivo e fazendo busca ao mesmo tempo – vim +/padrão arq vim +/padrão arq

Slide 17

Slide 17 text

Fechando arquivos Fechando arquivos ● Grava texto e continua editando Grava texto e continua editando – :w[!] ou :w[!] :w[!] ou :w[!] ● Grava texto (se tiver alteração) e sai do Vim Grava texto (se tiver alteração) e sai do Vim – ZZ ZZ ● Salva arquivo e sai do Vim Salva arquivo e sai do Vim – :wq[!] :wq[!] ● Fecha do editor Fecha do editor – :q :q ● Fecha o editor sem salvar as alterações Fecha o editor sem salvar as alterações – :q! :q! ! - mesmo em RO ! - mesmo em RO ! - mesmo em RO ! - mesmo em RO

Slide 18

Slide 18 text

Navegação Navegação

Slide 19

Slide 19 text

Editando arquivos Editando arquivos

Slide 20

Slide 20 text

Modos de operação Modos de operação ● O Vim é um editor modal O Vim é um editor modal ● Isso dificulta o estudo mas você tem: Isso dificulta o estudo mas você tem: – Atalhos mais simples Atalhos mais simples – Significados diferentes em cada modo de operação Significados diferentes em cada modo de operação ● Tipos: Tipos: – Normal Mode Normal Mode – Insert Mode Insert Mode – Visual Mode Visual Mode – Command Mode Command Mode

Slide 21

Slide 21 text

Normal Mode Normal Mode ● É usado para fazer ações simples: É usado para fazer ações simples: – Deletar; Deletar; – Copiar; Copiar; – Colar; Colar; – Entre várias outras... Entre várias outras... ● Quando abre o editor, já está no Modo Normal Quando abre o editor, já está no Modo Normal ● Atalho: Atalho:

Slide 22

Slide 22 text

Insert Mode Insert Mode ● É neste modo que irá inserir o seu texto É neste modo que irá inserir o seu texto ● Várias formas de iniciar o modo de edição: Várias formas de iniciar o modo de edição: – - - inicia um caracter após do cursor atual inicia um caracter após do cursor atual – - - inicia um caracter antes do cursor atual inicia um caracter antes do cursor atual – + - i + - inicia no final da linha nicia no final da linha – + - + - inicia no início da linha inicia no início da linha

Slide 23

Slide 23 text

Visual Mode Visual Mode ● Modo que seleciona um trecho de um texto que Modo que seleciona um trecho de um texto que deseja: deseja: – Por caracteres: Por caracteres: – Por linha: Por linha: + + – Por blocos: Por blocos: + +

Slide 24

Slide 24 text

Command Mode Command Mode ● É aonde digita os comandos desejados para, por É aonde digita os comandos desejados para, por exemplo: exemplo: – Salvar Salvar – Ir para linha X Ir para linha X – Copiar e colar Copiar e colar – Procurar e substituir; Procurar e substituir; – (...) (...)

Slide 25

Slide 25 text

Copiando e colando Copiando e colando ● Copiar trecho selecionado Copiar trecho selecionado – y y ou ou :y :y ● Copiar linha inteira Copiar linha inteira – yy yy ou ou :yy :yy ● Colando no cursor atual Colando no cursor atual – p p ou ou :p :p ● Colando acima da linha atual Colando acima da linha atual – P P ou ou :P :P

Slide 26

Slide 26 text

Procurando e substituindo Procurando e substituindo ● Pesquisar Pesquisar – Modo normal Modo normal / / – Modo de comando: Modo de comando: :/ :/

Slide 27

Slide 27 text

Procurando e substituindo Procurando e substituindo ● Substituindo Substituindo – Mudar trecho no cursor atual Mudar trecho no cursor atual :s// :s// – Mudar trecho em todo o arquivo Mudar trecho em todo o arquivo :%s// :%s// – Mudar trecho em todo o arquivo (com confirmação) Mudar trecho em todo o arquivo (com confirmação) :%s///c :%s///c

Slide 28

Slide 28 text

Facilidades Facilidades

Slide 29

Slide 29 text

Registradores Registradores ● Tem uma utilidade específica, que é armazenar Tem uma utilidade específica, que é armazenar cópias internas, do clipboard, deleções, entre cópias internas, do clipboard, deleções, entre outros; outros; ● Ou seja, é um clipboard do editor Ou seja, é um clipboard do editor – :”0 :”0 - registra a seleção no registrador 0; - registra a seleção no registrador 0; – :”$ :”$ - registra a seleção no registrador $; - registra a seleção no registrador $; – :”% :”% - registra o nome do arquivo; - registra o nome do arquivo; – :”/ :”/ - registra o último padrão de busca; - registra o último padrão de busca; – :”+ :”+ - registra o último texto no clipboard do SO; - registra o último texto no clipboard do SO;

Slide 30

Slide 30 text

Folds Folds ● São como dobras nas quais o vim esconde São como dobras nas quais o vim esconde partes do texto partes do texto – zo zo – abre uma dobra; – abre uma dobra; – zc zc – fecha a dobra; – fecha a dobra; – zR zR – abre todas as dobras do arquivo atual; – abre todas as dobras do arquivo atual; – zj zj – desce até a próxima dobra; – desce até a próxima dobra; – zk zk – sobe até a próxima dobra; – sobe até a próxima dobra;

Slide 31

Slide 31 text

Abas Abas ● Criando uma aba Criando uma aba – :tabnew [arq] :tabnew [arq] ● Criando uma aba e abrindo um arquivo Criando uma aba e abrindo um arquivo – :tabedit arq :tabedit arq ● Alternando para a próxima aba Alternando para a próxima aba – :tabnext :tabnext ● Alternando para a aba anterior Alternando para a aba anterior – :tabprevious :tabprevious

Slide 32

Slide 32 text

Buffers Buffers ● Arquivos abertos que estão na memória Arquivos abertos que estão na memória ● Listando arquivos no buffer Listando arquivos no buffer – :ls :ls ● Abrindo determinado arquivo do buffer Abrindo determinado arquivo do buffer – :buffer :buffer ● Indo para o próximo buffer Indo para o próximo buffer – :bnext :bnext ● Indo para o buffer anterior Indo para o buffer anterior – : bprevious : bprevious

Slide 33

Slide 33 text

Dividindo em janelas Dividindo em janelas ● Dentro da interface do editor, você pode abrir Dentro da interface do editor, você pode abrir várias janelas; várias janelas; – Abrindo uma janela lateral Abrindo uma janela lateral ● + w + v + w + v – Abrindo uma janela horizontal Abrindo uma janela horizontal ● + w + n + w + n – Movendo para janela à esquerda e a direita Movendo para janela à esquerda e a direita ● + w + h / + w + l + w + h / + w + l – Movendo para janela para cima ou abaixo Movendo para janela para cima ou abaixo ● + w + k / + w + j + w + k / + w + j

Slide 34

Slide 34 text

Plugins Plugins

Slide 35

Slide 35 text

Plugins para programação Plugins para programação ● Surround Surround ● NERD Browser NERD Browser ● Vim Indent Guides Vim Indent Guides ● Snipmate Snipmate ● Command-T Command-T ● Vim-Git / Vim-Fugitive Vim-Git / Vim-Fugitive ● Taglist Taglist ● Plugins para Python, PHP, Perl, etc Plugins para Python, PHP, Perl, etc

Slide 36

Slide 36 text

Plugins úteis Plugins úteis ● Pathogen Pathogen ● Vim powerline Vim powerline ● Syntastic Syntastic ● Sparkup (Zen Coding) Sparkup (Zen Coding) ● Font Zoom Font Zoom ● e vários outros... e vários outros...

Slide 37

Slide 37 text

Mais de Mais de 3.700 plugins 3.700 plugins

Slide 38

Slide 38 text

Indicações Indicações ● Vimcasts – Vimcasts – http://vimcasts.com http://vimcasts.com ● Vim Adventures (Jogo) - http://vim-adventures.com/ Vim Adventures (Jogo) - http://vim-adventures.com/ ● Openvim Openvim – – http://openvim.com http://openvim.com ● Openvim BR – Openvim BR – http://openvimbr.gilsondev.com http://openvimbr.gilsondev.com ● Vim Books (pt-BR) - Vim Books (pt-BR) - http://code.google.com/p/vimbook/ http://code.google.com/p/vimbook/ ● Wikilivros - Wikilivros - http://pt.wikibooks.org/wiki/Vim http://pt.wikibooks.org/wiki/Vim ● Vim Wikia - Vim Wikia - http://vim.wikia.com/wiki/Vim_Tips_Wiki http://vim.wikia.com/wiki/Vim_Tips_Wiki ● Documentação (:help) Documentação (:help) ● Twitter: @vimtips, @tpope, @vimrecipes Twitter: @vimtips, @tpope, @vimrecipes

Slide 39

Slide 39 text

Dicas importantes Dicas importantes ● Não decore todos os comandos. Aprenda uma Não decore todos os comandos. Aprenda uma coisa de cada vez; coisa de cada vez; ● Aprendeu os comandos que precisa, então Aprendeu os comandos que precisa, então busque novos comandos busque novos comandos ● Vai ser difícil, mas todo aprendizado exige Vai ser difícil, mas todo aprendizado exige esforço – esforço – No pain, No gain No pain, No gain; ;

Slide 40

Slide 40 text

Perguntas? Perguntas? @gilsonfilho @gilsonfilho blog.gilsondev.com (breve no github) blog.gilsondev.com (breve no github) gilsondev.github.com gilsondev.github.com bitbucket.org/gilsondev bitbucket.org/gilsondev gilsondev.com gilsondev.com