Vim (Português)
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.
- 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
evim-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/
.
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'
.
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
.
"*
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 linhagg
. 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. 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
|
- 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 linhaautocmd BufRead,BufNewFile *.txt set filetype=plaintext
nesse arquivo. Em seguida, insira a linhaautocmd 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 linhaautocmd 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-symlinkAUR 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.
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
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
- 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
oug
.
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.
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 vundleAUR ou vundle-gitAUR.
- 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-plugAUR ou vim-plug-gitAUR.
- pathogen.vim é um plugin simples para gerenciar o runtimepath do Vim, disponível como vim-pathogenAUR ou vim-pathogen-gitAUR.
- Dein.vim é um gerenciador de plugins que substitui o NeoBundle, disponível como vim-deinAUR ou vim-dein-gitAUR.
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.
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
~/.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
$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-taglistAUR.
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
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
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
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