--- category: tool tool: vim contributors: - ["RadhikaG", "https://github.com/RadhikaG"] translators: - ["David Lima", "https://github.com/davelima"] - ["Raul Almeida", "https://github.com/almeidaraul"] lang: pt-br filename: LearnVim-pt.txt --- [Vim](http://www.vim.org) (Vi IMproved - Vi Melhorado) é um clone do editor vi para Unix. Ele é um editor de texto projetado para ter velocidade e produtividade, e está presente na maioria dos sistemas UNIX. O editor tem um grande número de atalhos de teclado para agilizar a navegação para pontos específicos no arquivo, além de edição rápida. ## Navegação do Vim: o básico ``` vim # Abre no vim :q # Fecha o vim :w # Salva o arquivo atual :wq # Salva o arquivo e fecha o vim :q! # Fecha o vim e descarta as alterações no arquivo # ! depois de qualquer comando força a sua execução # ! *força* :q a executar, fechando o vim sem salvar antes :x # Salva o arquivo e fecha o vim (atalho para :wq) u # Desfazer CTRL+R # Refazer h # Move o cursor para a esquerda j # Move o cursor para baixo k # Move o cursor para cima l # Move o cursor para a direita # Movendo o cursor dentro da linha 0 # Move para o início da linha $ # Move para o final da linha ^ # Move para o primeiro caractere da linha (ignora caracteres em branco) # Pesquisa no texto /palavra # Destaca todas as ocorrências de 'palavra' após o cursor ?palavra # Destaca todas as ocorrências de 'palavra' antes do cursor n # Move o cursor para a próxima ocorrência após a pesquisa N # Move o cursor para a ocorrência anterior após a pesquisa :%s/foo/bar/g # Substitui 'foo' por 'bar' no arquivo inteiro :s/foo/bar/g # Substitui 'foo' por 'bar' na linha atual # Pulando para caracteres específicos f # Posiciona o cursor no próximo t # Posiciona o cursor antes do próximo # Por exemplo, f< # Posiciona o cursor no < t< # Posiciona o cursor logo antes do < # Movendo por palavras w # Move o cursor uma palavra adiante b # Move o cursor uma palavra atrás e # Move o cursor ao fim da palavra atual # Outros caracteres para mover o cursor no arquivo gg # Move para o topo do arquivo G # Move para o final do arquivo :NUM # Move para a linha NUM (NUM é qualquer número) H # Move para o topo da tela visível M # Move para o meio da tela visível L # Move para o final da tela visível ``` ## Modos O Vim é baseado no conceito de **modos**. Modo Comando - usado para navegar e escrever comandos - o Vim já inicia nesse modo Modo Inserção - usado para fazer alterações no arquivo Modo Visual - usado para destacar textos e executar comandos neles Modo Ex - usado para ir a linha com ':' no final da tela para executar comandos ``` i # Coloca o Vim no Modo Inserção, logo antes do cursor a # Coloca o Vim no Modo Inserção, logo após o cursor v # Coloca o Vim no Modo Visual : # Coloca o Vim no Modo Ex # Sai de qualquer modo que você estiver, e coloca o Vim no Modo Comando # Copiando e colando texto y # Coloca a seleção atual na área de transferência yy # Coloca a linha atual na área de transferência d # Deleta a seleção tual dd # Deleta a linha atual p # Cola o texto copiado após a posição do cursor P # Cola o texto copiado antes da posição do cursor x # Deleta o caractere que está na posição do cursor ``` ## A 'Gramática' do Vim Podemos pensar no Vim como uma série de comendos em um formato 'Verbo-Modificador-Nome', onde: Verbo - sua ação Modificador - como você executará sua ação Nome - o objeto onde você vai executar sua acão Alguns exemplos importantes de 'Verbos', 'Modificadores' e 'Nomes': ``` # 'Verbos' d # Apagar (Delete) c # Alterar (Change) y # Copiar (Yank) v # Seleção Visual # 'Modificadores' i # Dentro (Inside) a # Em torno de (Around) NUM # Número (NUM qualquer número) f # Pesquisa algo e posiciona o cursor acima do resultado t # Pesquisa algo e posiciona o cursor logo antes do resultado / # Encontra algo a frente do cursor ? # Encontra algo antes do cursor # 'Nomes' w # Palavra (word) s # Sentência p # Parágrafo b # Bloco # Exemplos de comandos d2w # Apaga 2 palavras cis # Altera dentro de uma sentência yip # Coloca o parágrafo atual da área de transferência) ct< # Altera para '<' # Altera todo o texto a partir da posição do cursor até o próximo '<' d$ # Apaga tudo da posição do cursor até o final da linha ``` ## Alguns atalhos e dicas ``` > # Adiciona um bloco de indentação < # Remove um bloco de indentação :earlier 15m # Reverte o documento para como ele estava há 15 minutos atrás :later 15m # Reverte o comando acima ddp # Troca linhas consecutivas de posição, dd e depois p xp # Permuta caractere atual e o seguinte Xp # Permuta caractere atual e o anterior . # Repete a última ação # Em geral, o usuário pode associar um comando em maísculas (exemplo: D) com # "executar este comando até o final da linha" # Usar a tecla de um comando duas vezes geralmente significa executar este # comando sobre toda a linha (exemplo: dd apaga a linha inteira) ``` ## Macros Macros, basicamente, são ações graváveis. Quando você começa a gravar uma macro, ele salva **toda** ação e comando que você usar, até que você pare de gravar. Ao executar uma macro, ele aplica exatamente a mesma sequencia de ações e comandos na seleção atual. ``` qa # Inicia a gravação de uma macro chamado 'a' q # Para a gravação @a # Executa a macro @@ # Executa a última macro executada ``` ### Configurando o ~/.vimrc O arquivo .vimrc pode ser usado para configurar o Vim no seu início. Exemplo de arquivo ~/.vimrc ```vim " Exemplo de ~/.vimrc " 2015.10 " Obrigatório para rodar apenas no Vim (Vi Improved) set nocompatible " Determina o tipo de arquivo pelo nome para habilitar indentação automática, etc filetype indent plugin on " Habilita sintaxe colorida syntax on " Ativa um 'auto-completar' melhor para a linha de comando set wildmenu " Faz as buscas não diferenciarem maiúsculas-minúsculas (case insensitive) " Exceto quando você usar letras maiúsculas set ignorecase set smartcase " Quando criar uma nova linha e a indentação por tipo de arquivo estiver " desabilitada, mantem a mesma indentação da linha atual set autoindent " Mostra o número das linhas à esquerda set number " Opções de indentação, aqui você pode mudar como preferir " Número de espaços visíveis por TAB set tabstop=4 " Número de espaços por TAB ao editar um arquivo set softtabstop=4 " Número de espaços usados nas funções de indentação (>> e <<) set shiftwidth=4 " Converte TABs em espaços set expandtab " Habilita indentação/alinhamento inteligente set smarttab ``` ### Referências [Vim | Home](http://www.vim.org/index.php) (EN) `$ vimtutor pt` [Vim: um tutorial/cartilha](https://danielmiessler.com/study/vim/) (EN) [O que são as partes sombrias do Vim que sua mãe nunca te explicou? (tópico no Stack Overflow)](http://stackoverflow.com/questions/726894/what-are-the-dark-corners-of-vim-your-mom-never-told-you-about) (EN) [Arch Linux Wiki](https://wiki.archlinux.org/index.php/Vim) (EN)