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.

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.

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: , e os arquivos dos usuários Vim estão localizados dentro do . O arquivo de configuração global está localizado em . Arquivos globais do Vim, como e estão localizados dentro do /usr/share/vim/.

Área de transferência

Comandos do Vim, como ou :paste opera com o registro sem nome, que por padrão corresponde ao registro . Se a ferramenta está disponível, o registro é refletido no buffer no X.

Para alterar o registro padrão, você pode usar em vez do registro . O registro corresponde ao buffer no X.

Para mais informações, veja :help 'clipboard'.

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 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 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 , a quebra ocorre após os caracteres listados na opção , que por padrão contém um espaço e alguns sinais de pontuação (veja ).

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 pode ser ajustado com a opção , por exemplo, para deslocar a linha quebrada outros quatro espaços para a direita para arquivos Python (veja 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 :

set mouse=a

A opção é definido em .

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 ao seu arquivo .

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çãoAtalhos
próxima alteração
alteração anterior
diff, obter
diff, colocar (put)
abrir dobra (fold)
fechar dobra
nova varredura por arquivos:diffupdate

Dicas e truques

Números de linha

Para mostrar a coluna do número das linhas, use . Por padrão, números de linha absolutos são mostrados, números relativos podem ser ativados com .

É possível pular para uma linha específica com ou . Os saltos são lembrados em uma lista de saltos, consulte 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 . 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: (substituindo o com o nome do dicionário necessário).

AçãoAtalhos
próxima ortografia]s
ortografia anterior
sugestões de ortografia
ortografia correta, adicione
ortografia correta, sessão
ortografia errada, adicione
ortografia errada, sessão
repetir toda a ortografia no arquivo
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 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 e & dentro da sessão), lista de buffers e quaisquer variáveis globais que você possa ter definido. Para o modalidade disponível, a versão do vim você instalou deve ter sido compilado com a ferramenta .

Configure o que é mantido no seu arquivo , adicionando (por exemplo) o seguinte ao seu arquivo :

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

Dentro de uma sessão, escreverá um script vim para no diretório atual ou 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 para vim.

Como alternativa, se você desejar digitar e chamar o vim, instale o pacote que irá remover e substitua-o por um link simbólico para vim.

Carriage returns do DOS/Windows

Se houver um 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 .

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 pressione Ctrl+v,Ctrl+m.

Como alternativa, instale o pacote e execute para corrigir o arquivo.

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 :

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 .

Alternativamente, há também o pacote . Para alterar o pager padrão, export a 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 :

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 :

set hlsearch

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

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

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.
  • - os plugins desta subpasta podem ser carregados sob demanda, emitindo o comando 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 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 , 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 ou .
  • 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 ou vim-plug-gitAUR.
  • pathogen.vim é um plugin simples para gerenciar o runtimepath do Vim, disponível como ou .
  • Dein.vim é um gerenciador de plugins que substitui o NeoBundle, disponível como ou vim-dein-gitAUR.

De repositórios do Arch

O grupo fornece vários plugins. Use o comando para listar os pacotes disponíveis que você pode instalar com o pacman.

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 .

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

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

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 .

Opções úteis a serem colocadas no :

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

gollark: Also that.
gollark: ... coherent explanations? Evidence?
gollark: I have no idea how quantum entanglement is related to "strain/inertia", which are mostly macroscale concepts, and it probably isn't.
gollark: Well, that sounds nonsensical.
gollark: We probably have some actual quantum physicists here, but they might not be on and in any case I doubt they care.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.