Sumário
- Basico
- Instalação do Vim
- Modos de operação
- Formando comandos
- Abrindo um arquivo
- Alternando entre arquivos
- Se movimentando pelo texto
- Inserindo texto
- Deletando texto
- Copiar e colar dentro do VIM
- Recortar e colar
- Copiando para o clipboard no Vim
- Replace
- Desfazendo as coisas
- Buscar texto dentro do arquivo
- Executando comandos externos
- Salvando e fechando arquivos
- Salvar como…
- Alguns comandos legais para edição
- Criando Marcas
- Criando Folders (ou dobras no texto)
- Personalizando o Vim
- Salvando suas preferências
- Comandos e atalhos personalizados
- Mudando o tema
- Temas legais
- Adicionando sintaxes
- Exemplos de vimrc
- Plugins
- Instalando plugins com o Vundle
- Removendo plugins
- Atualizando os plugins
- Alguns plugins maneiros
- Comandos uteis no .vimrc
- Trabalhando com Janelas no VIM
- trabalhando com abas no Vim
- Referências do livro
Basico
O Vim possui algumas características bem diferentes dos editores que já estamos acostumados, por isso é importante:
Aprender a usar o básico
Rode no Terminal
E faça os exercícios até o final.
Não esquecer
Como conseguir ajuda
Se usar o comando :h
ou :help
será aberto um helper.
Você pode usar :h comando
para saber mais sobre o comando que irá executar
Letras maiúsculas nos comandos
Quando encontrar uma referência a um comando com letra maiúscula, é letra maiúscula mesmo (SHIFT + Letra
)!
Ex.:
G
- para pular para o final do arquivo.
Você deve pressionar o SHIFT+G
.
Todo comando (também chamado de operador) deve ser executado no Normal ou Command Mode. Portanto se acostume a digitar o texto e pressionar ESC
para poder executar um comando.
Instalação do Vim
Em sistemas baseados no Debian
Em outros sistemas operacionais.
Modos de operação
Os modos de operação no Vim são os seguintes:
- Para acessar o modo de inserção pressione
i
- Para voltar ao normal mode pressione
esc
- Para executar um comando em command mode digite
:command
- Para acessar o visual mode pressione
v
Onde:
- O modo de inserção é onde você passa o tempo digitando texto
- O modo normal é onde você vai formatar o texto (deletar, copiar e colar, replace, etc)
- Modo de comandos é uma maneira de executar comandos para o Vim, configurar o editor e muito mais
- Modo visual serve para seleção de grandes blocos de texto
Formando comandos
A maneira de agilizar a utilização de comandos no Vim é criando-os de acordo com sua necessidade.
A forma de se executar os comandos segue o seguinte padrão:
operator count motion
Onde:
operator
- Operador
count
- Contador para repetir o mesmo comando
motion
- Movimento ou direção para onde executar
Ex.:
Deleta 4 linhas até o final (d
, deletar, 4
, contador, $
, até o final da linha).
Abrindo um arquivo
ou
Abrindoa partir de caminhos dentro do arquivo
Caso esteja em um arquivo com referência a outro arquivo, você pode abrir o mesmo usando ` CTRL-w-f` com o cursor sobre o caminho.
Ex.:
Considere que está lendo um arquivo e encontrar no meio do texto:
Se usar o comando ` CTRL-w-f` em cima dessa linha, o Vim irá abrir o arquivo hosts.
Abrindo o arquivo em uma linha específica
Conseguimos descobrir onde está uma palavra ou bloco fazendo o seguinte (no linux):
Será exibido no Terminal a linha com o termo pesquisado:
Então você consegue fazer:
E ele abre direto na linha específica.
OBS: Isso não é uma mágica do Vim, outros editores fazem a mesma coisa no Linux. ;)
Alternando entre arquivos
Podemos abrir outro arquivo, enquanto estamos no Vim, usando :e nome ou caminho/nome
Quando estamos editando mais de um arquivo podemos usar CTRL+6
para alternar entre um e outro.
Se movimentando pelo texto
h
: Esquerda
j
: Baixo
k
: Cima
l
: Direita
Para ir ao final de um arquivo use: G
Para voltar ao topo: gg
Para mover ao final de uma palavra: e
Para mover ao final de uma palabra voltando o cursor: ge
Para mover até o começo da próxima palavra: w
Para mover até o começo de uma palavra voltando o cursor: b
Para mover ao pŕoximo caractere específico use: f[caractere]
Para mover ao começo de uma linha, use: 0
Para mover ao final de uma linha, use: $
Para pular ao final do parágrafo: }
Para pular para o fechamento de um parentese/colchete/chaves: %
Para saber sua posição no documento: CTRL+G
Podemos voltar onde estávamos a partir de qualquer local fazendo: numero_da_linha + G
O Vim mantem um histórico de alterações e para mover o cursor até a ultima alteração use g;
, para mover para a próxima na lista g,
Inserindo texto
i
- Entra no modo de inserção no local onde o cursor se encontra
I
- Entra no modo de inserção no começo da linha
a
- Entra no modo de inserção na frente de onde o cursor se encontra
A
- Entra no modo de inserção no final da linha
o
- Adiciona uma linha abaixo de onde estiver o cursor e entra em modo de inserção
O
- Adiciona uma linha acima e entra em modo de inserção
ESC
- Volta ao modo normal/comando
v
- Entra no modo visual
Deletando texto
x
- Deleta o caractere onde o cursor estiver
X
- Deleta o caractere de trás do cursor
dw
- Deleta a partir do cursor até o começo da próxima palavra
d$
- Deleta do cursor até o fim da linha
dd
- Deleta a linha iteira, incluindo o [enter] que ouver no final
C
- Deleta de onde o cursor estiver até o final da linha e entra em modo de inserção a partir dali
ce
- Deleta do cursor até o final da palavra e entra em modo de inserção
Copiar e colar dentro do VIM
y
- Para copiar e p
para colar
yy
- Para copiar uma linha inteira
A maneira mais fácil de fazer o copy & paste é entrar no modo visual (v
), selecionar o texto e então pressionar o y.
Recortar e colar
Recortar e colar dentro do Vim
Para recortar e colar use algum comando para exclusão (x, dd, dw, d$ ou algum comando formado por você), movimente o cursor até o local onde deseja colar e use o comando p
.
A ultima coisa deletada será inserida depois do cursor.
Uma maneira de copiar grandes blocos é usar o modo visual (v
), selecionar o bloco, usar um d
e colar usando o p
.
Copiando para o clipboard no Vim
Antes de conhecer os comandos de copiar/colar, execute esse teste no seu terminal:
Caso apareça igual a imagem abaixo,você se ferrou! - Brinks
Resolvendo o problema de clipboard do Vim com o X11
O Vim não atende o X11 em copiar e colar para o clipboard. Existem maneiras de contornar esse problema, como a desse link. Eu optei por instalar uma versão do Vim com suporte ao clipboard, o vim-gnome. Não tem nada de mais em relação ao Vim “normal” (pelo menos até agora não notei), porém não tive mais problemas com o clipboard.
Agora sim…
Copiando e colando para o clipboard no Vim
”+y
: Copia um conteúdo marcado (com v
) pra o clipboard.
”+p
: Cola o conteúdo do clipboard para o Vim.
Se for copiar uma linha inteira, pode usar ”+yy
, por exemplo. O “+
é um registrador do Vim para o Clipboard e você pode criar seus comandos igual acontece com os outros operadores do Vim.
Ex.:
Copia 5 linhas do texto.
Replace
Substituição simples
Use rx
, onde x é o novo caractere a ser inserido onde estiver o cursor.
Outra maneira é fazer com R
. Executando dessa maneira, irá aparecer na barra inferior o alerta – REPLACE –, então basta digitar a nova palavra.
Substituir em massa
:s/antiga/nova
- Substitui a ocorrência de antiga para nova na mesma linha
:#, # s/atiga/nova
- Substitui a ocorrência desde # até # linha do arquivo (um range)
:% s/antiga/nova
- Substitui em todo o arquivo
:% s/antiga/nova/gc
- Substitui no arquivo inteiro, mas solicita confirmação a cada ocorrência
Desfazendo as coisas
u
- Desfaz a ultima alteração
U
- Desfaz todas as mudanças efetuadas em uma linha inteira
CTRL+R
- Refaz
Buscar texto dentro do arquivo
/termo_a_ser_pesquisado
- Pesquisa para baixo do arquivo
?/termo
- Pesquisa para cima do arquivo
//
- Busca o ultimo termo pesquisado
/palavra/+numero
- Posiciona o cursor numero de linhas após a ocorrência da palavra
Ao entrar no modo de busca, o VIM deixa o /palavra na barra inferior, então podemos usar:
n
- Para a próxima ocorrência
N
- Para a ocorrência anterior
Executando comandos externos
Digite :! comando
para executar um comando externo ao editor.
Ex.:
Vai executar o comando ls no Terminal.
Você pode editar um texto, salvar, digitar :!git add arquivo
. Bom né?
Salvando e fechando arquivos
:q
- Sai sem salvar. Será solicitado confirmação se existirem alterações não salvas.
:q!
- Sai sem salvar descartando as alterações
:w
- Salva o arquivo (escreve)
:wq
- Salva e sai do arquivo
:x
- Salva e sai do arquivo
ZZ
- Salva e sai do arquivo
Salvar como…
Se você estiver em um arquivo e desejar salvar criando um novo, pode usar algo parecido com um “Salvar como…”.
Execute ` :w nome ou caminho/nome`.
Se quiser salvar e sair, pode usar o ` :wq nome ou caminho/nome`.
Alguns comandos legais para edição
vU
: Deixa o caractere maiúsculo
vu
: Deixa o caractere minúsculo
Você pode usar v
, selecionar todo o texto e pressionar u
ou U
depois.
:r arquivo
: Insere o conteúdo de arquivo
na linha atual
:sh:
: Retorna temporariamente para o Shell.
:ab texto textocompleto
: Define texto como abreviação de textocompleto
:set autoindent
: Liga a identação automática
:set smartindent
: Liga a identação inteligente
:set shiftwidth=4
: Define o tamanho da identação em 4 espaços
ctrl-t, ctrl-d
: Identa/Remove a identação (modo de inserção)
>>
: Como pressionar um tab
<<
: Como voltar um tab
Criando Marcas
Marcas são como um teleport ;D
Você deixa configurado um ponto com uma marca e depois pode voltar a ela ou utilizar para outras coisinhas legais.
Criando uma marca:
ma
- A marca (m
) a
foi criada onde o cursor estiver
Imagine que esteja em outra parte do texto. Para voltar basta pressionar:
`a
Coisas legais de se fazer com marcas
Marque um local e delete até ele com
Criar uma marca Global
Uma marca Global é um ponto onde você pode voltar até ele vindo até mesmo de outro arquivo.
mA
- Com A maiusculo podemos acessar de qualquer local
Criando Folders (ou dobras no texto)
Podemos pegar todo um bloco e ocultar ele. É como dobrar uma parte do texto.
Ao criar um folder de 10 linhas, por exemplo, o texto ficará assim:
Para isso faríamos:
Para abrir novamente essas linhas, movemos o cursor até o local com +-- 10...
e executamos:
Uma maneira mais fácil de criar os folders é entrando no modo visual (v
), selecionando o bloco e pressionando zf
.
Isso vai criar um folder na seleção ativa.
Comandos:
zfap
- Cria uma dobra para o parágrafo atual
zf/palavra
- Cria uma dobra até a “palavra”
zo
- Abre a dobra onde o cursor estiver
zR
- Abre todas as dobras do arquivo atual
zc
- Fecha a dobra onde o cursor estiver
zd
- Apaga o folder (o conteúdo não é apagado)
zj
- Desce até a próxima dobra
zk
- Sobe até a próxima dobra
Personalizando o Vim
Para configurar o Vim, usamos alguns comandos junto com :set
.
Bastaria digitar os comandos:
:set autowrite
ou :set aw
- Salva o arquivo a cada alteração
:set errorbell
ou :set eb
- Apita cada vez que você errar um comando.
Por exemplo.
O Vim possui um arquivo de configuração, o .vimrc
.
Esse arquivo fica oculto em sua pasta /home
.
Geradores de vimrc files
Caso você já manje de vimrc
e deseja só usar algum pronto com coisas maneiras pode ser interessante dar uma olhada nesses links:
Se você nunca usou ou não conhece muito sobre Vim, o melhor é ir criando o seu próprio .vimrc. Não tem problema olhar o .vimrc dos outros e inspirar-se neles, mas criando o seu você vai aprender mais e também vai deixar perfeito para as suas necessidades.
Salvando suas preferências
Para salvar suas preferências você pode usar:
E deixar seus comandos :set
lá, porém nesse arquivo não precisa digitar :set configuração
bastando set configuração
.
Exemplo de arquivo .vimrc
Comandos e atalhos personalizados
Com a personalização conseguimos criar comandos no VIM através do .vimrc.
Ex.:
Mapa para os comandos de trocar de Janela com CTRL+
j
/k
/h
/l
para facilitar a vida.
Usando:
map
- Criamos um Mapeamento em modo comando
imap
- Mapeamento em modo de inserção.
cmap
- Mapeamento em modo de linha de comando
vmap
- Mapeamento no modo visual
Mudando o tema
Para encontrar um esquema de cores maneiro para o seu Vim, você pode acessar o site vimcolors.com.
Alguns temas tem suporte ao Vundle, portanto será o mesmo processo de instalação que os plugins.
Será necessário criar uma a pasta ~/.vim
, se a mesma ainda não existir.
Os temas podem ser clonados dentro de ~/.vim/colors
para melhor organização, porém o Vundle, por exemplo, coloca dentro de ./vim/bundle
.
Normalmente, na documentação do próprio tema tem um passo a passo de instalação, mas basicamente você sempre vai fazer:
E adicionar a linha do esquema no seu .vimrc
.
Ex. do esquema de cores que eu uso atualmente:
Temas legais
Os que eu mais curti:
- https://github.com/sickill/vim-monokai
- https://github.com/altercation/vim-colors-solarized
- https://github.com/marcopaganini/termschool-vim-theme
- https://github.com/joshdick/onedark.vim
Onde conseguir mais temas?
- http://vimcolors.com/
- http://www.vimninjas.com/2012/08/26/10-vim-color-schemes-you-need-to-own/
Você pode criar seu próprio tema aqui.
Adicionando sintaxes
O mesmo que acontece com os temas ocorre com as sintaxes das linguagens, algumas poderão ser facilmente instaladas com o Vundle, outras serão, também facilmente, instaladas manualmente.
Basicamente você poderia fazer isso em uma instalação manual:
Porém o Vundle também coloca esse tipo de arquivo dentro de ./vim/bundle
.
E adicionar ao .vimrc
Para encontrar a sintaxe da sua linguagem basta dar uma Googlada: vim syntax <language>
Exemplos de vimrc
As configurações do seu Vim são muito pessoais. Algumas coisas legais eu já passei, porém tem muito mais! Da uma olhada em:
- https://pt.wikibooks.org/wiki/Vim/Como_editar_prefer%C3%AAncias
- https://github.com/skwp/dotfiles#vim—whats-included
- https://github.com/aureooms/dotfiles/blob/master/.vimrc
- https://github.com/pedrofranceschi/vimfiles/blob/master/vimrc
- https://github.com/Floby/vim-config/blob/master/vimrc
- https://github.com/alessioalex/dotfiles/blob/master/vimrc
- https://github.com/smith/vim-config/blob/master/vimrc
Plugins
Existem várias maneiras de se instalar um plugin no Vim.
A que eu achei mais legal foi usando o Vundle, pois acabou sendo parecido com o uso do Package Control com Sublime.
A instalação do Vundle é simples. Você vai criar uma pasta chamada .vim
em /home
(se ela ainda não existir), clonar o projeto com Git e configurar todo o resto no seu .vimrc
.
Para ativar corretamente o Vundle é necessário deixar as seguintes linhas no seu
.vimrc
:
Todos os plugins você pode adicionar abaixo da linha onde deixei: " ----
Plugins ----
.
Instalando plugins com o Vundle
Imagine que você vai instalar um plugin de Markdown Preview, esse aqui.
Basta adicionar no seu .vimrc
:
Abrir o Vim e rodar o comando:
Agora é só aguardar a instalação.
Buscando um plugin com o Vundle
Para pesquisar um nome de plugin ou saber se determinado plugin é instalável via Vundle você pode fazer:
Serão listados os plugins encontrados, então basta usa o comando:
i
- Para instalar o plugin.
Você move o cursor até a linha do nome do plugin e pressiona i
.
Removendo plugins
Você pode deixar o Vundle deletar os plugins que não são utilizados com:
Ele irá pedir permissão a cada opção de delete.
Caso queira deixar tudo nas mãos do Vundle basta rodar:
Listando os plugins instalados
Basta rodar:
Atualizando os plugins
Caso vá atualizar todos os plugins basta rodar:
Ou :PluginUptade nome_do_plugin
para atualizar somente um.
Para outros comandos do Vundle, acesse a documentação oficial.
Alguns plugins maneiros
Alguns plugins legais de se utilizar no seu Vim:
-
JavaScript Syntax
: vim-java-syntax -
JavaScript snippets
: vim-javaScript-snippets -
JSLint
: jslint.vim -
JSBeautify
: vim-jsbeautify -
Jade
: vim-jade -
Stylus
: vim-stylus -
Sass/SCSS
: vim-haml -
HTML5 & CSS3
: CSS more readable -
EMMET
: emmet-vim -
Node autocomplete
: vim-node -
Markdown Preview
: vim-markdown-preview -
Git
: vim-gitgutter -
Git flow
: vim-fugitive -
Facilitar o trabalho com Janelas e Arquivos
: ack.vim -
Sidebar mais fácil
: NERD Tree -
Um autocomplete com base no que você está digitando
: supertab -
Alinhamento de texto
: tabular-vim -
Python autocompletion
: jedi-vim -
Barra inferior com algumas informações bem úteis
: Airline
Onde encontrar mais plugins?
- http://vimawesome.com/
- http://www.vim.org/scripts/
- http://www.bestofvim.com/plugin/
- http://code.tutsplus.com/series/vim-essential-plugins–net-19224
Comandos uteis no .vimrc
Você pode achar vários comandos úteis dando uma olhada nesses arquivos de .vimrc.
No meu .vimrc só coloquei o que estou usando até agora:
Trabalhando com Janelas no VIM
:vsp
: Divide a janela verticalmente
:sp
: Divide horizontalmente
Você pode abrir arquivos diretamente na outra metade da janela com: comando arquivo
.
Ex.:
Para alternar entre as duas metades você pode usar CTRL+w
seguido da direção da janela.
Ex.:
Vai para a janela da direita.
Se você quiser ficar somente com uma janela ativa use o comando :only
na janela em questão.
Para fechar uma janela use: :quit
trabalhando com abas no Vim
:tab nome_do_arquivo
: Abre o arquivo em uma nova aba
:tabnew
: Abre uma nova aba em branco
gt
: Vai para a próxima aba
gT
: Volta a aba anterior
CTRL+Page Down
: Mesmo que gt
CTRL+Page Up
: Mesmo que gT
:tabc
: Fecha a aba atual
:tab split
: Copia o conteúdo da aba atual em uma nova aba
Referências do livro
Usei os seguintes links para coletar toda a informação do livro (alguns exemplos veio da minha cabeça mesmo errando e arrumando ;P):
- https://pt.wikibooks.org/wiki/Vim
- http://vim.wikia.com/wiki/Example_vimrc
- http://dougblack.io/words/a-good-vimrc.html
- http://vimcasts.org/
- http://vimawesome.com/
- http://www.bestofvim.com/
- http://www.vimninjas.com/
- http://aurelio.net/vim/
- http://vim.spf13.com/#vimrc
- http://vim-bootstrap.com
- https://code.google.com/p/vimbook/
- https://cassiobotaro.gitbooks.io/vimbook/ (Edição em Gitbook do livro acima)
- http://aurelio.net/vim/vi-vim-venci.html
- http://oli.me.uk/2013/06/29/equipping-vim-for-javascript/
- http://tableless.com.br/manipulando-janelas-e-arquivos-no-vim/
- https://blog.butecopensource.org/vim-tips-trabalhando-com-abas/
- http://www.tocadoelfo.com.br/2009/06/99-comandos-do-vim-que-todo-programador_15.html