我想在缓冲区中生成10个随机数。
在Emacs我会这样做:
<start macro>(random limit) <eval lisp><newline><end macro>
定义宏
和9 <execute macro>
生成10次。
我有办法在vim中做到这一点吗?
答案 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 @ :)以添加更多由新行分隔的随机数。
相关: