[英]How do I map Vim colon search and replace command to work just with visual selection?
[英]How do I apply a command to every line in a selection in Vim and replace with the result (like a spreadsheet)?
我有一个值表(实际上是用 LaTeX 标记编写的),我可以 select 一列只使用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
(该行上的数字),并将当前选择替换为 output。
我该怎么做呢?
此外,如果这不可能,我可以将该列复制到实际的电子表格程序中并在那里进行编辑,但是如何将其粘贴回原位?
更新:我已经接受了答案。 它不像我希望的那样整洁,但它确实有道理。 谢谢!
另一个更新:要从外部电子表格中粘贴列,请将列粘贴到:new
缓冲区中,select 使用Ctrl+Q
将数据粘贴到寄存器中。 移动到数据表中的第一行和相应的列,然后使用P
粘贴。
你在找这个吗?
:'<,'>s#\%V\d*\.\d\+#\=round(str2float(submatch(0))*100)/100#g
这似乎有效:
:'<,'>:s/\d\+\.\d\+/\=printf("%.2f", str2float(submatch(0)))/
即视觉上 select 第一列并发出上面的命令。
% 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 \\
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.