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


194

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

No entanto, não foi possível encontrar o seguinte:

  • excluir do cursor para o próximo caractere especificado

Por exemplo, eu poderia digitar du"esperando que o editor "exclua até que o próximo "caractere seja encontrado"

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

Alguém sabe se isso é possível?


Se você estiver interessado em Vi e Vim, eles têm o seu próprio site SE agora: Vi e Vim
sobremesa

Respostas:


303

Use dtc, onde c é qualquer caractere, por exemplo, para você, você desejadt"

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

Se você tinha:

delete until exclamation point!

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

delete!

Também dfc.

Isso excluirá até e incluindo c .

Usar df!o mesmo exemplo acima daria a você:

delete

Apenas sobre qualquer "movimento" pode ser utilizado para as d, c, ye comandos semelhantes.


7
Presumivelmente, o mnemônico é t para "até"? Boa resposta.
precisa

15
Você também pode excluir para a instância anterior de um caractere com a versão em maiúscula dos comandos de movimento. Talvez mais útil para vírgulas - dT,e dF,.
Joelostblom

3
Isso não funciona em várias linhas.
0xcaff

3
Isso pode ser feito em várias linhas?
Ray

2
Para fazer algo semelhante em várias linhas, uma pesquisa comum (como na resposta do zpletan) pode ser realizada: d/wordpesquisas até word. Deve ser seguido por enter (para fechar a pesquisa).
Eric O Lebigot

59
  • Para excluir o tipo de encaminhamento até o caractere 'X' dtX

  • Para excluir o encaminhamento através do caractere 'X' dfX

  • Para excluir o caractere 'X' de trás para frente dTX

  • Para excluir o caractere 'X' para trás dFX


30

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

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


2
Esta é a resposta certa! df # excluirá # também.
Viet

procurado este, isto é incrível
Nadeem Khedr

18

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


3
Isso funciona para coisas em novas linhas.
Jasonszhao # 9/16

Nota: isso deve ser seguido por Enter.
Eric O Lebigot

6

wmove para a palavra seguinte. lmove para o seguinte personagem.

Portanto, é d9lpara excluir os próximos 9 caracteres.


2
Fechar, lé a tecla de seta direita do Vim, então você está realmente excluindo a direita. Por outro lado, d9hexcluiria 9 caracteres restantes.
Walf
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.