Vimscript'te bir eklenti yapmak veya kodlamak biraz ağır görünüyor. Eklentisiz bir vime ve harici araçlarla iyi bir kompozisyona inanıyorum.
Burada, arabellek kaydedilmemiş olsa bile çalışan user2571881'sine dayanan 1 seferlik bir komut verilmiştir.
:%!awk -F '|' '{print; sum+=$4}; END {print "Total: "sum}'
Bu komutu ileride kullanmak üzere kaydetmek istiyorsanız, onu adlandırmak isteyebilirsiniz:
:command! -range=% -nargs=1 SumColumn <line1>,<line2>!awk -F '|' '{print; sum+=$('<args>' + 1)} END {print "Total: "sum}'
Görsel seçim ile çalışır. Birkaç satır seçer ve komut moduna girerseniz, vim :'<,'>
, görsel seçim için satır aralığı olan komutunuza önek ekler . Böylece koşabilirsiniz:
:'<,'>SumColumn 3
seçili satırların yalnızca 3. sütununu toplar. Varsayılan olarak aralığıdır %
yüzden,
:SumColumn 3
tüm satırların 3. sütununu toplar.
DÜZENLEME: Diğer alan ayırıcılarını belirtmek ve sonuncuya kadar sayılan sütunu varsayılan olarak kullanmak istiyorsanız, komutu içine alabilir bash
ve bağımsız değişkenleri bununla işleyebilirsiniz:
:command! -range=% -nargs=* SumColumn <line1>,<line2>!bash -c 'awk -F ${2:-|} "{print; sum+=\$(${1:-NF - 2} + 1)} END {print \"Total: \"sum}"' sumcolumn <args>
Şimdi,
:SumColumn
tablonun son sütununu "|" ile sayar alan ayırıcılar,
:SumColumn 3
tablonun 3. sütununu "|" ile sayar alan ayırıcılar ve
:SumColumn 3 +
"+" alan ayırıcıları olan bir tablonun 3. sütununu sayar.