Как генерировать случайные числа в буфере?

Я хочу сгенерировать 10 случайных чисел в буфере.

В Emacs я бы сделал:

<start macro>(random limit) <eval lisp><newline><end macro>, чтобы определить макрос,

и 9 <execute macro>, чтобы сгенерировать его 10 раз.

Есть ли способ сделать это в vim?

Ответ 1

это нормально для вас?

:r! echo $RANDOM

затем

[email protected]:

Если у вас есть определенный язык программирования env, доступный в вашей ОС, вы можете также оценить это утверждение.

Ответ 2

Vim не предлагает собственный генератор случайных чисел, однако, если вы скомпилировали vim с помощью Python, следующий метод добавит случайную цифру в конец вашей строки:

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

Примечание. Чтобы проверить, поддерживает ли ваш vim Python, попробуйте: :echo has('python') (1 для да).

Вы также можете использовать оболочку, которая предлагает переменную $RANDOM, предложенную Кентом (работает с bash/ksh/zsh), которая возвращает псевдослучайное (0-32767), например:

:put =system('echo $RANDOM')

или

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

В Windows вы должны установить Cygwin/MSYS/SUA или использовать переменную %RANDOM% в качестве Carpetsmoker.

Если у вас нет доступа к оболочке и Python, как к обходному методу, вы используете последние несколько цифр из текущей метки времени, например:

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

Примечание. Если вы используете его довольно часто, напишите простую функцию, которая будет return reltimestr(reltime())[-4:].

Примечание. Выше методы возвращают только псевдослучайное целое число, которое не должно использоваться для генерации ключа шифрования.


Чтобы добавить больше случайных чисел, нажмите @ :, чтобы снова повторить команду. Или префикс с номером (например, 10 @ :), чтобы добавить гораздо больше случайных чисел, разделенных новыми строками.


по теме: