Sublime Text在Ubuntu / Linux上说“没有构建系统”

问题描述 投票:0回答:1

最近我切换到Ubuntu / Linux并搜索了一些优秀的文本编辑器,我找到了Sublime Text,我是编码的初学者,我在Windows中使用Notepad ++。

在我下载了sublime文本之后,我试着在javascript中编写一些代码,看看它是否有效,但是它说“没有构建系统”,当我找到它时,我没有找到任何Linux指南...在Notepad ++中我所有的必须做的是点击运行和ta da,输出屏幕就在那里。

我不太了解linux或sublime文本,我的确切问题是我如何运行并在输出屏幕中查看我的代码,目前我正在使用Javascript,我不知道什么是“构建系统”,我只想在sublime文本中键入一些基本代码并在屏幕上看到结果,所以如果你帮助我,我将非常感激。

这是问题的图像:

An image demonstrating the problem

javascript linux ubuntu sublimetext3
1个回答
0
投票

为了解释你的问题,首先要认识到虽然这个特性被称为build,但它同样适用于运行解释程序,就像实际构建任何东西一样;我认为它不是一个“构建”工具,更像是“运行一些外部程序来做某事”工具。

话虽如此,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默认为JavaScript.sublime-build的位置:

{
    "shell_cmd": "node \"${file}\"",
    "selector": "source.js"
}

这简单地说,在执行此构建时,Sublime应该使用命令node并为其提供您当前正在编辑的文件的名称,并且此构建系统适用于source(JavaScript)类型的js文件。

有了这个,如果你选择Tools > Build System > AutomaticTools > Build System > JavaScript(菜单中的名称反映了你用于文件的名称),你应该可以使用Ctrl + B来执行你的程序:

注意:这是一个较旧的图像,使用cmd而不是shell_cmd;两个例子都会以同样的方式工作,但shell_cmd是推荐的方式,除非你有令人信服的理由不这样做。

Example Sublime Build

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

重要笔记:

  • 如果你得到像command not found或类似的错误,这意味着您输入的命令不正确,未安装该程序,或者您需要通过修改PATH告诉您的计算机(以及Sublime)在哪里找到它;你是如何做到这一点是系统特定的。
  • 在尝试运行之前,请确保至少手动保存一个新文件;在你做之前,文件还没有在磁盘上,并且无法执行,这可能导致奇怪的错误发生。确保检查Tools > Save all on build以确保在构建时磁盘上的文件始终是最新的是一个好主意,但这不会保存尚未具有名称的新文件。
  • 我说过两次,但是要重复一遍;如果您需要以任何方式与命令进行交互,这将不适合您(无需更改)。这包括如果您尝试执行希望与其进行交互的脚本(例如,它会询问您的姓名然后打印它等等)。在这种情况下,您的程序似乎永远挂起,因为它正在等待您无法提供的输入。
© www.soinside.com 2019 - 2024. All rights reserved.