2013-08-13 13 views
6

di solito mi occupo di file che assomigliano a questo:vim colonna di numeri crescenti

0.98 3.45 
2.45 3.90 
. 
. 
. 
4.56 8.45 

diciamo con 100 linee. Vorrei ottenere qualcosa del genere:

1 0.98 3.45 
2 2.45 3.90 
. 
. 
. 
100 4.56 8.45 

con una prima colonna di numeri interi. Quello che faccio di solito è generare un file di colonna con solo i numeri 1,2 ... 100 e quindi selezionare quel blocco e incollarlo nel file con due colonne. Poiché il numero di righe è quasi sempre il mio approccio sembra essere molto lento.

Avete qualche suggerimento?

Grazie.

+0

Domanda duplicata: http://stackoverflow.com/questions/252766/add-line-numbers-in-vim – Edward

+0

@Edward Tuttavia, queste risposte non parlano dell'allineamento. – mhinz

+1

@mhinz In realtà, la domanda non menziona l'allineamento e l'esempio non è allineato. (Inoltre stavo scrivendo mentre eri e quindi non ho visto la tua risposta.) Ma se lo stavo facendo, vorrei anche i numeri allineati a destra, quindi sono felice che tu mi abbia mostrato qualcosa che non ho conoscere. Saluti. – Edward

risposta

6
:%s/^/\=printf('%-3d ', line('.')) 

Maggiori informazioni:

:help :s\= 
:help printf() 
:help line() 
3
:%!cat -n 

è una soluzione rapida. Seguito da

:%s/^\s*//g 

ti dà quello che vuoi abbastanza rapidamente.

+0

se utilizzare il comando/strumento esterno. 'nl' sarebbe meglio di' cat -n' fornisce le opzioni di formato – Kent

+0

@Kent, hai perfettamente ragione. Tuttavia, non sappiamo nemmeno se l'OP ha accesso a 'cat' o' nl', quindi né l'uno né l'altro possono essergli utili. – romainl

2

Trovo che il valore VisIncr sia inestimabile per operazioni simili (qui è the GitHub version per coloro che utilizzano Vundle o NeoBundle). Il plugin "facilita la creazione di una colonna di numeri, date o nomi giornalieri in aumento o in diminuzione". Un esempio di numeri di riga aggiunta segue:

selezionare la prima colonna del file in modalità di blocco visiva:

gg<C-v>G 

Inserire un numero iniziale (1 in questo caso) e un separatore di colonna (sto assumendo Tab qui):

I1<Tab><Esc> 

Selezionare nuovamente la prima colonna del file:

gv 

eseguire un comando VisIncr di aumentare il numero:

:I<CR> 

Si potrebbe destro giustificare i numeri invece con un comando diverso:

:II<CR> 

date addizionante, lettere, esagonale, e numeri romani è altrettanto facile.

Problemi correlati