如果我有一个包含数字列的数据文件
3.14
0.42
6.66
Run Code Online (Sandbox Code Playgroud)
从Vim中有没有办法可以通过加法,减法和除法等操作来操作它们?例如,假设我想在列中为每个数字添加2.1,我该怎么做呢?一个
我可以通过管道连接到例如awk,但我想知道是否有内置方法,我没有在帮助文件中找到任何东西.
Rod*_*Rod 31
将CTRL-R与表达式寄存器一起使用=.
以下命令将2.1添加到一行中的数字:
C
<CTRL-R> =
<CTRL-R> "
+2.1
<ENTER>
Run Code Online (Sandbox Code Playgroud)
与宏结合可以产生一些有趣的结果,例如这个例子.
表达式寄存器对vim很有用.
这是一个更老式的vi方式:让我们说你有一个文件,每行包含一堆数字,你想为每一行添加2.1.
:%s/$/+2.1/<ENTER> - this would append +2.1 to each line.
:1<ENTER> - Goto the beginning of the file
!Gbc<ENTER> - invoke the bc command on each line to do the addition.
Run Code Online (Sandbox Code Playgroud)
一个有用的功能,在本例中恰好很方便,\n 是用表达式替换(请参阅:help sub-replace-\\=)。\n它允许在 \na\xc2\xa0substitute 命令的每个模式匹配上计算表达式,并用结果替换匹配的文本\n该表达式。
例如,要将 2.1 添加到制表符分隔文件的第三列中的所有值,可以使用以下命令。
\n:%s/^\\%([^\\t]*\\t\\)\\{2}\\zs[^\\t]*/\\=str2float(submatch(0))+2.1/\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
8209 次 |
| 最近记录: |