2014-06-26 21 views
9

Come posso spostare avanti/indietro il numero di caratteri dopo la fine della riga in VIM?Sposta avanti/indietro il numero di caratteri dopo la fine della riga in VIM

ho conosciuto posso tipo, ad esempio,

25l

e andare in avanti 25 caratteri, ma questo comando ferma sempre alla fine di una linea. Inoltre, c'è 25go, ma questo va avanti dall'inizio del buffer, non in avanti dalla posizione corrente del cursore. Voglio andare avanti con un certo numero di caratteri, inclusi i caratteri di fine riga.

risposta

9

penso che quello che stai cercando è spazio per spostarsi in avanti e backspace fare passi indietro.

spazio continuerà nella riga seguente. Se vuoi aggiungere spazi nella riga corrente invece di passare a quella successiva, l'opzione :set virtualedit=onemore è l'opzione giusta per te.

+0

Questa è la risposta giusta. Ad esempio, 500 [barra spaziatrice] muove in avanti di 500 spazi e al contrario del tasto L si sposta oltre la fine della riga. –

4

È possibile impostare l'opzione virtualedit:

:set ve=all 

editing virtuale significa che il cursore può essere posizionato dove non c'è vero carattere.

2

L'opzione 'whichwrap' determina quali movimenti possono spostare il cursore su un'altra linea. Per impostazione predefinita, nessuno dei movimenti sinistra/destra lo fa.

L'inclusione di h,l non è consigliata, poiché alcune macro e plug-in possono dipendere dal comportamento originale e interrompere la chiamata per testare e decidere. Ma dovrebbe essere sicuro per includere i tasti cursore e via (quest'ultima coppia è per la modalità di inserimento e facoltativo)

:set whichwrap+=<,>,[,] 

Quindi, è possibile spostare da 5 caratteri attraverso la linea di fine via .

Se il carattere di nuova riga viene conteggiato o meno dipende dall'opzione 'virtualedit'. Per includere il ritorno a capo:

:set virtualedit=onemore 
1

Un'altra possibilità (che non necessita di opzioni che cambia, ma è più verboso) è quello di utilizzare la funzione search(). Quanto segue sposta il cursore a destra di 6 caratteri. Lo fa corrispondenti dalla posizione corrente (\%#) 7 caratteri includendo i fine riga (\_.):

:call search('\%#\_.\{7}', 'ce')