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
1
vimtutor
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
1
sudo apt-get install vim
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.:
1
d4$
Deleta 4 linhas até o final (d
, deletar, 4
, contador, $
, até o final da linha).
Abrindo um arquivo
1
vim arquivo
ou
1
vim caminho/arquivo
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:
1
/etc/hosts
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):
1
grep -n "palavra"
arquivo
Será exibido no Terminal a linha com o termo pesquisado:
1
numero_da_linha:termo_pesquisado
Então você consegue fazer:
1
vim +numero_da_linha nome_do_arquivo
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:
1
vim --version |
grep xterm_clipboard
Caso apareça igual a imagem abaixo,você se ferrou! - Brinks
![Clipboard test Vim](/site_images1/vimparanoobs/clipboard-vim.png)
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.:
1
"+5yy
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.:
1
:! ls
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
1
d'
marca
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:
1
+-- 10
linhas -------------------------------------------------------------
Para isso faríamos:
1
zf10j
Para abrir novamente essas linhas, movemos o cursor até o local com +-- 10...
e executamos:
1
zo
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:
1
vim ~/.vimrc
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
1
syntax o
2
set
encoding
=
utf8
3
set
number
4
set
tabstop
=
2
5
set
eb
6
set
autowrite
7
set
expandtab
8
set
hlsearch
9
set
ignorecase
10
set
incsearch
11
set
showcmd
12
set
showmatch
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.
1
map <C-j> <C-W>j
2
map <C-k> <C-W>k
3
map <C-h> <C-W>h
4
map <C-l> <C-W>l
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:
1
cd
~/.vim/colors #Pasta com esquemas de cores
2
git clone esquemadecores.git
E adicionar a linha do esquema no seu .vimrc
.
Ex. do esquema de cores que eu uso atualmente:
1
colorscheme monokai
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:
1
cd
~/.vim/syntax
2
git clone arquivo_sintaxe
Porém o Vundle também coloca esse tipo de arquivo dentro de ./vim/bundle
.
E adicionar ao .vimrc
1
au FileType type
call SyntaxFoo()
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
:
1
"Configure Vundle
2
set nocompatible
3
"
filetype off
4
5
"Vundle config
6
set rtp+=~/.vim/bundle/Vundle.vim
7
call vundle#begin()
8
9
"
need this to install Vundle
10
Plugin 'gmarik/Vundle.vim'
11
12
" ---- Plugins ----
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
:
1
Plugin 'JamshedVesuna/vim-markdown-preview'
Abrir o Vim e rodar o comando:
1
:PluginInstall
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:
1
:PluginSearch nome_do_plugin
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:
1
:PluginClean
Ele irá pedir permissão a cada opção de delete.
Caso queira deixar tudo nas mãos do Vundle basta rodar:
1
:PluginClean!
Listando os plugins instalados
Basta rodar:
1
:PluginList
Atualizando os plugins
Caso vá atualizar todos os plugins basta rodar:
1
:PluginUpdate
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:
1
"Cute ;D
2
syntax on
3
set encoding=utf8
4
set number
5
set tabstop=2
6
set eb
7
set expandtab
8
set hlsearch
9
set ignorecase
10
set incsearch
11
set showcmd
12
set showmatch
13
set textwidth=80
14
set cursorline
15
filetype indent on
16
17
"
Smart way to move between windows
18
map <C-j> <C-W>j
19
map <C-k> <C-W>k
20
map <C-h> <C-W>h
21
map <C-l> <C-W>l
22
23
" space open/closes folds
24
nnoremap <space> za
25
26
"
Theme
27
colorscheme monokai
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.:
1
:vsp arquivo_x
Para alternar entre as duas metades você pode usar CTRL+w
seguido da direção da janela.
Ex.:
1
CTRL+w+l
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