Este é um resumo do post disponível no TutorLinux
| Comando | Descrição |
|---|---|
| vim | Abre o vim vazio, sem nenhum arquivo e exibe a tela de apresentação |
| vim arquivo | Abre o arquivo de nome “arquivo” |
| vim arquivo + | Abre o arquivo de nome “arquivo”, com o cursor no final do mesmo |
| vim arquivo +10 | Abre o arquivo de nome “arquivo”, com o cursor na linha 10 |
| vim arquivo +/Fulano | Abre o arquivo de nome “arquivo”, na primeira ocorrência da palavra “Fulano” |
Ao executar o vim, ele inicia diretamente em modo de comando. Neste modo você não conseguirá digitar nada no texto, apenas navegar sobre o mesmo ou entrar com algum comando como veremos mais adiante.
Vejamos algumas das principais teclas de movimentação sobre o conteúdo do arquivo no modo de comando:
| Comando | Descrição |
|---|---|
| Ctrl + f | Passa para a tela seguinte. |
| Ctrl + b | Passa para a tela anterior. |
| H | Move o cursor para a primeira linha da tela. |
| M | Move o cursor para o meio da tela. |
| L | Move o cursor para a última linha da tela. |
| h | Move o cursor para caractere a esquerda. |
| j | Move o cursor para linha abaixo. |
| k | Move o cursor para linha acima. |
| l | Move o cursor para caractere a direita. |
| w | Move o cursor para o início da próxima palavra (não ignorando a pontuação). |
| W | Move o cursor para o início da próxima palavra (ignorando a pontuação). |
| b | Move o cursor para o início da palavra anterior (não ignorando a pontuação). |
| B | Move o cursor para o início da palavra anterior (ignorando a pontuação). |
| 0 (zero) | Move o cursor para o início da linha corrente. |
| ^ | Move o cursor para o primeiro caractere não branco da linha. |
| $ | Move o cursor para o fim da linha corrente. |
| nG | Move o cursor para a linha de número “n” (substitua n pelo número da linha). |
| gg | Mome o cursor para a primeira linha do arquivo. |
| G | Move o cursor para a última linha do arquivo. |
Para começar a escrever, pressione “i” em seu teclado. O vim entra em modo de inserção, que você comprova pelo rodapé da tela, onde fica a seguinte marcação: – – — INSERT —
| Comando | Descrição |
|---|---|
| i | insere o texto antes do cursor |
| I | insere o texto no início da linha |
| a | insere o texto após o cursor |
| A | Insere o texto no fim da linha onde se encontra o cursor |
| o | Adiciona uma linha vazia abaixo da linha corrente |
| O | Adiciona uma linha vazia acima da linha corrente |
Pressione a tecla ESC para voltar em modo de comandos
Estando no modo de comando, digite estas combinações para o fim desejado:
| Comando | Descrição |
|---|---|
| :w | Salva o arquivo que está sendo editado no momento |
| :q | Sai |
| :wq | Salva e sai |
| “:x” (sem aspas) | Salva e sai |
| ZZ | Idem |
| :w! | Salva forçado |
| :q! | Sai forçado |
| :wq! | Salva e sai forçado |
É claro que você pode desfazer uma ação que você considera errado, ou que errou ao digitar o texto. É só utilizar: u
Shift+u => Desfaz todas as modificações feitas no arquivo.
Se você precisar voltar o texto na tela, utilize as teclas Ctrl + r.
| Comando | Descrição |
|---|---|
| /palavra | Procura pela palavra ou caractere acima ou abaixo do texto |
| ?palavra | Move para a ocorrência anterior da palavra (para repetir a busca use “n”) |
| n | Repete o último comando utilizando / ou ? |
| N | Repete o último comando / ou ? ao contrário (baixo para cima) |
| Ctrl+g | Mostra o nome do arquivo, o número da linha corrente e o total de linhas |
| Comando | Descrição | |
|---|---|---|
| x | Apaga o caractere onde o cursor estiver | |
| dd | Apaga a linha inteira onde o cursor estive | |
| D | Apaga a linha a partir da posição do cursor até o fim | |
| J | Une a linha corrente à próxima | |
| 5dd | Remove as próximas 5 linhas a partir da posição do atual do cursor | (qualquer número) |
| :A,Bd | Deleta da linha A até a linha B e copia para a área de transferência | |
| Ctrl + h | Apaga último caractere à esquerda (no modo de inserção) | |
| cc | Apaga a linha atual e copia para a área de transferência | |
| cNc | Apaga N linhas e copia para a área de transferência |
| Comando | Descrição |
|---|---|
| yy | Copia a linha onde o cursor se encontra |
| 5yy | Copia as próximas 5 linhas a partir da posição atual do cursor |
| p | Cola o que foi copiado na linha abaixo do cursor atual |
| Np | Cola N vezes o conteúdo da área de transferência |
| Comando | Descrição |
|---|---|
| rCARACTER | Substitui o caractere onde o cursor se encontra pelo caractere especificado em CARACTERE |
| RTEXTO | Substitui o texto corrente pelo texto digitado (sobrepõe) |
| cw | Remove a palavra corrente para substituição |
| cc | Remove a linha corrente para substituição |
| C | Substitui o restante da linha corrente, esperando o texto logo após o comando |
| J | Une a linha corrente à próxima |
| :s/velho/novo | Substitui a primeira ocorrência de “velho” por “novo” na linha corrente |
| :% s/velho/novo | Substitui em todo o arquivo (%) a primeira ocorrência de “velho” por “novo” em cada linha |
| :% s/velho/novo/g | Substitui em todo o arquivo (%), todas (g) as ocorrências de “velho” por “novo” |
| :% s/velho/novo/gc | Igual ao anterior, mas pedindo confirmação para cada substituição |
| :% s/^String[0-9]//gc | Expressões regulares também funcionam, como no sed |
| :10,20s/^/# | Insere o caractere # no início (^) das linhas 10 a 20 |
| :10,20s/^#/ | Remove o primeiro caractere nas linhas 10 a 20 |
| :% s/./\u&/gc | Converte para maiúsculas (\u) o primeiro caractere (.) de cada linha. |
:set
| Comando | Descrição |
|---|---|
| autowrite aw | Salva a cada alteração |
| backspace bs | Comportamento backspace (1 ou 2) |
| errorbell eb | Campainha de erro |
| expandtab et | Troca tab por espaços |
| fileformat=dos ff | Converte o arquivo para DOS |
| hidden hid | Preserva o buffer |
| hlsearch hls | Ilumina a última procura |
| cursorline | Exibe uma linha onde o cursor se encontra |
| ignorecase ic | Case insensitive na busca |
| incsearch is | Ilumina procura enquanto digita |
| laststatus=2 | Mostra linha de estado |
| lazyredraw lz | Não redesenha em macros |
| lines=N | Número de linhas na tela |
| magic | Usar mágicas na procura de padrões |
| number nu | Mostra núm da linha |
| report=N | Mostra aviso quando N linhas mudaram (0=sempre) |
| showcmd | Mostra o comando que se está fazendo |
| showmatch sm | Mostra o casamento de {},[],() |
| smartcase scs | Assume “noic” quando tiver maiúsculas |
| textwidth=N | Quebra de linha do texto |
| undolevels ul=N | Guarde os N últimos comandos para desfazer (padrão=1000) |
| vb t_vb= | Retira o “beep” de erro |
| Comando | Descrição |
|---|---|
| 5~ | Inverte os 5 próximos caracteres |
| g~$ | Inverte todos os caracteres até o fim da linha |
| seleciona, u | Converte para minúsculas |
| seleciona, U | Converte para maiúsculas |
| seleciona, ~ | Inverte |
Observação: Onde está escrito “seleciona”, é para fazer utilizando o modo visual (v).
Entre no modo visual: v Agora, utilize as teclas direcionais (setas) do teclado, para selecionar o texto desejado. Pressione “y para copiar” ou “u” para recortar e cole, utilizando a tecla “p” (paste). Veja agora como apagar um determinado texto: Utilizando normalmente as teclas Backspace/Delete, ou entrando em modo visual (v) e pressionando a tecla Delete. Você pode remover até o final de uma palavra, utilizando: dw Pode também remover até o final de uma frase: d$
Selecione o texto necessário com o botão esquerdo do mouse. Quando você for colar, saiba que o texto será colado a partir de onde se encontra o cursor (esse que aparece, às vezes piscando e às vezes não, quando você está digitando). Para colar, depois de ter selecionado o texto, você pode utilizar uma dessas opções:
Observação: Lembre-se que o vim deve estar no modo de inserção.
| Comando | Descrição |
|---|---|
| :e arquivo | abre o arquivo |
| :e. | abre o diretório atual para selecionar um arquivo |
| :Vex | abre uma janela vertical para selecionar um novo arquivo a ser editado |
| Ctrl+w seguido de v | abre uma janela vertical |
| Ctrl+w seguido de s | abre uma janela horizontal |
| Ctrl+w seguido de n | abre uma nova janela horizontal |
| :ce | alinhamento centralizado |
| :ri | alinhamento a direita |
| :le | alinhamento a esquerda |
| :new | abre nova janela |
| :n ou :next | vai para próximo arquivo (quando utilizado vim file1 file2) |
| :prev ou :previous | vai para arquivo anterior (quando utilizado vim file1 file2) |
| :split | divide a janela atual em duas |
| :split arquivo | abre o arquivo em nova janela |
| Ctrl+w+k | ir para janela superior |
| Ctrl+w+j | ir para janela inferior |
| Ctrl+w Ctrl+w | alternar entre janelas |
| :! | Permite executar um comando do shell e retorna ao vim (Ex: :!ls = executa o comando ls e retorna ao vim) |
| :.! | Executa um comando no shell e insere a saída no vim abaixo do cursor (Ex: :.!ls = executa o comando ls e insere a saída no vim) |
| :r! | Executa um comando no shell e insere a saída no vim acima do cursor (Ex: :r!ls = executa o comando ls e insere a saída no vim) |
| :quit ou :q | Fecha |
| :quit! ou :q! | Fecha sem gravar |
| :w | Salva o arquivo |
| :w arquivo | salvar arquivo como |
| :wq | Salva e fecha |
| :exit ou “:x” (sem aspas) | Fecha e grava se necessário |
| :help | ajuda do VI |