Excluir texto entre as tags HTML no vim?

164

eu sei

di<

será excluído em uma tag HTML.

Existe uma maneira fácil de excluir texto entre duas tags?

<span>How can I delete this text?</span>

Obrigado!

CMB
fonte

Respostas:

321

ditexcluirá o texto entre as tags XML correspondentes. ( ité para "bloco interno de tags".)

Veja :h ite :h tag-blocks.

Brian Carper
fonte
30
E, claro, citquando você quiser escrever imediatamente depois.
Debilski
6
E o plug-in Surround ( vim.org/scripts/script.php?script_id=1697 ) é incrível quando você deseja fazer coisas como alterar a tag circundante (cst) de <p> para <div>, por exemplo.
Kris Jenkins #
4
Há também dat (bloco Excluir uma tag) que inclui as tags reais. cit que é como dit, mas entra no modo de inserção depois. gato que é como dat, mas entra no modo de inserção depois. Também di" e di (para aspas duplas interior de exclusão e parêntese interior de exclusão respectivamente.
aiham
@KrisJenkins, você pode mostrar um exemplo completo de como conseguir isso? Só posso fazer isso com aspas / colchetes.
FelikZ 20/03
1
Também vat(ou vit), seguido de repetido at(ou it) para selecionar progressivamente as tags vizinhas. (Ou v2atetc). Em seguida, dpara excluir (etc).
Joe Freeman
27
cit
ci"

Dois dos melhores comandos habilitadores de produtividade do vim.

Economizo muito tempo e esforço apenas com esses dois.

Chipairon
fonte
3
cité abordado neste tópico, mas para a posteridade, ci"será excluído até o próximo "encontrado. ótimo para alterar nomes de classes em tags html, como <span id="really long annoying-id">- com o cursor primeiro ", pressione ci"e solte para inserir novos caracteres entre as aspas.
Alex Moore-Niemi
ciwtambém é útil, pois exclui a palavra atual; Eu uso mais do que cite ci"na verdade.
precisa
2
@ AlexMoore-Niemi: ci"na verdade, exclui o texto da esquerda até a próxima citação e da direita até a próxima citação e depois entra no modo de inserção. ct"é realmente o comando para "excluir até o próximo" encontrado ".Mas sim, ele se comporta da mesma forma se o cursor estiver sob a citação esquerda.
#
9

tente dt < enquanto o cursor estiver no primeiro caractere a ser excluído. No seu exemplo, o 'H'.

JD Frias
fonte
Também é muito útil para outras situações, obrigado! (pensei que eu acho que deveria ser "dt <")
CMB
1
Embora isso seja tecnicamente verdadeiro, é necessário navegar até o primeiro caractere que você deseja excluir, em vez de simplesmente pular em qualquer lugar da linha. Mas verdade é verdade. :-)
lyonsinbeta 19/07/12
4

( cursor no primeiro caractere a ser excluído ) v / <[enter] d

Essa solução inicia no primeiro caractere e entra no modo visual ("v"). Em seguida, procura o próximo colchete inicial ("/ <") e, em seguida, pressione enter para sair da pesquisa.

Nesse ponto, sua seleção visual cobrirá o texto a ser excluído. pressione d ("d") para excluí-lo.

Se eu tivesse que fazer isso por várias tags, gravaria o comando e o combinaria com outras pesquisas para torná-lo repetível. A sequência de teclas pode ser assim:

[ cursor no início do arquivo ] qa /> [enter] lv / <[enter] dnq

então aperte:

20 @ a

fazer isso por 20 tags

Brad
fonte
Eu costumava usar muito o comando c/<[enter]na minha "vida no Vim", mas agora estou um pouco arrependido por isso. Veja, a maioria dos plug-ins "modo Vi" para outros editores / IDEs populares não suporta esse tipo específico de comando. Eles apoiam cit, ci", ct<e no entanto. Então, estou reeducando novamente.
pilat
-1

Se você deseja fazer a inversão de exclusão de texto entre sinalizadores, sugiro instalar o Vim-Surround e executar o dstque exclui a tag surround

Nick Sarafa
fonte