我想运行一些$RANDOM_COMMAND
,并在quickfix窗口(:copen
/ :cfile
)中打开(“通过管道”)结果。这是可能的,而无需在vimrc中定义一些命令吗? (希望以某种“简单的方式”,即我希望能够记住这一点,所以我可以在任何带有vanilla vim的新随机盒子上运行它,我必须登录。)
编辑最初不知道如何更准确地表达“简单方式”,但现在我至少部分地知道了:我更喜欢答案1,最多2线
:call setqflist(split(system('RANDOM_COMMAND'), '\n'))
:copen
但似乎无论如何都不起作用:/( mucho 丑陋)
答案 0 :(得分:2)
一种方法:
:set makeprg=$RANDOM_COMMAND
:make
:copen
或者,执行命令并在临时文件中捕获输出:
:! $RANDOM_COMMAND > out
:cfile out
:copen
无论如何,输出必须与'errorformat'
设置匹配,以便Vim可以解析文件名和行号(如果需要那些;但除此之外,你也可以使用暂存缓冲区) quickfix list)。
要使其成为 oneliner ,然后稍微缩短,您可以:
:set mp=RANDOM_COMMAND | make | copen
命令中的空格必须使用反斜杠进行转义;此外,make
命令可以接受参数,这些参数将被扩展为$*
;这是一个更为全面的例子:
:set mp=mycommand\ -d\ $PWD\ $* | make myarg | copen
或者,可以使用:set grepprg
和:grep
执行类似的操作,只需更短的行:
:set gp=mycommand\ -d\ $PWD\ $* | gr myarg | copen
答案 1 :(得分:0)
嗯,最后通过阅读regular vimdoc for quickfix window找到了最简单的解决方案:
:cex system('$RANDOM_COMMAND') | copen
(| copen
部分是可选的)。
仍然,Ingo Karkat's solution可以具有可用性优势,因为在连续运行中它足以缩短运行时间:grep那里。