如何在缓冲区中生成随机数?

时间:2013-12-06 17:58:17

标签: vim vi

我想在缓冲区中生成10个随机数。

在Emacs我会这样做:

<start macro>(random limit) <eval lisp><newline><end macro>定义宏

9 <execute macro>生成10次。

我有办法在vim中做到这一点吗?

2 个答案:

答案 0 :(得分:26)

这对你好吗?

:r! echo $RANDOM

然后

9@:

如果您的操作系统上有某些编程语言环境,您也可以评估这些语句。

答案 1 :(得分:10)

Vim没有提供原生随机生成器,但是如果你使用Python编译vim,下面的方法会在你的行尾添加一个随机数字:

:py import vim, random; vim.current.line += str(random.randint(0, 9))

注意:要检查您的vim是否支持Python,请尝试::echo has('python')(1表示是)。

你也可以使用提供$RANDOM变量的shell作为Kent建议(与bash / ksh / zsh一起使用),它返回一个伪随机数(0-32767),例如:

:put =system('echo $RANDOM')

或:

:r! od -An -td -N1 /dev/urandom

在Windows上,您已安装Cygwin / MSYS / SUA,或使用%RANDOM%变量作为Carpetsmoker建议。

如果您无法访问shell和Python,则对于变通方法,您可以使用当前时间戳中的最后几位数字,例如:

:put =reltimestr(reltime())[-2:]

注意:如果您经常使用它,请编写一个简单的函数return reltimestr(reltime())[-4:]

  

注意:上述方法仅返回伪随机整数,该整数不应用于生成加密密钥。


要添加更多随机数,请按 @ 重新执行该命令。或者用数字作为前缀(例如 10 @ )以添加更多由新行分隔的随机数。


相关: