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!

Respostas:


321

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

Veja :h ite :h tag-blocks.


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.


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'.


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


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.