Sublimetext3 如何捕获ST3构建的标准输出?

Sublimetext3 如何捕获ST3构建的标准输出?,sublimetext3,Sublimetext3,我的一般问题是,至少对于调试构建文件,我希望看到执行的命令的确切版本。我将在下面举一个例子。我还希望看到发送到STDOUT的执行的输出,因为ST只捕获到STDERR的输出 下面是一个例子,说明我为什么想要这个 我已经创建了构建文件sql.sublime\u build,并将其保存在sublime Packages目录中 { “cmd”:[“psql”、“-U”、“tevs”、“-d”、“tevs”、“-o”、“psql_out.txt”、“-f”、“$file”] } 我在ST3中有一个打开到p

我的一般问题是,至少对于调试构建文件,我希望看到执行的命令的确切版本。我将在下面举一个例子。我还希望看到发送到STDOUT的执行的输出,因为ST只捕获到STDERR的输出

下面是一个例子,说明我为什么想要这个

我已经创建了构建文件sql.sublime\u build,并将其保存在sublime Packages目录中

{ “cmd”:[“psql”、“-U”、“tevs”、“-d”、“tevs”、“-o”、“psql_out.txt”、“-f”、“$file”] }

我在ST3中有一个打开到psql_out.txt的窗格,以便在运行build更改其内容时看到它被重新加载

我有一个文件testbuild.sql,如果我从命令行运行psql并从中获得输入,它就可以工作

当我打开testbuild.sql的ST3选项卡并按command-B时,我看到ST3页脚行在几秒钟内变为“building”,但输出文件中没有任何更改,并且在键入command-B时打开的ST3窗口的底部窗格中没有显示任何内容

只要看看ST3是如何调用命令的,这将非常有帮助

我更喜欢一个解决方案,不涉及修改崇高的文本本身

PS我也尝试了更长的形式

{ “cmd”:[“psql”、“-U”、“tevs”、“-d”、“tevs”、“-o”、“/Users/Wes/Dropbox/Programming/ElectionTransparency/psql_out.txt”、“-f”、“$file”], “工作目录”:“/Users/Wes/Dropbox/Programming/ElectionTransparency” ?}


按顺序处理问题的各个部分:

我希望看到执行的命令的确切版本

只要您的生成系统没有将选项
quiet
设置为
true
,当您执行生成系统时,Sublime就会将它正在运行的内容输出到其控制台
quiet
默认值为
false
,因此只要不设置它,您就可以看到它在运行什么。例如:

您可以通过菜单中的
View>Show console
或按Ctrl键打开控制台+`

我还希望看到发送到STDOUT的执行的输出,因为ST只捕获到STDERR的输出

升华捕获并显示
stdout
stderr
,并将它们显示在构建结果面板中。最常见的原因是程序缓冲了它的输出,这使得它在程序终止或生成一大堆输出之前不会出现在构建结果中

假设您实际上仍然希望生成文件的输出,并在“生成结果”窗口中看到它,下面的内容应该可以使用(注意:我不使用psql,也不熟悉psql):

{
“shell_cmd”:“psql-U tevs-d tevs-f$file | tee psql_out.txt”,
“选择器”:“source.sql”
}
这将使用
shell\u cmd
而不是
cmd
,从而允许使用shell重定向。通过不指定
-o
psql将其输出发送到
stdout
(如果不指定,则需要设置适当的参数以使其执行此操作)。
tee
程序将
stdin
传输到
stdout
并将其保存到您提供的文件列表中,以便您可以在终端中查看输出,同时也将其保存到文件中


在尝试构建时,从ST3获取其他诊断信息也会很有帮助。例如,在本文的一个迭代中,我有一个.sublime_构建文件,其中包含错误的JSON语法。如果被告知JSON没有解析,那就太好了

对于构建系统,没有直接的方法可以做到这一点;如果它没有解析,它就不会出现在构建系统菜单中,并且与其他类似的文件不同,Sublime不会抛出错误。但是,当语法高亮显示认为语法无效时,它会给您提示,这会有所帮助(此处
shell\u cmd
行缺少一个尾随逗号,因此语法在以下冒号字符处出现错误):


如果您没有看到这些错误提示,可能是因为您使用的配色方案无法处理它们。

在尝试构建时,从ST3获取其他诊断信息也会很有帮助。例如,在本文的一个迭代中,我有一个.sublime_构建文件,其中包含错误的JSON语法。如果被告知JSON没有解析,那就太好了。非常彻底的回答。谢谢对于其他新手(可能还有ST3文档编写者)来说,这里的重要教训在ST3文档中并不明显:(1)查看控制台,以了解结果窗口中没有显示的信息;(2) “cmd”不启用shell提供的功能,但“shell_cmd”启用!再次感谢OdatNurd@WesR用于突出显示
.sublime build
文件(以及其他sublime格式,如
.sublime preferences
),安装软件包,并且各种语法选项将在PackageDev下的语法菜单中可用。作为我自己的一个项目的插件,my对各种PackageDev格式都有特定的支持,因此您可以轻松地使用它。