5 Funcionalidades built-in do Vim que você provavelmente não conhece
Muito provavelmente o seu Vim deve estar abarrotado de plugins que facilitam todo tipo de operação, mas existem situações que você não tem acesso ao seu arquivo de configuração com os seus amados plugins, seja por você não estar no seu computador, por motivos de segurança, ou qualquer outra coisa. Nessas situações saber algumas das funcionalidades buit-in do vim pode te salvar algum tempo.
Colar comandos do Stdout
Através do comando :read!
ou :r!
podemos retornar a saída padrão do shell para a linha onde o cursor se encontra.
Exemplos:
- Retornar a data e hora atual:
:r!date +\%c
- Retornar os usuários contidos na primeira coluna do arquivo passwd:
:r!cut -d: -f1 /etc/passwd
Indentação automática
Você já deve saber que é possível indentar para esquerda ou direita utilizando os sinais de <
(menor que) e >
(maior que) respectivamente. Mas isso te limita a ter que escolher apenas um lado e a ter que saber exatamente quantos tabs/espaços usar. Para indentar automaticamente basta apertar o sinal de igual (=
) do seu teclado no trecho em que desejar indentar.
Exemplos:
- identar linha:
==
- indentar parágrafo:
=ap
- indentar todo o documento
gg=G
Trocar entre maiúsculo e minúsculo
No modo normal, pressione o sinal de til (~
). No modo de seleção, selecione o trecho desejado e use o U
para maiúsculas e o u
para minúsculas. Para usar com motions basta acrescentar a letra g
antes: gU<motion>
ou gu<motion>
.
Exemplos:
- Mudar palavra em que o cursor está em cima para maiúsucla:
gUiw
- Mudar de onde o cursor está até o começo da linha para minúsculo:
gu0
- Mudar as duas palavras seguintes para maiúsculo:
2gUaw
- Inverter toda a linha:
g~~
Incrementar ou decrementar em ordem
É comumente sabido que é possível incrementar e decrementar com <c-a>
e <c-x>
respectivamente, mas usando g<c-a>
e g<c-x>
podemos fazer isso em ordem.
Exemplo:
Selecionado | <c-a> | g<c-a> | 2g<c-a> |
---|---|---|---|
a 0 | a 1 | a 1 | a 2 |
b 0 | b 1 | b 2 | b 4 |
c | c | c | c |
d 0 | d 1 | d 4 | d 6 |
Aplicar Ex commands em linhas correspondentes a uma Regex
Ex commands em linhas gerais é o que usamos no modo de comando do Vim, como o :s
para substituição, por exemplo.
Para usar o ex command junto com a regex, digite :g/regex/cmd
e veja a mágica acontecer!
Exemplos:
- Deleta todas as linhas que contenham números:
:g/\d/d
- Elimina o primeiro espaço de todas as linhas correspondentes:
:g/[a-zA-Z]\+/norm f dw
Bônus
- Selecionar último bloco de seleção:
gv
- Pular para o próximo ou anterior sem sair da linha da busca:
ctrl-g
ectrl-t
- Ver histórico de comando ou busca:
- aperte
ctrl-f
no modo de comando ou na busca, navegue comj
ek
e selecione comenter
- Para enviar a linha que o cursor está para edição aperte
ctrl-c
- também é possível abrir esse menu pelo modo normal com
q:
para lista de comandos eq/
para a lista de buscas
- aperte
- Abrir arquivos direto do normal mode: Coloque o cursor sob o caminho do arquivo e pressione
gf
.
Agora é só juntar tudo, usar com macros e mappings e o céu será o limite!