Ein Plugin zu erstellen oder dies in Vimscript zu kodieren, scheint ein bisschen schwer. Ich glaube an ein Plugin-freies Vim und eine gute Komposition mit externen Tools.
Hier ist ein einmaliger Befehl, der auf dem Befehl user2571881 basiert und auch dann funktioniert, wenn der Puffer nicht gespeichert wurde.
:%!awk -F '|' '{print; sum+=$4}; END {print "Total: "sum}'
Wenn Sie diesen Befehl für die zukünftige Verwendung speichern möchten, können Sie ihn benennen:
:command! -range=% -nargs=1 SumColumn <line1>,<line2>!awk -F '|' '{print; sum+=$('<args>' + 1)} END {print "Total: "sum}'
Es funktioniert mit visueller Auswahl. Wenn Sie einige Zeilen auswählen und in den Befehlsmodus wechseln, stellt vim Ihrem Befehl :'<,'>
den Zeilenbereich für die visuelle Auswahl voran. So können Sie laufen:
:'<,'>SumColumn 3
und es wird nur die 3. Spalte der ausgewählten Zeilen summiert. Standardmäßig ist der Bereich %
also
:SumColumn 3
summiert die 3. Spalte aller Zeilen.
BEARBEITEN: Wenn Sie in der Lage sein möchten, andere Feldtrennzeichen anzugeben und die Spalte standardmäßig bis zur letzten gezählt zu haben, können Sie den Befehl abdecken bash
und die Argumente damit behandeln, wie folgt:
:command! -range=% -nargs=* SumColumn <line1>,<line2>!bash -c 'awk -F ${2:-|} "{print; sum+=\$(${1:-NF - 2} + 1)} END {print \"Total: \"sum}"' sumcolumn <args>
Jetzt,
:SumColumn
zählt die letzte Spalte einer Tabelle mit "|" Feldtrennzeichen,
:SumColumn 3
zählt die 3. Spalte einer Tabelle mit "|" Feldtrennzeichen und
:SumColumn 3 +
zählt die 3. Spalte einer Tabelle mit "+" Feldtrennzeichen.