搜索和替换随机数生成

时间:2017-01-13 21:55:01

标签: python vim

我有一个配置文件,用于定义这样的对象集合:

[object 1]
param1 = 1
param2 = 2
rate = 0.01

出于测试目的,我想随机化每个rate参数的值。由于我的开发环境已经是vim,我想找到一个可以搜索rate参数并用随机值替换它的正则表达式。我知道vim对随机数生成并不好,但我也知道你可以使用python来帮助定义自定义函数。但是,我创建的任何函数都会将结果输出到缓冲区,而不是搜索/替换字符串。

我的功能如下:

function! Random()
: python << EOF
: import numpy as np
: print np.random.uniform(0.25,1)
: EOF
: endfunction

和我的正则表达式看起来像:

:s/rate = \d\.\d*/\=Random()

我知道这会用随机数替换整行,但这很容易我以后可以解决。问题是Random()的输出进入消息区域,而不是缓冲区。我该如何纠正?

1 个答案:

答案 0 :(得分:3)

我发现可以通过python中的vim.command()函数访问vim函数的返回值。

我修改了我的功能如下:

function! Random()
: python << EOF
: import vim
: import numpy as np
: vim.command("return {0}".format(np.random.uniform(0.25,1)))
: EOF
: endfunction

这产生了我正在寻找的结果