Sublime Text在Ubuntu / Linux上说“ No Build System”

时间:2018-09-18 14:48:05

标签: javascript linux ubuntu sublimetext3

最近我切换到 Ubuntu / Linux 并搜索了一些不错的文本编辑器,我发现了 Sublime Text ,我是编码的新手,并且我正在使用Notepad ++窗口。

我下载了崇高的文本后,我尝试在javascript中编写一些代码以查看其是否有效,但显示“ 没有构建系统”,当我寻找它时,我没有找到任何代码Linux指南...在Notepad ++中,我要做的就是单击run和ta da,输出屏幕在那里。

我对linux或sublime文本了解不多,我的确切问题是我如何运行并在输出屏幕中看到我的代码,目前我正在使用 JavaScript ,但我没有知道什么是“构建系统”时,我只想在崇高的文本中键入一些基本代码并在屏幕上看到结果,因此,如果您有帮助,我将不胜感激。

这是图像的问题:

An image demonstrating the problem

1 个答案:

答案 0 :(得分:0)

为了解释您的问题,首先必须意识到,尽管该功能称为build,但它与实际运行 Build 一样,其在运行解释程序方面的作用同样重要。 em> 任何东西;与其说它是“构建”工具,不如说是“运行某些外部程序来做某事”工具。

话虽如此,Sublime预先安装了一些用于各种语言的不同构建系统,但是JavaScript并不是其中之一。可能是因为通常不清楚某个特定的JavaScript文件是用于浏览器中还是通过node之类的东西来执行,但这只是一个猜测。

在您的情况下,文本No build system告诉您,您已经告诉Sublime为要编辑的文件类型自动选择合适的构建系统,但是找不到它,并且所以它无能为力。

解决此问题的方法是安装包含JavaScript构建系统的第三方软件包(请参见Package Control)或自己创建一个。

Sublime的一个好的经验法则是,如果有一条命令,您可以从命令提示符处执行,它将执行您想要的操作,并且您不需要与该命令进行交互(即,它不需要(在执行某项操作之前或执行过程中询问您),您可以设置Sublime为您运行该命令。

可以用来执行JavaScript的一个工具是NodeJS,它提供了一个名为node的命令,可以在安装时执行JavaScript文件:

tmartin:dart:~> cat sample.js 
console.log("Hello, world!")
tmartin:dart:~> node sample.js 
Hello, world!

由于这是我们可以从终端执行的命令来执行所需的操作,并且不需要我们与其交互以告诉它如何执行操作,因此我们可以建立一个构建系统来使用它

作为此操作的示例,请从菜单中选择Tools > Build System > New Build System...,然后用以下代码替换文件的内容,然后将其保存在Sublime将默认设置为的位置,例如{ {1}}:

JavaScript.sublime-build

这只是说,执行此构建时,Sublime应该使用命令{ "shell_cmd": "node \"${file}\"", "selector": "source.js" } 并为其提供当前正在编辑的文件的名称,并且该构建系统适用于node文件类型为source(JavaScript)。

在适当的位置上,如果选择jsTools > Build System > Automatic(菜单中的名称反映了您用于文件的名称),则应该能够使用 Ctrl + B 执行程序:

注意: :这是一张较旧的图片,使用Tools > Build System > JavaScript而非cmd;这两个示例的工作方式相同,但是除非有充分的理由,否则建议使用shell_cmd

Example Sublime Build

您可以查看official documentation on build systems,以获取有关构建系统中可用选项的更多信息。

重要说明:

  • 如果出现类似shell_cmd之类的错误,则意味着您输入错误的命令,未安装该程序或需要告诉计算机(从而使Sublime)在哪里。通过修改您的command not found来找到它;您的操作方式是系统特定的。

  • 在尝试运行新文件之前,请确保至少手动保存一次。在执行此操作之前,该文件尚未在磁盘上并且无法执行,这可能导致发生奇怪的错误。确保选中PATH以确保在构建时磁盘上的文件始终是最新的,这是一个好主意,但这不会保存尚未命名的新文件。

  • 我说了两次,但是需要重复。如果您需要以任何方式与 进行命令交互,则此命令将对您不起作用(无需进行任何更改)。这包括您是否尝试执行一个希望与之交互的脚本(例如,它询问您的名字,然后打印出来,诸如此类)。在这种情况下,您的程序似乎会永远挂起,因为它正在等待您无法提供的输入。