2011-10-26 10 views
9

Mi capita spesso di eliminare, Yank, e incollare con qualcosa di simile:Qual è il modo migliore in Vim per operare su intervalli relativi in ​​modalità visiva?

:3,6y 

Dal Vim 7, sono passato ad usare i numeri di riga relativi. Trovo molto più facile da usare la numerazione linea relativa con comandi come h,j,k,l ecc

Poiché il passaggio a relativa numerazione delle righe, ho difficoltà di operare su campi assoluti (es. :3,6y). Mi ci vuole troppo tempo per determinare quali numeri di linea assoluti devo selezionare poiché Vim mostra numeri di linea relativi.

Qual è il modo migliore/più veloce per utilizzare la selezione visiva su un intervallo se la configurazione mostra la relativa numerazione delle righe? Ingenuamente, sto cercando qualcosa del tipo:

:-2,+8y 

(yank the lines from 2 lines above my current position to 
8 lines below my current position.) 
+2

Mi spiace, ma in che modo esattamente cancelli, strattoni e incolli in modo visivo usando qualcosa come: ': v 3,6y'? Non riesco a capire come questo comando si riferisce alla modalità visiva. – sidyll

+1

Opps, non intendevo che questa domanda fosse formulata per la modalità visiva. L'ho modificato in modo che ora sia corretto. Grazie. – drbunsen

risposta

9

Hai provato la tua ingenua cosa?

:-2,+8y equivale a :.-2,.+8y e dovrebbe fare quello che vuoi.

Si noti che se non si specifica un numero, si assume 1, quindi: :,+y significa .,.+1 y: corrente corrente e riga successiva.

Su :help range non è ben spiegato. Le parti rilevanti sono qui:

Line numbers may be specified with:  *:range* *E14* *{address}* 
    [...] 
    .  the current line    *:.* 
    [...] 
Each may be followed (several times) by '+' or '-' and an optional number. 
This number is added or subtracted from the preceding line number. If the 
number is omitted, 1 is used. 

Quello che il documento non dice è che se la + r - non è preceduto con qualsiasi cosa, . è assunto.

+0

Grazie, questo è esattamente quello che stavo cercando. Non ho capito l'uso del periodo dai doc e stavo ottenendo un 'intervallo indietro dato, OK per scambiare (y/n)' quando si usano numeri negativi. – drbunsen

Problemi correlati