2013-01-20 17 views
8

Qual è la combinazione più breve?VIM: Come eliminare 3 parole dalla fine della riga in modalità normale?

P.S. Di solito lo faccio UnCtrl + wCtrl + wCtrl + wEsc.
In altre parole, devo passare alla modalità di inserimento.

P.P.S. db non funziona.

+0

Macro per la rimozione di N parole? – cutalion

+0

se si è nella posizione che si desidera eliminare, basta usare 'd $' per cancellare tutto alla fine della riga. – mgoffin

+0

Di solito sono all'inizio della riga – cutalion

risposta

7

Questa sequenza di comandi,

$3bD 

è la via più breve per farlo mi viene in mente al momento, ma lascia fuori un brutto spazio finale.

$3gelD 

è un altro modo per sbarazzarsi dello spazio finale.

Si può anche pensare fuori dagli schemi e giocare con gli spazi invece che parole:

$3F D 
+1

L'ultimo potrebbe non essere lo stesso, in quanto potrebbe essere più vicino all'utilizzo dei limiti WORD invece dei limiti delle parole (che 'ge' e' b' usano). –

+0

Risolve comunque il problema dello spazio bianco finale. – romainl

+1

@romainl '$ 3F D' non funzionerà se le parole sono separate da tabulazioni o più spazi. '$ 3bDx' è leggermente migliore, ma il tuo altro suggerimento di' $ 3gelD' è probabilmente il migliore. '$ 3b3daw' fa lo stesso ma è più lungo; '$ daw..' è un'alternativa interessante. –

4

$ 3bd

O

$ 3bDx

... se anche voi volete eliminare lo spazio finale.

4

Vai alla fine della linea, andare indietro di 3 parole, quindi eliminare alla fine della linea: $bD

o

Vai fine della riga, eliminare indietro 3 parole, quindi eliminare il carattere extra: $dbx

9

$bD che translates a

  • $ alla fine di una riga
  • tre di ciò è prossimo
  • b all'indietro tre [uno senza modificatore] parole
  • D eliminare i caratteri sotto il cursore fino alla fine della riga

Inoltre , è anche possibile utilizzare il comando normal in modalità ex per ottenere lo stesso

:norm! $3bD 
4

Come altri hanno menzionato, $3bD è il più breve e $3bDx sarà sufficiente per rimuovere gli spazi bianchi rimanenti, assumendo che sia esattamente uno spazio o una scheda.

Per tenere conto di tutti gli spazi, è possibile utilizzare $3gelD. Questa opzione ha il vantaggio di ripulire correttamente nella maggior parte dei casi, ma non riesce quando una riga contiene esattamente 3 parole perché il movimento 3ge torna alla riga precedente.

Un approccio alternativo è basato su daw. Dal momento che 3daw agisce in avanti, è necessario utilizzare $daw.. o $3b3daw. Per 3 parole, $daw.. è più breve e probabilmente più desiderabile, ma $3b3daw è più Vim-esque e può essere facilmente esteso a più parole.

b, ge e w possono essere sostituiti con B, gE e W per rimuovere parole, invece di parole.

+2

Sfortunatamente, '$ daw..' funziona solo se non si utilizza l'opzione' virtualedit'. Con virtualedit a 'all' o' onemore', l'alternativa è '$ caw ..'. –

+0

Interessante; in tal caso, anche '$ 3bDx' fallirebbe. –

Problemi correlati