2016-10-18 22:38:53 +03:00
---
category: tool
2024-10-21 00:46:35 +03:00
tool: Vim
2016-10-18 22:38:53 +03:00
contributors:
- ["RadhikaG", "https://github.com/RadhikaG"]
translators:
- ["David Lima", "https://github.com/davelima"]
2019-10-29 21:26:15 +03:00
- ["Raul Almeida", "https://github.com/almeidaraul"]
2016-10-18 22:38:53 +03:00
lang: pt-br
filename: LearnVim-pt.txt
---
2017-06-01 12:31:14 +03:00
[Vim ](http://www.vim.org )
2016-10-18 22:38:53 +03:00
(Vi IMproved - Vi Melhorado) é um clone do editor vi para Unix. Ele é um
editor de texto projetado para ter velocidade e produtividade, e está presente
2018-10-01 23:10:41 +03:00
na maioria dos sistemas UNIX. O editor tem um grande número de atalhos de teclado
2016-10-18 22:38:53 +03:00
para agilizar a navegação para pontos específicos no arquivo, além de edição rápida.
## Navegação do Vim: o básico
```
vim < nome-do-arquivo > # Abre < nome-do-arquivo > no vim
:q # Fecha o vim
:w # Salva o arquivo atual
:wq # Salva o arquivo e fecha o vim
:q! # Fecha o vim e descarta as alterações no arquivo
2019-10-29 21:26:15 +03:00
# ! depois de qualquer comando força a sua execução
2016-10-18 22:38:53 +03:00
# ! *força* :q a executar, fechando o vim sem salvar antes
2018-10-01 23:10:41 +03:00
:x # Salva o arquivo e fecha o vim (atalho para :wq)
2016-10-18 22:38:53 +03:00
u # Desfazer
CTRL+R # Refazer
h # Move o cursor para a esquerda
j # Move o cursor para baixo
k # Move o cursor para cima
l # Move o cursor para a direita
# Movendo o cursor dentro da linha
0 # Move para o início da linha
$ # Move para o final da linha
^ # Move para o primeiro caractere da linha (ignora caracteres em branco)
# Pesquisa no texto
/palavra # Destaca todas as ocorrências de 'palavra' após o cursor
?palavra # Destaca todas as ocorrências de 'palavra' antes do cursor
n # Move o cursor para a próxima ocorrência após a pesquisa
N # Move o cursor para a ocorrência anterior após a pesquisa
:%s/foo/bar/g # Substitui 'foo' por 'bar' no arquivo inteiro
:s/foo/bar/g # Substitui 'foo' por 'bar' na linha atual
# Pulando para caracteres específicos
f< caracter > # Posiciona o cursor no próximo < caracter >
2024-04-20 10:57:37 +03:00
t< character > # Posiciona o cursor antes do próximo < caracter >
2016-10-18 22:38:53 +03:00
2024-04-20 10:57:37 +03:00
# Por exemplo,
2016-10-18 22:38:53 +03:00
f< # Posiciona o cursor no <
t< # Posiciona o cursor logo antes do <
2024-04-20 10:57:37 +03:00
2016-10-18 22:38:53 +03:00
# Movendo por palavras
2018-10-01 23:10:41 +03:00
w # Move o cursor uma palavra adiante
2016-10-18 22:38:53 +03:00
b # Move o cursor uma palavra atrás
e # Move o cursor ao fim da palavra atual
# Outros caracteres para mover o cursor no arquivo
gg # Move para o topo do arquivo
G # Move para o final do arquivo
:NUM # Move para a linha NUM (NUM é qualquer número)
H # Move para o topo da tela visível
M # Move para o meio da tela visível
L # Move para o final da tela visível
```
2024-04-20 10:57:37 +03:00
## Modos
2016-10-18 22:38:53 +03:00
O Vim é baseado no conceito de **modos** .
Modo Comando - usado para navegar e escrever comandos - o Vim já inicia nesse modo
Modo Inserção - usado para fazer alterações no arquivo
Modo Visual - usado para destacar textos e executar comandos neles
2024-04-20 10:57:37 +03:00
Modo Ex - usado para ir a linha com ':' no final da tela para executar comandos
2016-10-18 22:38:53 +03:00
```
i # Coloca o Vim no Modo Inserção, logo antes do cursor
a # Coloca o Vim no Modo Inserção, logo após o cursor
2024-04-20 10:57:37 +03:00
v # Coloca o Vim no Modo Visual
2016-10-18 22:38:53 +03:00
: # Coloca o Vim no Modo Ex
< esc > # Sai de qualquer modo que você estiver, e coloca o Vim no Modo Comando
# Copiando e colando texto
y # Coloca a seleção atual na área de transferência
yy # Coloca a linha atual na área de transferência
d # Deleta a seleção tual
dd # Deleta a linha atual
p # Cola o texto copiado após a posição do cursor
P # Cola o texto copiado antes da posição do cursor
x # Deleta o caractere que está na posição do cursor
```
## A 'Gramática' do Vim
Podemos pensar no Vim como uma série de comendos
em um formato 'Verbo-Modificador-Nome', onde:
2024-04-20 10:57:37 +03:00
Verbo - sua ação
2016-10-18 22:38:53 +03:00
Modificador - como você executará sua ação
Nome - o objeto onde você vai executar sua acão
Alguns exemplos importantes de 'Verbos', 'Modificadores' e 'Nomes':
```
# 'Verbos'
2024-04-20 10:57:37 +03:00
2016-10-18 22:38:53 +03:00
d # Apagar (Delete)
c # Alterar (Change)
y # Copiar (Yank)
v # Seleção Visual
# 'Modificadores'
i # Dentro (Inside)
a # Em torno de (Around)
NUM # Número (NUM qualquer número)
f # Pesquisa algo e posiciona o cursor acima do resultado
t # Pesquisa algo e posiciona o cursor logo antes do resultado
/ # Encontra algo a frente do cursor
? # Encontra algo antes do cursor
# 'Nomes'
w # Palavra (word)
s # Sentência
p # Parágrafo
b # Bloco
2024-04-20 10:57:37 +03:00
2016-10-18 22:38:53 +03:00
# Exemplos de comandos
d2w # Apaga 2 palavras
cis # Altera dentro de uma sentência
yip # Coloca o parágrafo atual da área de transferência)
ct< # Altera para '< '
# Altera todo o texto a partir da posição do cursor até o próximo '< '
d$ # Apaga tudo da posição do cursor até o final da linha
```
## Alguns atalhos e dicas
<!-- TODO: Adicionar mais! -->
```
> # Adiciona um bloco de indentação
< # Remove um bloco de indentação
:earlier 15m # Reverte o documento para como ele estava há 15 minutos atrás
:later 15m # Reverte o comando acima
ddp # Troca linhas consecutivas de posição, dd e depois p
2019-10-29 21:26:15 +03:00
xp # Permuta caractere atual e o seguinte
Xp # Permuta caractere atual e o anterior
2016-10-18 22:38:53 +03:00
. # Repete a última ação
2019-10-29 21:26:15 +03:00
# Em geral, o usuário pode associar um comando em maísculas (exemplo: D) com
# "executar este comando até o final da linha"
2024-04-20 10:57:37 +03:00
# Usar a tecla de um comando duas vezes geralmente significa executar este
2019-10-29 21:26:15 +03:00
# comando sobre toda a linha (exemplo: dd apaga a linha inteira)
2016-10-18 22:38:53 +03:00
```
## Macros
Macros, basicamente, são ações graváveis.
Quando você começa a gravar uma macro, ele salva **toda** ação e comando
que você usar, até que você pare de gravar. Ao executar uma macro, ele aplica
exatamente a mesma sequencia de ações e comandos na seleção atual.
```
qa # Inicia a gravação de uma macro chamado 'a'
q # Para a gravação
@a # Executa a macro
2019-10-29 21:26:15 +03:00
@@ # Executa a última macro executada
2016-10-18 22:38:53 +03:00
```
### Configurando o ~/.vimrc
O arquivo .vimrc pode ser usado para configurar o Vim no seu início.
Exemplo de arquivo ~/.vimrc
2024-04-20 10:57:37 +03:00
```vim
2016-10-18 22:38:53 +03:00
" Exemplo de ~/.vimrc
2024-04-20 10:57:37 +03:00
" 2015.10
2016-10-18 22:38:53 +03:00
" Obrigatório para rodar apenas no Vim (Vi Improved)
set nocompatible
" Determina o tipo de arquivo pelo nome para habilitar indentação automática, etc
filetype indent plugin on
" Habilita sintaxe colorida
syntax on
" Ativa um 'auto-completar' melhor para a linha de comando
set wildmenu
" Faz as buscas não diferenciarem maiúsculas-minúsculas (case insensitive)
" Exceto quando você usar letras maiúsculas
set ignorecase
set smartcase
" Quando criar uma nova linha e a indentação por tipo de arquivo estiver
" desabilitada, mantem a mesma indentação da linha atual
set autoindent
" Mostra o número das linhas à esquerda
set number
" Opções de indentação, aqui você pode mudar como preferir
" Número de espaços visíveis por TAB
set tabstop=4
" Número de espaços por TAB ao editar um arquivo
set softtabstop=4
" Número de espaços usados nas funções de indentação (>> e < < )
set shiftwidth=4
" Converte TABs em espaços
set expandtab
" Habilita indentação/alinhamento inteligente
set smarttab
```
### Referências
[Vim | Home ](http://www.vim.org/index.php ) (EN)
`$ vimtutor pt`
[Vim: um tutorial/cartilha ](https://danielmiessler.com/study/vim/ ) (EN)
[O que são as partes sombrias do Vim que sua mãe nunca te explicou? (tópico no Stack Overflow) ](http://stackoverflow.com/questions/726894/what-are-the-dark-corners-of-vim-your-mom-never-told-you-about ) (EN)
[Arch Linux Wiki ](https://wiki.archlinux.org/index.php/Vim ) (EN)