我有一个配置文件,用于定义这样的对象集合:
[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()的输出进入消息区域,而不是缓冲区。我该如何纠正?
答案 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
这产生了我正在寻找的结果