Questão vi atalho para excluir "até o próximo caractere X"


Eu entendo que o vi tem teclas de atalho para excluir caracteres, palavras e linhas com várias opções.

No entanto, não consegui encontrar isto:

  • excluir do cursor para o próximo caractere especificado

Por exemplo, eu poderia digitar du" esperando que o editor "apague até o próximo " personagem é encontrado "

O mais próximo que eu sei é d9w Onde 9 é o número de palavras a serem excluídas.

Alguém sabe se isso é possível?


154
2017-10-08 15:43


origem


Se você está interessado em Vi e Vim, eles agora têm seu próprio site SE: Vi e Vim - dessert


Respostas:


Usar dtc, Onde c é qualquer caractere, e. para você, você quer dt"

Isso excluirá até, mas não Incluindo c.

Se você tinha:

delete until exclamation point!

E o cursor estava no primeiro espaço e você digitou dt!você teria:

delete!

Além disso dfc.

Isso excluirá até e Incluindo c.

Usando df! no mesmo exemplo acima daria a você:

delete

Apenas sobre qualquer "movimento" pode ser usado para o d, c, y e comandos semelhantes.


249
2017-10-08 16:19



Exatamente o que eu estava depois! Obrigado @Arcege! - kctang
Presumivelmente, o mnemônico é para "até"? Boa resposta. - overthink
Você também pode excluir a instância anterior de um caractere com a versão em letras maiúsculas dos comandos de movimento. Talvez mais útil para vírgulas - dT, e dF,. - Joel Ostblom
Isso não funciona em várias linhas. - 0xcaff
Isso pode ser feito em várias linhas? - Jim


  • Para excluir o caractere até o caractere 'X' dtX

  • Para excluir o caractere "X" do caractere de encaminhamento dfX

  • Para excluir para trás até o caractere 'X' dTX

  • Para excluir de volta o caractere 'X' dFX


38
2018-06-02 18:02





A entrada dt # (não a: comando, use-a como um movimento como G)

irá apagar do cursor até mas não incluindo o #. Você pode substituir qualquer caractere por #.


29
2018-06-21 02:44



Esta é a resposta certa! df # também excluirá #. - Viet
Estava procurando por isso, isso é incrível - Nadeem Khedr


Parece que o @Arcege já respondeu à pergunta, mas eu fiz d/l para apagar até o personagem l; outros personagens também funcionariam.


15
2017-10-09 11:42



Isso funciona para coisas através de novas linhas. - jasonszhao
Nota: isso deve ser seguido por Enter. - Eric Lebigot


w move-se para a seguinte palavra. l move-se para o seguinte caracterizador.

Então é d9l para apagar os próximos 9 caracteres.


6
2017-07-10 19:48



Fechar, l é a tecla de seta para a direita do Vim, então você está realmente apagando corretamente. Por outro lado, d9h apagaria 9 caracteres restantes. - Walf