Vim (Português)

From ArchWiki
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.

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:

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 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
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-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.

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.

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-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

Vídeos

Página de dicas

Jogos

Configuração

Cores