mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-11-27 04:44:08 +03:00
251 lines
8.5 KiB
Markdown
251 lines
8.5 KiB
Markdown
---
|
|
category: tool
|
|
tool: vim
|
|
contributors:
|
|
- ["RadhikaG", "https://github.com/RadhikaG"]
|
|
translators:
|
|
- ["David Lima", "https://github.com/davelima"]
|
|
- ["Raul Almeida", "https://github.com/almeidaraul"]
|
|
lang: pt-br
|
|
filename: LearnVim-pt.txt
|
|
---
|
|
|
|
|
|
[Vim](http://www.vim.org)
|
|
(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
|
|
na maioria dos sistemas UNIX. O editor tem um grande número de atalhos de teclado
|
|
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
|
|
# ! depois de qualquer comando força a sua execução
|
|
# ! *força* :q a executar, fechando o vim sem salvar antes
|
|
:x # Salva o arquivo e fecha o vim (atalho para :wq)
|
|
|
|
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>
|
|
t<character> # Posiciona o cursor antes do próximo <caracter>
|
|
|
|
# Por exemplo,
|
|
f< # Posiciona o cursor no <
|
|
t< # Posiciona o cursor logo antes do <
|
|
|
|
# Movendo por palavras
|
|
|
|
w # Move o cursor uma palavra adiante
|
|
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
|
|
```
|
|
|
|
## Modos
|
|
|
|
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
|
|
Modo Ex - usado para ir a linha com ':' no final da tela para executar comandos
|
|
|
|
```
|
|
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
|
|
v # Coloca o Vim no Modo Visual
|
|
: # 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:
|
|
|
|
Verbo - sua ação
|
|
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'
|
|
|
|
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
|
|
|
|
# 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
|
|
xp # Permuta caractere atual e o seguinte
|
|
Xp # Permuta caractere atual e o anterior
|
|
. # Repete a última ação
|
|
|
|
# Em geral, o usuário pode associar um comando em maísculas (exemplo: D) com
|
|
# "executar este comando até o final da linha"
|
|
|
|
# Usar a tecla de um comando duas vezes geralmente significa executar este
|
|
# comando sobre toda a linha (exemplo: dd apaga a linha inteira)
|
|
```
|
|
|
|
## 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
|
|
@@ # Executa a última macro executada
|
|
```
|
|
|
|
### Configurando o ~/.vimrc
|
|
|
|
O arquivo .vimrc pode ser usado para configurar o Vim no seu início.
|
|
|
|
Exemplo de arquivo ~/.vimrc
|
|
|
|
```vim
|
|
" Exemplo de ~/.vimrc
|
|
" 2015.10
|
|
|
|
" 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)
|