Sposta dopo la fine della parola o Elimina dopo il cursore


8

Qual è la sequenza più veloce da eliminare fino alla fine della riga dopo la posizione del cursore?

Esempio:

Voglio eliminare questa riga in modo più veloce

Sequenza: 5eDeliminerà l'ultimo carattere della parolaline

Voglio eliminare questa lin

Muoversi con vim spesso mi mette sul primo o sull'ultimo carattere di una parola, costringendomi a spostarmi di un altro tasto ogni volta che voglio cancellare fino alla fine della riga (nell'esempio sopra, aggiungendo un movimento a destra: 5elD). Esiste un modo più efficiente (spostandosi dopo la fine della parola o eliminando dopo il cursore)?


1
6wDlascia uno spazio dopo l'ultima parola, ma almeno il testo visibile è come lo desideri. 6wDxtermina il lavoro, ma dopo sei di nuovo a quattro battute.
Peter Lewerin,

Grazie Peter per l'alternativa, ma in effetti questa soluzione mi lascia con un altro tasto per terminare il lavoro. Poiché questo scenario è abbastanza comune, sarebbe bello avere questo lavoro svolto in una sola azione. La tua soluzione è migliore di quella del mio esempio, nella maggior parte degli scenari.
Pierre-Jean,

Se lo fai come suggerisce Peter e finisci con uno spazio bianco finale, ci sono plugin come DeleteTrailingWhitespace che possono eliminarli automaticamente.
Philipp Moers,

Risposte:


4

Dè un comando inclusivo che lavora su un movimento che include il cursore a un'estremità e l'ultimo carattere stampabile sulla linea all'altra estremità. Non esiste AFAIK un modo integrato per trasformare un comando inclusivo in un comando esclusivo e viceversa.

La soluzione più pesante sarebbe quella di definire i propri operatori e movimenti / oggetti di testo.

Una soluzione leggermente più leggera sarebbe quella di definire le mappature per quei casi angolari.

Una soluzione ancora più leggera, ma noiosa, sarebbe quella di spendere qualche altra sequenza di tasti in modalità visiva.

Oppure potresti semplicemente muoverti in un modo leggermente più "agile":

5f D

1
Beh, sono un po 'triste che non ci sia modo più semplice, ma hai risposto alla mia domanda. Grazie!
Pierre-Jean,

1

Esistono diversi modi per ottenere ciò che desideri:

5elD
6f D
6wDx
6whD
# ... probably others too

Tutto ciò ti costa solo +1 battitura.

Se è possibile eliminare a partire dalla posizione corrente +1, avrà senso chiedere anche l'eliminazione dalla posizione corrente -1. Solleva anche la domanda su altri comandi, ad esempio eliminando fino alla fine del file dalla riga corrente +1, -1 e così via.

Come può funzionare? Vedo solo due modi possibili:

  1. Passare un parametro ai comandi esistenti per modificarne il comportamento con la sfumatura desiderata. Questo ti costerà inevitabilmente una sequenza di tasti +1, quindi non starai meglio di quanto esiste già
  2. Tieni premuto un nuovo tasto per questo comportamento. La maggior parte dei tasti sulla tastiera ha già qualcos'altro più importante e potente da fare, sarebbe una scelta molto difficile assegnare uno dei tasti inutilizzati per una funzionalità così piccola

Quindi, non vedo un modo per avere qualcosa di meglio delle funzionalità attuali :-)

Sono d'accordo che è un po 'sfortunato che non ci sia alcun comando "atomico" da cancellare dal prossimo personaggio. Vedo l'uso pratico di ciò che stai chiedendo: quando si accorcia un testo, spesso voglio eliminare a partire da un carattere spazio, perché non voglio lasciare spazi vuoti alla fine delle righe (Git si lamenta, per esempio). E i comandi di salto di parole we enon sono molto adatti per questo, come wsalti alle prime lettere e esalti alle ultime lettere, e non c'è scorciatoia per saltare sullo spazio dopo una parola, tranne ricerche esplicite come f. Quindi capisco e condivido anche le tue necessità. Semplicemente non vedo dove questo può essere compresso nella funzionalità esistente.

La migliore alternativa che mi viene in mente è quella di registrare l'azione in una macro, diciamo d. Alla fine di una parola (sull'ultima lettera), registra in questo modo:

qdlDq

Quindi, puoi ripetere questa azione alla fine di un'altra parola con @d. Per farlo ripetutamente, puoi farlo @@. Quando lo fai ripetutamente questo è più veloce da digitare di lD, ma questo potrebbe dipendere dai tuoi gusti. Se non lo fai ripetutamente, la macro non aiuta davvero, poiché è lo stesso numero di sequenze di tasti (+ la creazione della macro).


"Dato che tutti i tasti della tastiera hanno già qualcosa di più importante e potente da fare, questa opzione sembra assolutamente impossibile". Non vero; ci sono diverse chiavi inutilizzate, e alcune che sono probabilmente meno potenti / importanti che potrebbero essere rimappate per richiedere la chiave leader, liberandole per qualcosa di veramente importante.

Bene, la chiave che uso durante il test di una mappatura è la chiave backspace, e non è una cattiva scelta per un'operazione che esegue una cancellazione (al momento l'ho impostata per eseguire una cancellazione di linea senza alterare i registri normalmente utilizzati da tale azione, così posso copiare / tagliare del testo, eliminare le righe usando backspace, quindi incollare il testo originale).
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.