===== Nível Básico ===== * **i**: Entra no modo de inserção, permitindo digitar no texto. Exemplo: Após pressionar 'i', você pode começar a digitar onde o cursor está posicionado. * **ESC**: Sai do modo de inserção ou de qualquer outro modo, retornando ao modo normal. Exemplo: Quando você terminar de editar, pressione 'ESC' para voltar ao modo normal. * **:w**: Salva o arquivo. Exemplo: Após editar um arquivo, digite ':w' e pressione 'Enter' para salvar as mudanças. * **:q**: Sai do editor. Exemplo: Para sair do Vim, digite ':q' e pressione 'Enter'. (Se houver mudanças não salvas, será necessário adicionar '!' para forçar a saída.) * **:wq**: Salva e sai do editor. Exemplo: Após fazer modificações, use ':wq' para salvar as mudanças e fechar o arquivo. * **dd**: Exclui a linha onde o cursor está. Exemplo: Se quiser remover uma linha inteira, posicione o cursor nela e pressione 'dd'. * **yy**: Copia (yank) a linha atual. Exemplo: Para copiar uma linha, posicione o cursor sobre ela e pressione 'yy'. Você pode colar essa linha com o comando 'p'. * **p**: Cola o conteúdo copiado após a linha atual. Exemplo: Após copiar algo com 'yy', use 'p' para colar a linha abaixo do cursor. * **u**: Desfaz a última ação. Exemplo: Se cometer um erro, pressione 'u' para desfazer a última mudança. * **CTRL + r**: Refaz a ação desfeita. Exemplo: Para reverter o comando de desfazer, use 'CTRL + r'. * **x**: Exclui o caractere sob o cursor. Exemplo: Para apagar um caractere específico, posicione o cursor sobre ele e pressione 'x'. * **:help [comando]**: Mostra a ajuda para um comando específico. Exemplo: Para obter ajuda sobre o comando 'w', use ':help w' e pressione 'Enter'. ===== Nível Intermediário ===== * **/palavra**: Procura pela palavra no texto. Exemplo: Digite '/erro' e pressione 'Enter' para encontrar a próxima ocorrência de "erro" no arquivo. * **n**: Vai para a próxima ocorrência da palavra procurada. Exemplo: Após buscar uma palavra com '/', pressione 'n' para ir para a próxima ocorrência. * **N**: Vai para a ocorrência anterior da palavra procurada. Exemplo: Após buscar uma palavra com '/', pressione 'N' para ir para a ocorrência anterior. * **:%s/palavra/substituição/g**: Substitui todas as ocorrências de uma palavra por outra no arquivo inteiro. Exemplo: Para substituir "erro" por "acerto" no arquivo inteiro, use ': %s/erro/acerto/g'. * **:noh**: Limpa o destaque de uma busca anterior. Exemplo: Após usar a busca '/' para encontrar uma palavra, o Vim destaca todas as ocorrências. Use ':noh' para limpar o destaque. * **V**: Seleciona a linha inteira. Exemplo: Pressione 'V' para selecionar uma linha inteira e então use comandos como 'd' para apagar ou 'y' para copiar a linha. * **CTRL + v**: Inicia o modo de seleção em bloco (visual block). Exemplo: Use 'CTRL + v' para iniciar uma seleção de bloco. Esse modo é útil para editar várias colunas de texto ao mesmo tempo. * **o**: Insere uma nova linha abaixo da linha atual e entra no modo de inserção. Exemplo: Posicione o cursor em uma linha e pressione 'o' para começar a digitar em uma nova linha abaixo. * **O**: Insere uma nova linha acima da linha atual e entra no modo de inserção. Exemplo: Posicione o cursor em uma linha e pressione 'O' para inserir uma linha acima da atual. * **gg**: Move o cursor para o início do arquivo. Exemplo: Pressione 'gg' para mover o cursor diretamente para a primeira linha do arquivo. * **G**: Move o cursor para o final do arquivo. Exemplo: Pressione 'G' para ir diretamente para a última linha do arquivo. * **dG**: Exclui da linha atual até o final do arquivo. Exemplo: Se você deseja apagar todo o conteúdo do arquivo a partir de uma linha específica, posicione o cursor e pressione 'dG'. * **:w !sudo tee %**: Salva o arquivo com permissões elevadas (quando abriu o arquivo sem sudo). Exemplo: Se você abriu um arquivo sem permissões de root, mas precisa salvá-lo, use ':w !sudo tee %' para salvá-lo sem sair do Vim. * **.**: Repete o último comando de edição. Exemplo: Se você deletar uma palavra com 'dw', pode pressionar '.' para repetir a mesma ação. * **:%!sort**: Ordena as linhas do arquivo em ordem alfabética. Exemplo: Para ordenar todo o conteúdo do arquivo, execute ':%!sort'. ===== Nível Avançado ===== * **:e [nome_do_arquivo]**: Abre outro arquivo dentro do Vim. Exemplo: Para abrir 'meuarquivo.txt' enquanto estiver editando outro arquivo, use ':e meuarquivo.txt'. * **:bnext (ou :bn)**: Vai para o próximo buffer aberto. Exemplo: Se você tiver múltiplos arquivos abertos, use ':bnext' para alternar para o próximo buffer. * **:bprev (ou :bp)**: Vai para o buffer anterior. Exemplo: Use ':bp' para voltar ao buffer anterior quando estiver alternando entre vários arquivos. * **:sp [nome_do_arquivo]**: Divide a janela horizontalmente e abre o arquivo especificado. Exemplo: Para dividir a tela e abrir 'outroarquivo.txt', use ':sp outroarquivo.txt'. * **:vsp [nome_do_arquivo]**: Divide a janela verticalmente e abre o arquivo especificado. Exemplo: Use ':vsp outroarquivo.txt' para dividir verticalmente e abrir outro arquivo na nova janela. * **CTRL + w + w**: Alterna entre as janelas divididas. Exemplo: Quando você tem múltiplas janelas abertas, use 'CTRL + w + w' para navegar entre elas. * **:resize +N**: Aumenta o tamanho da janela corrente em N linhas. Exemplo: Use ':resize +5' para aumentar a altura da janela em 5 linhas. * **:resize -N**: Diminui o tamanho da janela corrente em N linhas. Exemplo: Use ':resize -5' para diminuir a altura da janela em 5 linhas. * **CTRL + w + =**: Faz com que todas as janelas tenham o mesmo tamanho. Exemplo: Após redimensionar janelas, pressione 'CTRL + w + =' para restaurar o tamanho padrão de todas. * **:windo [comando]**: Executa um comando em todas as janelas abertas. Exemplo: Para salvar todos os arquivos abertos em janelas diferentes, use ':windo w'. * **q: [número]**: Grava uma macro para repetição de comandos. Exemplo: Pressione 'q' seguido de uma letra (ex: 'qa' para gravar a macro no registro 'a'), execute as ações e depois pressione 'q' novamente para parar a gravação. Use '@a' para executar a macro gravada. * **@a**: Executa a macro gravada no registro 'a'. Exemplo: Após gravar uma macro em 'a' usando 'qa', você pode repetir as ações da macro pressionando '@a'. * **:bufdo [comando]**: Executa um comando em todos os buffers. Exemplo: Para salvar todos os buffers abertos, use ':bufdo w'. * **:args [arquivo1 arquivo2]**: Abre múltiplos arquivos ao mesmo tempo. Exemplo: Para abrir 'arquivo1.txt' e 'arquivo2.txt' em buffers diferentes, use ':args arquivo1.txt arquivo2.txt'. * **:argdo [comando]**: Executa um comando em todos os arquivos abertos com ':args'. Exemplo: Após abrir múltiplos arquivos com ':args', você pode rodar ':argdo %s/erro/correção/g' para substituir "erro" por "correção" em todos os arquivos. * **:mksession [nome]**: Salva a sessão atual (janelas abertas, buffers, etc.). Exemplo: Para salvar o estado atual do Vim, use ':mksession minha_sessao.vim'. Isso permite reabrir a mesma sessão posteriormente. * **:source [nome]**: Reabre uma sessão salva anteriormente. Exemplo: Para reabrir uma sessão salva com ':mksession', use ':source minha_sessao.vim'. ===== Nível Especializado ===== * **:set number**: Exibe a numeração das linhas. Exemplo: Ative a exibição de números de linha no Vim com ':set number'. * **:set relativenumber**: Mostra números relativos nas linhas, com exceção da linha atual. Exemplo: Use ':set relativenumber' para facilitar a navegação e saltos entre linhas adjacentes. * **ci[char]**: Apaga o conteúdo dentro de um par de caracteres e entra no modo de inserção. Exemplo: 'ci(' remove o texto dentro dos parênteses e permite editar. * **yi[char]**: Copia o conteúdo dentro de um par de caracteres. Exemplo: 'yi(' copia o texto dentro dos parênteses. * **gf**: Abre o arquivo cujo nome está sob o cursor. Exemplo: Se o nome de um arquivo estiver no texto e o cursor estiver sobre ele, pressione 'gf' para abrir o arquivo no Vim. * **CTRL + ^**: Alterna entre os dois últimos arquivos editados. Exemplo: Para alternar rapidamente entre dois arquivos, pressione 'CTRL + ^'. * **:set autoindent**: Ativa a indentação automática. Exemplo: Ao ativar com ':set autoindent', o Vim automaticamente alinha as linhas subsequentes de acordo com o código anterior. * **:set paste**: Desativa o autoindent e outros recursos ao colar texto. Exemplo: Antes de colar um texto no Vim, use ':set paste' para evitar problemas de formatação. * **:set nowrap**: Desativa a quebra automática de linha. Exemplo: Para que longas linhas de texto não quebrem visualmente, use ':set nowrap'. * **:grep [pattern] [arquivos]**: Faz busca no estilo grep dentro dos arquivos. Exemplo: Use ':grep TODO *.c' para buscar pela palavra "TODO" em todos os arquivos `.c` no diretório atual. * **:copen**: Abre a lista de resultados após um comando de busca (como grep). Exemplo: Após usar ':grep', use ':copen' para abrir a lista de ocorrências encontradas. * **gv**: Reseleciona a última seleção visual. Exemplo: Se você fez uma seleção visual e perdeu o foco, use 'gv' para restaurar essa seleção. * **:map [chave] [comando]**: Cria um atalho personalizado para um comando. Exemplo: Use ':map :w' para salvar o arquivo ao pressionar a tecla F2. * **:ab [atalho] [expansão]**: Cria uma abreviação que é expandida automaticamente. Exemplo: ':ab brb be right back' faz com que "brb" seja automaticamente expandido para "be right back". * **:set spell**: Habilita a verificação ortográfica. Exemplo: Use ':set spell' para ativar a verificação de ortografia e corrigir palavras sublinhadas. * **:diffthis**: Ativa o modo de comparação de arquivos (diff) na janela atual. Exemplo: Quando dois arquivos estão abertos em janelas separadas, use ':diffthis' para ver as diferenças entre eles. * **:set cursorline**: Destaca a linha atual onde o cursor está. Exemplo: Use ':set cursorline' para destacar visualmente a linha onde o cursor se encontra. * **:tabnew [arquivo]**: Abre um novo arquivo em uma aba separada. Exemplo: Para abrir 'outroarquivo.txt' em uma nova aba, use ':tabnew outroarquivo.txt'. * **:tabn**: Vai para a próxima aba. Exemplo: Se você estiver trabalhando com múltiplas abas, use ':tabn' para ir para a próxima. * **:tabp**: Vai para a aba anterior. Exemplo: Use ':tabp' para voltar à aba anterior. * **:earlier [tempo]**: Reverte o arquivo para o estado anterior. Exemplo: Use ':earlier 10m' para ver o estado do arquivo como estava 10 minutos atrás. * **:later [tempo]**: Avança o arquivo para o estado mais recente, se você usou ':earlier'. Exemplo: Se você reverteu o arquivo com ':earlier', pode avançar para o estado mais recente usando ':later'. * **:mksession! [nome]**: Salva uma sessão completa de trabalho, incluindo janelas, abas, buffers, etc. Exemplo: ':mksession! meu_trabalho.vim' salva a sessão atual para que você possa retomá-la depois. * **:set mouse=a**: Ativa o uso do mouse no Vim. Exemplo: Use ':set mouse=a' para permitir a navegação e seleção de texto com o mouse. * **vim -o arquivo1 arquivo2**: Abre múltiplos arquivos em janelas divididas horizontalmente. Exemplo: Use 'vim -o arquivo1 arquivo2' para editar dois arquivos lado a lado. * **vim -O arquivo1 arquivo2**: Abre múltiplos arquivos em janelas divididas verticalmente. Exemplo: Use 'vim -O arquivo1 arquivo2' para abrir dois arquivos em janelas verticais.