Vim (Português)

Status de tradução:
Esse artigo é uma tradução de
Vim
. Data da última tradução: 2020-08-08. Você pode ajudar a sincronizar a tradução, se houver
alterações
na versão em inglês.
Artigos relacionados
Lista de aplicativos/Documentos#Editores de texto no estilo Vi
O
Vim
é um editor de texto do terminal. É uma versão estendida do
vi
com alguns recursos adicionais, incluindo realce de sintaxe, um sistema de ajuda abrangente, script nativo (vimscript), um modo visual para seleção de texto, comparação de arquivos (vimdiff) e ferramentas com recursos restritos, como rview e rvim.
Instalação
Instale
um dos seguintes pacotes:
vim
— com suporte a interpretadores Python 2/3, Lua, Ruby e Perl, mas sem suporte a GTK/X.
gvim
— que também fornece o mesmo que o pacote
vim
com suporte GTK/X.
Nota
O pacote
vim
é construído sem o suporte do
Xorg
especificamente a ferramente
+clipboard
, então o Vim não poderá operar como
buffers de seleção
primário
e
área de transferência
. O pacote
gvim
fornece também a versão CLI do Vim com a ferramenta
+clipboard
.
O repositório não oficial
herecura
também fornece várias variantes do Vim/gVim:
vim-cli
,
vim-gvim-common
,
vim-gvim-gtk
,
vim-gvim-qt
,
vim-rt
e
vim-tiny
.
Uso
Para uma visão geral básica de como usar o Vim, siga o tutorial do vim executando
vimtutor
(para a versão do terminal) ou
gvimtutor
(para a versão gráfica).
O Vim inclui um amplo sistema de ajuda que pode ser acessado com o comando
:h
subject
. Os assuntos incluem comandos, opções de configuração, atalhos de teclas, plugins etc. Use o comando
:h
(sem nenhum assunto) para obter informações sobre o sistema de ajuda e saltar entre os assuntos.
Configuração
O arquivo de configuração específico dos usuários do Vim está localizado no diretório inicial:
~/.vimrc
, e os arquivos dos usuários Vim estão localizados dentro do
~/.vim/
. O arquivo de configuração global está localizado em
/etc/vimrc
. Arquivos globais do Vim, como
defaults.vim
e
archlinux.vim
estão localizados dentro do
/usr/share/vim/
.
Nota
Comportamentos normalmente esperados, como realce de sintaxe, são ativados em
defaults.vim
, que é carregado quando o arquivo
~/.vimrc
não está presente. Adicione
let skip_defaults_vim=1
ao
/etc/vimrc
para desativar completamente o carregamento do
defaults.vim
.
[1]
Como alternativa, para ativar o
defaults.vim
mesmo quando o
~/.vimrc
estiver presente, veja
:h defaults
no Vim.
Área de transferência
Comandos do Vim, como
:yank
ou
:paste
opera com o registro sem nome, que por padrão corresponde ao registro
"*
. Se a ferramenta
+clipboard
está disponível, o registro
"*
é refletido no buffer
PRIMARY
no X.
Para alterar o registro padrão, você pode usar
:set clipboard=unnamedplus
em vez do registro
"+
. O registro
"+
corresponde ao buffer
CLIPBOARD
no X.
Para mais informações, veja
:help 'clipboard'
.
Dica
Atalhos personalizados para operações de copiar e colar podem ser criados. Veja
[2]
para, por exemplo, criar atalhos para
Ctrl+c
,
Ctrl+v
and
Ctrl+x
.
Realce da sintaxe
Para habilitar o destaque de sintaxe para muitas linguagens de programação:
:filetype plugin on
:syntax on
Recuo
O arquivo de recuo para os tipos de arquivos específicos pode ser carregado com:
:filetype indent on
Quebra de linha
A opção
wrap
está ativada por padrão, que instrui o Vim a quebrar linhas mais longas que a largura da janela, para que o restante da linha seja exibido na próxima linha. A opção
wrap
afeta apenas como o texto é exibido, o próprio texto não é modificado.
A quebra normalmente ocorre após o último caractere que se ajusta à janela, mesmo quando está no meio de uma palavra. Uma quebra de linha mais inteligente pode ser controlado com a opção
linebreak
. Quando está ativado com
set linebreak
, a quebra ocorre após os caracteres listados na opção
breakat
, que por padrão contém um espaço e alguns sinais de pontuação (veja
:help breakat
).
As linhas quebradas normalmente são exibidas no início da próxima linha, independentemente de qualquer recuo. A opção
breakindent
instrui o Vim a levar em conta o recuo ao quebrar linhas longas, para que as linhas quebradas mantenham o mesmo recuo da linha exibida anteriormente. O comportamento do
breakindent
pode ser ajustado com a opção
breakindentopt
, por exemplo, para deslocar a linha quebrada outros quatro espaços para a direita para arquivos Python (veja
:help breakindentopt
para mais detalhes):
autocmd FileType python set breakindentopt=shift:4
Usando o mouse
O Vim tem a capacidade de fazer uso do mouse, mas funciona apenas em determinados terminais:
xterm
/
urxvt
-baseados em emuladores de terminais
Console do Linux com o pacote
gpm
(veja
Suporte a mouse de console
para detalhes)
PuTTY
Para ativar esse recurso, adicione esta linha ao
~/.vimrc
:
set mouse=a
A opção
mouse=a
é definido em
defaults.vim
.
Nota
Copiar/Colar usará o registro
"*
se houver acesso a um servidor X, consulte a seção
#Área de transferência
. O manuseio do xterm nos botões do mouse ainda pode ser usado mantendo o
shift key
pressionando.
Atravessar quebras de linha com as setas
Por padrão, pressionando a
←
no início de uma linha, ou pressionando
→
no final de uma linha, não permitirá que o cursor se desloque para a linha anterior ou seguinte.
O comportamento padrão pode ser alterado adicionando
set whichwrap=b,s,<,>,[,]
ao seu arquivo
~/.vimrc
.
Mesclando arquivos
O Vim inclui um editor de diferenças (um programa que mostra diferenças entre dois ou mais arquivos e auxílios para mesclá-los convenientemente). Use o
vimdiff
para executar o editor diff - basta especificar alguns arquivos para ele:
vimdiff
arquivo1
arquivo2
. Aqui está a lista de comandos específicos do
vimdiff
.
Ação
Atalhos
próxima alteração
]c
alteração anterior
[c
diff, obter
do
diff, colocar (put)
dp
abrir dobra (fold)
zo
fechar dobra
zc
nova varredura por arquivos
:diffupdate
Dicas e truques
Números de linha
Para mostrar a coluna do número das linhas, use
:set number
. Por padrão, números de linha absolutos são mostrados, números relativos podem ser ativados com
:set relativenumber
.
É possível pular para uma linha específica com
:
número da linha
ou
número da linha
gg
. Os saltos são lembrados em uma lista de saltos, consulte
:h jump-motions
para mais detalhes.
Verificação ortográfica
O Vim tem a capacidade de verificar a ortografia, ativar digitando:
set spell
Por padrão, apenas dicionários do idioma inglês estão instalados. Mais dicionários podem ser encontrados no diretório dos
repositórios oficiais
procurando por
vim-spell
. Dicionários adicionais podem ser encontrados no diretório do
Arquivo FTP do Vim
[
link inativo
2025-01-22 ⓘ]
. Dicionários adicionais podem ser colocados na pasta
~/.vim/spell/
e ativado com o comando:
:setlocal spell spelllang=
en_us
(substituindo o
en_us
com o nome do dicionário necessário).
Ação
Atalhos
próxima ortografia
]s
ortografia anterior
[s
sugestões de ortografia
z=
ortografia correta, adicione
zg
ortografia correta, sessão
zG
ortografia errada, adicione
zw
ortografia errada, sessão
zW
repetir toda a ortografia no arquivo
:spellr
Dica
Para habilitar a ortografia em dois idiomas (por exemplo, inglês e alemão), adicione
set spelllang=
en,de
no seu
~/.vimrc
ou
/etc/vimrc
, e, em seguida, reinicie o Vim.
Você pode ativar a verificação ortográfica para tipos de arquivos arbitrários (por exemplo,
.txt
) usando o plugin FileType e uma regra personalizada para detecção de tipo de arquivo. Para ativar a verificação ortográfica de qualquer arquivo que termine com
.txt
, crie o arquivo
/usr/share/vim/vimfiles/ftdetect/plaintext.vim
, e insira a linha
autocmd BufRead,BufNewFile *.txt set filetype=plaintext
nesse arquivo. Em seguida, insira a linha
autocmd FileType plaintext setlocal spell spelllang=
en_us
no seu
~/.vimrc
ou
/etc/vimrc
, e, em seguida, reinicie o Vim. Como alternativa, pode-se simplesmente inserir a linha
autocmd BufRead,BufNewFile *.txt setlocal spell
no seu
~/.vimrc
ou
/etc/vimrc
, e, em seguida, reinicie o Vim. Certifique-se de editar esta linha (especificamente
*.txt
) para incluir os tipos de arquivos destinados à verificação ortográfica.
Para ativar a verificação ortográfica apenas para documentos LaTeX (ou TeX), adicione
autocmd FileType
tex
setlocal spell spelllang=
en_us
no seu
~/.vimrc
ou
/etc/vimrc
, e, em seguida, reinicie o Vim.
Salvando estado durante execução
Saindo normalmente o
vim
descarta todas as informações não essenciais, como arquivos abertos, histórico de linha de comando, texto arrancado etc. A preservação dessas informações pode ser configurada das seguintes maneiras.
Arquivos viminfo
O arquivo
viminfo
também pode ser usado para armazenar o histórico da linha de comando, histórico
de pesquisas, histórico de linhas de entrada, conteúdo de registros, marcas de arquivos, marcas de localização em arquivos, último padrão de pesquisa/substituição (a ser usado no modo de pesquisa com
n
e
&
dentro da sessão), lista de buffers e quaisquer variáveis globais que você possa ter definido. Para o
viminfo
modalidade disponível, a versão do
vim
você instalou deve ter sido compilado com a ferramenta
+viminfo
.
Configure o que é mantido no seu arquivo
viminfo
, adicionando (por exemplo) o seguinte ao seu arquivo
~/.vimrc
:
set viminfo='10,<100,:100,%,n~/.vim/.viminfo
onde cada parâmetro é precedido por um identificador:
'q  : q, número de arquivos editados lembrados
 <m  : m, número de linhas salvas para cada registro
 :p  : p, número de linhas de cmd da história lembradas
 %   : salva e restaura a lista de buffers
 n...: caminho completo para os arquivos viminfo (observe que este é um literal "
n
")
Veja a documentação oficial
documentação viminfo
para detalhes sobre como um sistema preexistente
viminfo
O arquivo é modificado à medida que é atualizado com as informações da sessão atual, digamos de vários buffers na sessão atual que você está saindo.
Arquivos de sessão
Os arquivos de sessão podem ser usados para salvar o estado de qualquer número de sessões específicas ao longo do tempo. Um arquivo de sessão distinto pode ser usado para cada sessão ou projeto de seu interesse. Para que essa modalidade esteja disponível, a versão do
vim
instalada deve ter sido compilado com a ferramenta
+mksession
.
Dentro de uma sessão,
:mksession[!] [
meu_nome_de_sessão.vim
]
escreverá um script vim para
meu_nome_de_sessão.vim
no diretório atual ou
Session.vim
por padrão, se você escolher
não
para fornecer um nome de arquivo. O opcional
!
derruba um arquivo de sessão preexistente com o mesmo nome e caminho.
A sessão do
vim
pode ser retomado ao iniciar
vim
pelo o terminal:
$ vim -S [
meu_nome_de_sessão.vim
]
Ou em um buffer de sessão já aberto, executando o comando vim:
:source
meu_nome_de_sessão.vim
Exatamente o que é salvo e detalhes adicionais sobre as opções de arquivos de sessão são amplamente abordados na
Documentação do VIM (EN)
. Exemplos comentados são encontrados
aqui
.
Salvando a posição do cursor
Veja na wiki do VIM
Restaurar o cursor para a posição do arquivo na sessão de edição anterior (EN)
.
Substitua o comando Vi pelo Vim
Crie um
alias
do
vi
para
vim
.
Como alternativa, se você desejar digitar
sudo vi
e chamar o
vim
, instale o pacote
vi-vim-symlink
AUR
[
link quebrado
: package not found]
que irá remover
vi
e substitua-o por um link simbólico para
vim
.
Carriage returns do DOS/Windows
Se houver um
^M
no final de cada linha, isso significa que você está editando um arquivo de texto criado no MS-DOS ou no Windows. Isso ocorre porque no Linux apenas um único caractere de avanço de linha (LF) é usado para quebra de linha, mas nos sistemas Windows/MS DOS eles estão usando uma sequência de retorno de carriage (CR) e um avanço de linha (LF) para o mesmo. E esse retorno de carro é exibido como
^M
.
Para remover todos os retornos de carriage de um arquivo, faça:
:%s/^M//g
Note que há
^
é uma letra de controle. Para inserir a sequência de controle
^M
pressione
Ctrl+v,Ctrl+m
.
Como alternativa, instale o pacote
dos2unix
e execute
dos2unix
file
para corrigir o arquivo.
Nota
Outra maneira simples é mudar a configuração
fileformat
.
set ff=unix
converter arquivos com a linha DOS/Windows final para a linha Unix. Para fazer o inverso, basta emitir
set ff=dos
para converter arquivos com a linha Unix final para DOS/Windows.
Espaço vazio na parte inferior das janelas do gVim
Ao usar um
gerenciador de janelas
configurado para ignorar as dicas de tamanho da janela, o gVim preencherá a área não funcional com a cor de fundo do tema GTK.
A solução é ajustar a quantidade de espaço que o gVim reserva na parte inferior da janela. Coloque a seguinte linha em
~/.vimrc
:
set guiheadroom=0
Nota
Se você definir como zero, não poderá ver a barra de rolagem horizontal inferior.
Vim como pager
Usando scripts, o Vim pode ser usado como um
paginadores de terminal
, para que você obtenha vários recursos do Vim, como esquemas de cores.
O Vim vem com o script
/usr/share/vim/vim82/macros/less.sh
, para o qual você pode criar um
alias
. Observe que este script não suporta nenhum sinalizador de linha de comando mencionado em
less(1) § OPTIONS
.
Alternativamente, há também o pacote
vimpager
. Para alterar o pager padrão,
export
a
PÁGINA
variável de ambiente. Observe que nem todos os sinalizadores de linha de comando são suportados; a lista de sinalizadores suportados é
disponível no GitHub
.
Destacando resultados de pesquisa
Para destacar a primeira string que será correspondida em uma pesquisa enquanto você digita, adicione a seguinte linha ao seu
~/.vimrc
:
set incsearch
Para destacar todas as strings que serão correspondidas em uma pesquisa enquanto você digita, e depois que a pesquisa for executada, adicione a seguinte linha ao seu
~/.vimrc
:
set hlsearch
Nota
A configuração
hlsearch
manterá todas as correspondências destacadas até que uma pesquisa adicional seja feita. Esse comportamento pode ser indesejável; portanto, para desativar temporariamente o realce até a próxima pesquisa, execute
:nohlsearch
. Se você estiver executando esse comando com frequência, considere vinculá-lo a uma chave.
Esse comportamento também será observado ao corresponder regex durante outros comandos que os envolvem como
s
ou
g
.
Plugins
Adicionar plugins ao Vim pode aumentar sua produtividade estendendo os recursos do Vim. Os plugins podem alterar a interface do usuário do Vim, adicionar novos comandos, ativar o suporte à conclusão de código, integrar outros programas e utilitários ao Vim, adicionar suporte a idiomas adicionais e muito mais.
Dica
Para uma lista de plugins populares, veja o
Vim Awesome
Instalação
Usando o gerenciador de pacotes embutido
O Vim 8 adicionou a possibilidade de carregar plugins de terceiros nativamente. É possível usar essa funcionalidade armazenando pacotes de terceiros na pasta
~/.vim/pack
. A estrutura dessa pasta é um pouco diferente da de um gerenciador de plugins típico, onde geralmente contém um diretório por plugin. Vamos seguir um procedimento típico de instalação e estrutura de diretórios,
O plugin vim-surround de Tim Pope
como por exemplo:
$ mkdir -p ~/.vim/pack/tpope/start
É importante notar que
~/.vim/pack/tpope
é um
diretório de pacotes
que é vagamente definido como diretório que contém um ou mais plugins na
Documentação do vim
. Este não é o lugar certo para da um
git clone
no repositório de plugins. O nome do diretório do pacote pode ser arbitrário. Você pode optar por manter todos os seus plugins em um único diretório de pacotes ou, como no nosso exemplo, usar o nome do GitHub do autor
tpope
.
O diretório do pacote pode conter as seguintes subpastas:
start
- os plugins desta subpasta serão carregados automaticamente quando o Vim iniciar. Este é o local usado com mais frequência.
opt
- os plugins desta subpasta podem ser carregados sob demanda, emitindo o comando
:packadd
dentro do Vim.
Agora mude para pasta criada
start
e faça o checkout do repositório do plugin:
$ cd ~/.vim/pack/tpope/start
$ git clone
https://tpope.io/vim/surround.git
Isso cria uma subpasta adicional no início
~/.vim/pack/tpope/start/surround
e é aí que os arquivos e diretórios do plugin vim são colocados.
Próximo índice de ajuda da atualização, se o plugin contiver arquivos de ajuda:
$ vim -u NONE -c "helptags surround/doc" -c q
Agora você pode iniciar o Vim e o plugin será carregado automaticamente. Não são necessárias alterações no arquivo de configuração
~/.vimrc
, a menos que você queira personalizar opções específicas de plugins.
Usando um gerenciador de plugins
Um gerenciador de plugins é um plugin que instala, gerencia e atualiza os plugins do Vim. Isso pode ser útil se você também estiver usando o Vim em plataformas diferentes do Arch Linux e desejar um método consistente de atualização de plugins.
Vundle
atualmente é o gerenciador de plugins mais popular do Vim, disponível como
vundle
AUR
ou
vundle-git
AUR
.
Vim-plug
é um gerenciador de plugins minimalista do Vim com muitos recursos, como carregamento de plugin sob demanda e atualização paralela, disponível como
vim-plug
AUR
ou
vim-plug-git
AUR
.
pathogen.vim
é um plugin simples para gerenciar o runtimepath do Vim, disponível como
vim-pathogen
AUR
ou
vim-pathogen-git
AUR
.
Dein.vim
é um gerenciador de plugins que substitui o
NeoBundle
, disponível como
vim-dein
AUR
ou
vim-dein-git
AUR
.
De repositórios do Arch
O grupo
vim-plugins
fornece vários plugins. Use o comando
pacman -Sg vim-plugins
para listar os pacotes disponíveis que você pode
instalar
com o pacman.
Plugins notáveis
cscope
O
Cscope
é uma ferramenta para navegar em um projeto. Navegando para uma palavra/símbolo/função e chamando o cscope (geralmente com teclas de atalho), ele pode encontrar: funções que chamam a função, a definição da função e muito mais.
Instale
o pacote
cscope
.
Copie o arquivo padrão do cscope onde será lido automaticamente pelo Vim:
mkdir -p ~/.vim/plugin
wget -P ~/.vim/plugin
https://cscope.sourceforge.net/cscope_maps.vim
Nota
Você provavelmente precisará descomentar essas linhas
~/.vim/plugin/cscope_maps.vim
para ativar os atalhos do cscope no Vim 7.x:
set timeoutlen=4000
set ttimeout
Crie um arquivo que contenha a lista de arquivos que você deseja que o cscope indexe (o cscope pode lidar com vários idiomas, mas este exemplo encontra os arquivos
.c
,
.cpp
and
.h
, específico para o projeto C / C ++):
cd
/path/to/project/dir
find . -type f -print | grep -E '\.(c(pp)?|h)$' > cscope.files
Crie arquivos de banco de dados que o cscope lê:
cscope -bq
Nota
Você deve procurar seus arquivos de projeto a partir deste local ou definir e exportar a variável
$CSCOPE_DB
, apontando para o arquivo
cscope.out
.
Teclas de atalhos padrão:
Ctrl-\ and
      c: Find functions calling this function
      d: Find functions called by this function
      e: Find this egrep pattern
      f: Find this file
      g: Find this definition
      i: Find files #including this file
      s: Find this C symbol
      t: Find assignments to
Sinta-se livre para alterar os atalhos.
#Maps ctrl-c to find functions calling the function
nnoremap <C-c> :cs find c <C-R>=expand("<cword>")<CR><CR>
Taglist
A
Taglist
fornece uma visão geral da estrutura dos arquivos de código fonte e permite navegar eficientemente pelos arquivos de código fonte em diferentes linguagens de programação.
Instale
o pacote
vim-taglist
AUR
.
Opções úteis a serem colocadas no
~/.vimrc
:
let Tlist_Compact_Format = 1
let Tlist_GainFocus_On_ToggleOpen = 1
let Tlist_Close_On_Select = 1
nnoremap <C-l> :TlistToggle<CR>
Veja também
Oficial
Site
Documentação
Vim Wiki
Vim Scripts
Tutoriais
Tutorial and Primer para o vim
Tutorial and Reference Guide do vi
Graphical vi-Vim Cheat Sheet and Tutorial
Vim Introduction and Tutorial
Open Vim
— coleção de ferramentas de aprendizagem de Vim
Learn Vim Progressively
Learning Vim in 2014
Seven habits of effective text editing
Basic Vim Tips
[
link inativo
2025-03-15 ⓘ]
Vídeos
Vimcasts
— gravação de tela no formato
.ogg
.
Vim Tutorial Videos
— cobertura do básico até tópicos avançados.
Página de dicas
https://devhints.io/vim
https://vim.rtorr.com/
- Uma coleção de dicas do Vim boas para acesso por disponíveis móveis -
Fontes
Jogos
Vim Adventures
VimGolf
Configuração
nion's
Uma configuração detalhada de Amir Salihefendic
Bart Trojanowski
Vim de Steve Francia
Vim Awesome
- Plugins para o Vim
Configuração para o Vim de W4RH4WK
Fast vimrc/colorscheme de askapache
Um vimrc básico
Usevim
Cores
Vivify
Vim colorscheme customization