Я :r !uuidgen
часто использую, чтобы вставить новый UUID в буфер. Это работает, но я обычно пытаюсь вставить uuid между кавычками и :r !uuidgen
печатать uuid на новой строке.
Чтобы обойти эту проблему, я в настоящее время использую простую раскладку клавиш:
nnoremap <C-u> mm:r!uuidgen<CR>dW"_dd`mp
Этот макрос устанавливает метку mm
, вставляет uuid r!uuidgen
, удаляет вставленный uuid dW
, удаляет лишнюю строку "_dd
, возвращается к метке BACKTICKm
и, наконец, вставляет uuid p
.
Есть ли способ :r
сразу после курсора без этого макроса / связывания клавиш, который тратит впустую регистр?
Ответы:
Вы можете использовать регистр выражений
"=
иsystem()
:Это будет выглядеть так в режиме вставки:
или с отображением выражения:
источник
В режиме вставки вы можете нажать Ctrl-R, а затем набрать:
Обратите внимание, что это добавит завершающий символ новой строки, потому что это то, что
uuidgen
выводит; чтобы исправить это, мы могли бы использовать:Удалить перевод строки.
От
:help i_CTRL-R
:Чтобы привязать это к Ctrl-uпримеру, вы можете использовать:
источник
Еще один, с
:python
:Вы можете отобразить как:
UUID генерируются модулем Python UUID .
источник
Это, возможно, менее предпочтительно, чем использование решения с чистой vim, однако, если вы используете диспетчер сниппетов, такой как Ultisnips, вы можете попробовать добавить фрагмент, например, такой:
Таким образом, вы можете ввести
uuid
и нажать на триггер расширения в режиме вставки, иuuid
он будет заменен выводом соответствующей команды оболочки. Это, конечно, может быть легко адаптировано для других команд и расширено мощными способами, как описано в документах Ultisnips.источник