我如何将命令应用于Vim中选择的每一行并替换为结果(如电子表格)



我有一个值表(实际上是用LaTeX标记编写的),我只能使用Ctrl+Q

选择一列例如,

% Select the second column only ....
1.75130211563   & 0.0299693961831 \
1.72144412106   & 0.0181406611688 \
1.92102386609   & 0.0247758598737 \
1.56512790839   & 0.0137107006809 \
1.75263937567   & 0.017155656704  \
1.99501744437   & 0.39550649953   \
1.96862597164   & 0.030198328601  \
...

我只想减少所选数字的小数位数(例如,对于所选的每个数字,我应用round(NUMBER * 100)/100以获得四舍五入到小数点后2位的数字)。要做到这一点,我需要首先有一个变量来引用NUMBER(该行上的数字),并将当前选择替换为输出。

我该怎么做?

如果这是不可能的,我可以复制列到一个实际的电子表格程序,并在那里编辑它,但我如何将它粘贴回原位?

更新:我已经接受了答案。它不像我希望的那样整洁,但它确实有意义。谢谢!

另一个更新:要从外部电子表格粘贴一列,将该列粘贴到:new缓冲区,使用Ctrl+Q选择数据并将其拉入寄存器。移动到数据表的最上面一行和适当的列,并使用P粘贴。

你在找这个吗?

:'<,'>s#%Vd*.d+#=round(str2float(submatch(0))*100)/100#g

这似乎可以工作:

:'<,'>:s/d+.d+/=printf("%.2f", str2float(submatch(0)))/

。直观地选择第一列并发出上面的命令。

% Select the second column only ....
1.75   & 0.0299693961831 \
1.72   & 0.0181406611688 \
1.92   & 0.0247758598737 \
1.57   & 0.0137107006809 \
1.75   & 0.017155656704  \
2.00   & 0.39550649953   \
1.97   & 0.030198328601  \

最新更新