Ответ 1
это нормально для вас?
:r! echo $RANDOM
затем
[email protected]:
Если у вас есть определенный язык программирования env, доступный в вашей ОС, вы можете также оценить это утверждение.
Я хочу сгенерировать 10 случайных чисел в буфере.
В Emacs я бы сделал:
<start macro>(random limit) <eval lisp><newline><end macro>
, чтобы определить макрос,
и 9 <execute macro>
, чтобы сгенерировать его 10 раз.
Есть ли способ сделать это в vim?
это нормально для вас?
:r! echo $RANDOM
затем
[email protected]:
Если у вас есть определенный язык программирования env, доступный в вашей ОС, вы можете также оценить это утверждение.
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 @ :), чтобы добавить гораздо больше случайных чисел, разделенных новыми строками.
по теме: