Вставьте вывод оболочки в vim с множеством кавычек - PullRequest
0 голосов
/ 08 мая 2018

У меня проблемы с объединением этой команды оболочки:

uuidgen | tr -d '\n' | awk '{printf("\"%s\"", $0);}'

в Vimscript следующим образом:

:command UUID execute "normal! \"=system('...')\<CR>p"

Моя текущая попытка:

:command UUID execute "normal! \"=system('uuidgen | tr -d \'\n\' | awk \'{printf(\"\"%s\"\", $0);}\'')\<CR>p"

, которая возвращаетUnknown mark когда я запускаю команду.Я полагаю, что мне удалось избежать ада, и я не знаю, как прийти в себя.

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

убегая от ада ...; -]

escape('uuidgen | tr -d ''\n'' | awk ''{printf("\"%s\"", $0);}'')','\\/.*$^~[]')  

Примечание двойные одинарные кавычки в первой части. Вторая часть - универсальный фрагмент для побега.

escape('string','\\/.*$^~[]')

Отсюда легко

0 голосов
/ 08 мая 2018

Мне кажется, что это можно сделать проще с systemlist()

command! UUID put='\"'.systemlist('uuidgen')[0].'\"'
nnoremap <key> "='"'.systemlist('uuidgen')[0].'"'<cr>p
inoremap <key> <c-r>='"'.systemlist('uuidgen')[0].'"'<cr>

Если вы не возражаете против ', тогда вы можете использовать функцию string(), которая была бы еще проще.

Для получения дополнительной помощи см .:

:h systemlist()
:h string()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...