Qual é a sequência mais rápida para excluir no final da linha após a posição do cursor?
Exemplo:
Eu quero excluir esta linha mais rapidamente
Sequência: 5eD
excluirá o último caractere da palavraline
Quero excluir este lin
Mover-se com o vim geralmente me coloca no primeiro ou no último caractere de uma palavra, forçando-me a mover mais uma vez cada vez que quero excluir o final da linha (no exemplo acima, adicionando um movimento à direita: 5elD
) Existe uma maneira mais eficiente (movendo-se após o final da palavra ou excluindo após o cursor)?
cursor-motions
Pierre-Jean
fonte
fonte
6wD
deixa um espaço após a última palavra, mas pelo menos o texto visível é como você deseja.6wDx
termina o trabalho, mas você pressiona quatro vezes novamente.Respostas:
D
é um comando inclusivo que funciona sobre um movimento que inclui o cursor em uma extremidade e o último caractere imprimível na linha na outra extremidade. Não há maneira integrada do AFAIK de transformar um comando inclusivo em um comando exclusivo e vice-versa.A solução mais pesada seria definir seus próprios operadores e movimentos / objetos de texto.
Uma solução um pouco mais leve seria definir mapeamentos para esses casos de canto.
Uma solução ainda mais leve - mas chata - seria gastar mais algumas teclas no modo visual.
Ou você pode simplesmente se mover de uma maneira um pouco mais "ágil":
fonte
Existem várias maneiras de conseguir o que você deseja:
Tudo isso custa apenas um toque de tecla.
Se foi possível excluir a partir da posição atual +1, será recomendável solicitar também a exclusão da posição atual -1. Também levantaria a questão sobre outros comandos, por exemplo, excluir até o final do arquivo da linha atual +1, -1 e assim por diante.
Como isso pode funcionar? Eu vejo apenas duas maneiras possíveis:
Portanto, não vejo uma maneira de ter algo melhor do que os recursos atuais :-)
Concordo que é um pouco lamentável que não haja um comando "atômico" para excluir do próximo caractere. Vejo o uso prático do que você está perguntando: ao recortar um texto, geralmente desejo excluir a partir de um caractere de espaço, porque não quero deixar espaços em branco no final das linhas (o Git reclama, por exemplo). E os comandos
w
ee
salto de palavras não são muito adequados para isso, comow
salta para as primeiras letras ee
salta para as últimas letras, e não há atalho para saltar no espaço após uma palavra, exceto pesquisas explícitas comof
. Então eu entendo e até compartilho sua necessidade. Só não vejo onde isso pode ser espremido na funcionalidade existente.A melhor alternativa em que posso pensar é gravar a ação em uma macro, digamos
d
. No final de uma palavra (na última letra), registre assim:Em seguida, você pode refazer esta ação no final de outra palavra com
@d
. Para fazer isso repetidamente, você pode fazer@@
. Ao fazer isso repetidamente, é mais rápido digitar do quelD
, mas isso pode depender do seu gosto. Se você não fizer isso repetidamente, a macro não ajudará, pois é o mesmo número de pressionamentos de tecla (+ a criação da macro).fonte