Jump to content

# Vim (Português)

6 languages

- Deutsch
- English
- Español
- 日本語
- Русский
- 中文（简体）

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.

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

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

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

- 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

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

Categories:

- Text editors (Português)
- Console applications (Português)