首页 > 解决方案 > 用许多引号将 shell 输出插入 vim

问题描述

我在整合这个 shell 命令时遇到了麻烦:

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当我运行命令时返回。我想我最终逃离了地狱,不知道如何恢复。

标签: vim

解决方案


我觉得这可以更简单地完成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()

推荐阅读