37
VIM Rocks! Autor: Magnun Leno

Vim Rocks!

Embed Size (px)

Citation preview

VIM Rocks!Autor: Magnun Leno

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”

O VIM é o seu Espelho

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?

A log time ago in a galaxy far far away...

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

Keyboard Cheatsheet

Conceitos Úteis● Navegação & Troca de modos● Text Objects● Marks● Registers● Integração com Shell● Jumps● Tags (ctags)● Autocompletar● Mappings● Spell Check● Macros

Let's Rock!

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

Plugins

Antes de Qualquer Plugin● Utilize um gerenciador de plugins...

– Vundle– Pathogen– NeoBundle

Airline (GitHub)

● Adiciona um "status bar";● Diversas informações de contexto

Emmet-vim (GitHub)

● Expande a sintaxe Emmet para HTML & CSS:

UltiSnips (GitHub)

Syntastic (GitHub)

● Syntax check on the fly

YouCompleteMe (GitHub)

The NERD Tree (GitHub)

GitGutter (GitHub)

● Provê símbolos e atalhos para adição de chunks ao Git

Colorizer (GitHub)

● “Ilustra” a cor em no background

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

Obrigado!

Dúvidas?