使用多个引号将shell输出插入到vim中
整合此shell命令时遇到问题:使用多个引号将shell输出插入到vim中,vim,Vim,整合此shell命令时遇到问题: uuidgen | tr -d '\n' | awk '{printf("\"%s\"", $0);}' 输入如下脚本: :command UUID execute "normal! \"=system('...')\<CR>p" :命令UUID执行“正常!\”=system(“…”)\p 我目前的尝试是: :command UUID execute "normal! \"=system('uuidgen | tr -d \'\n\' | aw
uuidgen | tr -d '\n' | awk '{printf("\"%s\"", $0);}'
输入如下脚本:
:command UUID execute "normal! \"=system('...')\<CR>p"
:命令UUID执行“正常!\”=system(“…”)\p
我目前的尝试是:
:command UUID execute "normal! \"=system('uuidgen | tr -d \'\n\' | awk \'{printf(\"\"%s\"\", $0);}\'')\<CR>p"
:命令UUID执行“正常\“=系统('uuidgen | tr-d\'\n\'\awk\'{printf(\“\%s\”,$0);}\'')\p”
当我运行命令时,它返回
Unknown mark
。我想我最终逃脱了地狱,不知道如何恢复。我觉得使用systemlist()
逃离地狱…;-]
escape('uuidgen | tr -d ''\n'' | awk ''{printf("\"%s\"", $0);}'')','\\/.*$^~[]')
注意第一部分中的双单引号。第二部分是用于转义的通用代码段
escape('string','\\/.*$^~[]')
从这里开始应该很容易这太棒了。您知道为什么put命令仍然将其插入新行吗?
:put
与大多数(所有?)ex命令一样是按行的。请参见:h行
:put
是“强制”寄存器按行的一种常用方法。通过键映射,它工作得非常好。我很好奇,是否有另一个命令可以输入,这样如果我只输入:UUID,我会得到与只按键相同的行为?命令是基于行的,因此使:UUID
字符明智将是“奇怪的”。您可以使用:normal
,例如命令来执行此操作!UUID执行“normala\='\'”.systemlist('uuidgen')[0].\''\'”
,然后我将继续使用这个习惯用法。
escape('uuidgen | tr -d ''\n'' | awk ''{printf("\"%s\"", $0);}'')','\\/.*$^~[]')
escape('string','\\/.*$^~[]')