Vim - Um editor onipresente e flexível

Vim - Um editor onipresente e flexível

Palestra ministrada no FLISOL-DF 2012, falando sobre o editor de texto Vim, suas características, e o seu uso básico no dia a dia.

054d9fa364a9f7db6985df0645b21b42?s=128

Gilson Filho

May 04, 2012
Tweet

Transcript

  1. O editor onipresente e O editor onipresente e flexível flexível

  2. 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.
  3. O que é o Vim? O que é o Vim?

  4. 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);
  5. Características Características

  6. 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...
  7. 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 ;)
  8. Instalando o editor Instalando o editor

  9. 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
  10. 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.
  11. 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
  12. Mostrando o Ambiente Mostrando o Ambiente

  13. Mostrando o Ambiente Mostrando o Ambiente

  14. None
  15. 5 5 Usando o editor Usando o editor

  16. 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
  17. Fechando arquivos Fechando arquivos • Grava texto e continua editando

    Grava texto e continua editando – :w[!] ou :w[!] <nome do arquivo> :w[!] ou :w[!] <nome do arquivo> • 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
  18. Navegação Navegação

  19. Editando arquivos Editando arquivos

  20. 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
  21. 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: <Esc> <Esc>
  22. 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: – <a> - <a> - inicia um caracter após do cursor atual inicia um caracter após do cursor atual – <i> - <i> - inicia um caracter antes do cursor atual inicia um caracter antes do cursor atual – <Shift> + <a> - i <Shift> + <a> - inicia no final da linha nicia no final da linha – <Shift> + <i> - <Shift> + <i> - inicia no início da linha inicia no início da linha
  23. 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: <v> <v> – Por linha: Por linha: <Shift> + <v> <Shift> + <v> – Por blocos: Por blocos: <Ctrl> + <v> <Ctrl> + <v>
  24. 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; – (...) (...)
  25. 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
  26. Procurando e substituindo Procurando e substituindo • Pesquisar Pesquisar –

    Modo normal Modo normal /<texto a ser procurado> /<texto a ser procurado> – Modo de comando: Modo de comando: :/<texto a ser procurado> :/<texto a ser procurado>
  27. Procurando e substituindo Procurando e substituindo • Substituindo Substituindo –

    Mudar trecho no cursor atual Mudar trecho no cursor atual :s/<texto antigo>/<texto novo> :s/<texto antigo>/<texto novo> – Mudar trecho em todo o arquivo Mudar trecho em todo o arquivo :%s/<texto antigo>/<texto novo> :%s/<texto antigo>/<texto novo> – Mudar trecho em todo o arquivo (com confirmação) Mudar trecho em todo o arquivo (com confirmação) :%s/<texto antigo>/<texto novo>/c :%s/<texto antigo>/<texto novo>/c
  28. Facilidades Facilidades

  29. 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;
  30. 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;
  31. 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
  32. 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 <id do buffer> :buffer <id do 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
  33. 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 • <Ctrl> + w + v <Ctrl> + w + v – Abrindo uma janela horizontal Abrindo uma janela horizontal • <Ctrl> + w + n <Ctrl> + w + n – Movendo para janela à esquerda e a direita Movendo para janela à esquerda e a direita • <Ctrl> + w + h / <Ctrl> + w + l <Ctrl> + w + h / <Ctrl> + w + l – Movendo para janela para cima ou abaixo Movendo para janela para cima ou abaixo • <Ctrl> + w + k / <Ctrl> + w + j <Ctrl> + w + k / <Ctrl> + w + j
  34. Plugins Plugins

  35. 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
  36. 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...
  37. Mais de Mais de 3.700 plugins 3.700 plugins

  38. 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
  39. 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; ;
  40. 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