在快速修复列表中显示程序结果

在快速修复列表中显示程序结果

我想在 Vim 中编译一个程序,运行它,并在 quickfix 列表中显示输出。我认为这应该可行:

:cgetexpr "!cc -o %:r % && ./%:r"

但是,这只会在快速修复列表中显示以下内容:

|| !cc -o %:r % && ./%:r

我也尝试过:

:cgetexpr execute "!cc -o %:r % && ./%:r"

这将引发一个错误:

E121: Undefined variable: execute
E15: Invalid expression: execute "!cc -o %:r % && ./%:r"

如果我省略引号,就会显示类似的错误:

:cgetexpr execute !cc -o %:r % && ./%:r

是否有可能做到这一点?

答案1

如上所述:help :cexpr,后面的表达式:cexpr可以是字符串或列表。您尝试过的所有表达式都不会计算为输出的字符串或列表cc。但是,:help :cexpr给出了一个可能对您有帮助的示例。

:cexpr system('grep -n xyz *')

:cgetexpr就像:cexpr但不会跳到第一个错误。

我证实了

:cgetexpr system("cc hello.c")

可以,但是将变量放入该命令中需要做更多的工作。下面将当前文件的名称插入到命令中。

:exe 'cgetexpr system("cc '.expand('%').'")'

相关内容