View
263
Download
2
Category
Preview:
Citation preview
Quem Sou Eu?● Graduação:
– Eng. Telecomunicações– Analise de Sistemas Orientado a Objetos
● GNU/Linux: ~2002● Analista de Infraestrutura GNU/Linux● Programador FOSS:
– Anarchy, USB Manager, Tiamat, C-CairoPlot...– Cairoplot, Web2py e Pelican
● Passatempos:
– http://mindbending.org– Hack 'n' Cast
'
Objetivo da Palestra● Everybody hates VIM
– Todo primeiro uso do VIM é traumático● i, ESC, :wq, :q!
● Mostrar as possibilidades● Esclarecer designs● Competidor real● DIY “IDE”
Mas... VIM?● Sim... por quê não?● Ele é onipresente● Ele não precisa de ambiente
gráfico● É leve● É old school● Suporta inúmeras
linguagens● Customizável● Bem documentado● Supera editores atuais
Vale o esforço?● Editar texto é uma tarefa comum
– Programador– Analista de sistemas– Usuário comum
● Conhecer sua ferramenta de trabalho aumenta a produtividade
● Por que o VIM é tão diferente?
Breve História● Existiam apenas computadores
"centrais"● Eram utilizados "terminais
burros"● Não era comum o uso de
"monitores"● Os terminais eram lentos!● O "padrão" de comunicação era
a TTY:
– Teletypewriter ou Teleprinter
Breve História● 1971: Ken Thompson cria "ed", um
line editor
– Implementa o conceito de modos● 1976: Bill Joy cria "ex", outro line
editor
– Implementa os comandos mais conhecidos do vi
● 1976: Bill Joy implementa o comando :visual (:vi)
● 1979: a situação se inverte...● 1991: Bram Moolenaar cria o VIM
Entendendo o VIM● Principais modos:
– Comando– Inserção– Normal
● Mas...
– Normal, Visual, Select, Insert, Command-line, Ex, Operator-pending, Replace, Virtual Replace, Insert Normal, Insert Visual, Insert Select
● HJKL & ESC● Keep your damn hands in the
Home Row
Conceitos Úteis● Navegação & Troca de modos● Text Objects● Marks● Registers● Integração com Shell● Jumps● Tags (ctags)● Autocompletar● Mappings● Spell Check● Macros
Vanilla VIM● Setup básico:
set nocompatible " Desativa compatibilidade com VIfiletype plugin indent on " Ativa a auto indentaçãosyntax on " Ativa Syntax Highlightset hlsearch incsearch smartcase " Melhora a buscaset number " Ativa número de linhaset ruler " Ativa indicador de posiçãoset showcmd " Ativa indicador de comando em execuçãoset showmatch " Ativa destaque de paresset cursorline " Destaca a linha atualset hidden " Desabilita o 'modo chato' dos buffers
Buffers● Abra novos arquivos com :e <fname>● Liste os buffers com :ls● Mude de buffer com :b1, :b2, :b3● Cycle: :bnext e :bprev● Crie atalhos:
– nmap <c-tab> :bn<CR>– nmap <c-tab> :bp<CR>
● Execuções batch!
Splits & Windows● Vertical/Horizontal: <c-w>v / <c-w>s● Abrir novos arquivos: :sp <fname> / :vs <fname>● Movimentação: <c-w>h, <c-w>j, <c-w>k e <c-w>l
Tabs● Nova: :Tabnew● Listagem: :Tabs● Tabs compartilham buffers● Criam “visões” específicas do seu código:
– Model, view, controller– Bean, dao...
Folds● Metodos:
– Manual, Indent, Expression, Marker, Syntax e Diff● Configurar: :set foldmethod=indent● Manipulação:
– Toggle: za– Abrir/Fechar: zo / zc– Abrir Todas/Fechar Todas: zR / zM
Antes de Qualquer Plugin● Utilize um gerenciador de plugins...
– Vundle– Pathogen– NeoBundle
Airline (GitHub)
● Adiciona um "status bar";● Diversas informações de contexto
GitGutter (GitHub)
● Provê símbolos e atalhos para adição de chunks ao Git
vCoolor (GitHub)● Provê um color picker utilizando ferramentas externas
● Windows, GNU/Linux & Mac OS
Rainbow Parenthesis (GitHub)
● Adiciona um highlight especial para parenteses, chaves e colchetes aninhados
Signature (GitHub)
● Adiciona "visual marks" ao arquivo em edição
Diversos Outros
● Fugitive● Surround● Matchit● DelimitMate● Ctrl-P● EasyMotion● E muitos outros...
Bonus Track!● Matrix● TeTrls● Sokoban● Rogue● Snake● HJKL● FlappyVird
Fontes de Aprendizado● Livros Gratuitos
◾ A Bite of VIM◾ VIM Cookbook◾ VIM Book
● Livros Pagos◾ Learing VI and VIM Editors◾ Hacking VIM◾ Pratical VIM
● Vídeos◾ VIMCasts◾ Derek Wyatt's Videos
● Sites:◾ VIM Ninjas◾ USE VIM◾ VIM Bits◾ VIM Awsome◾ TIL VIM◾ r/vim◾ r/vimplugins◾ r/vim_magic◾ VIM | Stack Overflow
● .vimrc
Recommended