HEAnV #02
2023-10-26
Uma das partes mais legais de usar o vim ainda é refatorar linhas inteiras com
algumas porradas no teclado. Sabe quando você precisa interpolar uma string em
js e você apenas cs"`
. Eu sei, precisa do vim-surround
, mas se
ainda não tem esse plugin, o que está fazendo?
Recentemente descobri que esses movimentos do surround também servem pra tags! Você provavelmente já conhece cit para alterar o conteúdo dentro de tags, ou até dat para remover a tag e seus filhos por inteiro.
Mas sabia que também pode fazer dst para deletar somente as tags, e manter o conteúdo? Menos óbvio ainda é que é possível trocar uma tag, com: cstt.
Isso funciona porque o comando
cs
, ou change surrounding recebe dois objetos, um destino e uma substituição. Nesse caso, o destino ét
, uma tag, e a substituição ét
, uma tag. Pra saber mais,:help surround-targets
e:help surround-replacements
Lendo esse help acabei descobrindo uma funcionalidade que não conhecia, um
HEA dentro do HEA. É possível adicionar chamada de funções com o target f
.
🤯
Old text Command New text
"hello" ysWfprint<cr> print("hello")
Se você usa linguagens com symbols, como ruby
ou fennel
, uma substituição
possível é :
. Por exemplo, se quiser trocar uma string para um symbol,
basta cs":. Agora, se quiser fazer
o contrário, não é tão
obvio.
Bônus
Omni-completion funciona pra fechar uma tag correspondente, mesmo sem
configurar nadinha. Se abriu uma tag, pra fechar basta escrever </
e
Ctrl-xCtrl-o.
Se uma LSP estiver rodando é capaz que ela tenha sequestrado seu
omnifunc
. Nesse caso senta e chora porque eu não sei o que fazer 🤷