2013-08-13 14 views
6

ich in der Regel mit Dateien umgehen, die wie folgt aussehen:vim Spalte immer mehr

0.98 3.45 
2.45 3.90 
. 
. 
. 
4.56 8.45 

können mit 100 Zeilen sagen. Ich möchte so etwas bekommen:

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

mit einer ersten Spalte von ganzen Zahlen. Normalerweise erzeuge ich eine Spaltendatei mit nur den Zahlen 1,2 ... 100 und wähle dann diesen Block und Einfügen in die Datei mit zwei Spalten. Da die Anzahl der Zeilen fast immer unterschiedlich ist, scheint mein Ansatz sehr langsam zu sein.

Haben Sie Vorschläge?

Danke.

+0

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

+0

@Edward Diese Antworten sprechen jedoch nicht über die Ausrichtung. – mhinz

+1

@mhinz Eigentlich die Frage erwähnt keine Ausrichtung, und das Beispiel ist nicht ausgerichtet. (Außerdem habe ich getippt, während du warst und deine Antwort nicht gesehen hast.) Aber wenn ich es tun würde, würde ich auch die Zahlen rechtsbündig haben wollen, also bin ich froh, dass du mir etwas gezeigt hast, was ich nicht getan habe kennt. Prost. – Edward

Antwort

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

Weitere Informationen:

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

ist eine schnelle Lösung. Gefolgt von

:%s/^\s*//g 

es gibt Ihnen, was Sie ziemlich schnell wollen.

+0

wenn externer Befehl/Werkzeug benutzt wird. 'nl' wäre besser als' cat -n' es bietet Formatoptionen – Kent

+0

@Kent, Sie haben vollkommen Recht. Wir wissen jedoch nicht einmal, ob das OP Zugriff auf "cat" oder "nl" hat, so dass ihm weder der eine noch der andere nützlich sein kann. – romainl

2

Ich finde VisIncr unschätzbar für ähnliche Operationen (hier ist the GitHub version für diejenigen, die Vundle oder NeoBundle verwenden). Das Plugin "erleichtert das Erstellen einer Spalte mit steigenden oder fallenden Zahlen, Datumsangaben oder Tagnamen". Ein Beispiel für Zeilennummern folgt:

im Modus visuellen Block die erste Spalte der Datei auswählen:

gg<C-v>G 

Setzen einer Startnummer (in diesem Fall 1) und einem Spaltentrennzeichen (Ich gehe davon aus Tab hier):

I1<Tab><Esc> 

Wählen Sie erneut die erste Spalte der Datei:

gv 

Führen Sie einen VisIncr Befehl, um die Zahlen zu erhöhen:

:I<CR> 

Sie könnten rechts rechtfertigen die Zahlen statt mit einem anderen Befehl:

:II<CR> 

Inkrementieren Daten, Briefe, hex, und römische Zahlen ist genauso einfach.