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.