我最近从 Notepad++ 切换到了 Sublime Text 2,它太棒了。有一件事我很欣赏,那就是从同一个环境编译我的文件。Sublime text 有一个控制台和一个命令面板,但它们都不能执行常规的 Windows 命令。
例如,我只是想从 Sublime Text 内部的控制台javac program.java
运行。java program
这样的事还有可能实现吗?如果可以,该怎么做?
答案1
“显示控制台”按钮显示嵌入到 Sublime Text 中的 Python 控制台,而不是通常的 OS 终端。如果您想在包含编辑文件的文件夹中打开终端,您可以尝试Sublime 终端包裹。
编辑:@Darren:如果是这样,那么请在互联网上查找如何从 python shell 运行终端命令,Google 有很多链接。
答案2
如果你主要想编译和运行 Java 程序,那么构建系统(参见完整参考资料这里)就是您要找的内容。从Preferences
菜单中,选择Browse Packages...
并导航到Packages/Java
文件夹,然后打开JavaC.sublime-build
文件:
{
"cmd": ["javac", "$file"],
"file_regex": "^(...*?):([0-9]*):?([0-9]*)",
"selector": "source.java"
}
假设Sublimejavac
使用的 是PATH
,您可能需要编辑它以适合您的系统设置。您可以先保存文件.java
,然后选择Tools -> Build System -> JavaC
或Tools -> Build System -> Automatic
,然后点击CtrlB(⌘B在 Mac 上),然后运行此构建系统。
要运行生成的.class
文件,请修改JavaC.sublime-build
以下内容:
{
"cmd": ["javac", "$file"],
"file_regex": "^(...*?):([0-9]*):?([0-9]*)",
"selector": "source.java",
"working_dir": "${project_path:${file_path}}",
"variants": [
{
"name": "Run",
"cmd": ["java", "$file_name"],
"shell": true,
"env": {"CLASSPATH": "/path/to/jar/files:/path/to/more/jars"}
}
]
}
然后,您可以使用CtrlShiftB(⌘ShiftB在 Mac 上)键盘组合来执行Run
构建系统的变体。该"working_dir": "${project_path:${file_path}}"
行从包含文件的目录执行构建.sublime-project
,如果您没有目录,则默认为包含.java
源的目录。通过 shell"shell": true
运行,无论是、还是您选择的任何内容。否则,它只会通过 Sublime 控制台输出。字典允许您添加您可能只想为构建会话设置的环境变量的 Key:value 对。它可以位于部分或主要部分,具体取决于您的需要。"cmd"
cmd.exe
bash
"env"
"Variants"
有关更多详细信息,请查看我在开头提供的两个链接 - 它们包含大量信息和一些有用的构建系统示例。您还可以浏览Packages
目录的子文件夹并查看.sublime-build
您找到的任何文件以获取灵感 - 它们的名称列在下面Tools -> Build System
(即,“Python”构建系统位于Packages/Python/Python.sublime-build
)。
回答你最初的问题,Sublime 的架构不支持功能齐全的终端仿真器。虽然你可以使用 Python 的subprocess.Popen()
,我更喜欢使用奇妙的SublimeREPL
插件(可通过包控制) 随着IPython
有很多依赖项,但easy_install ipython[all]
应该可以帮你解决大部分问题,就像通过包管理器安装一样,比如、、、MacPorts
等。对于 Windows,可以从 Christoph Gohlke 的yum
apt-get
Windows 存储库的 Python 扩展包,其中包含所有必需和可选依赖项的链接。请确保您使用的是python.org但是没有安装 Python。
在系统上安装 Python 和 IPython 以及 Sublime 的 和PATH
SublimeREPL 后,转到Tools -> SublimeREPL -> Python -> Python - IPython
,您应该可以立即启动并运行。要执行 shell 命令,只需在其前面加上!
- 例如:
In [1]: !ls
将列出当前工作目录的内容,而
In [2]: files = !ls
会将这些名称分配给变量。但请注意,像这样的命令!cd ..
实际上不会更改当前工作目录,您需要运行:
In [3]: import os
In [4]: os.chdir('..')
os
执行此操作。模块的文档文件和目录函数在这里非常有用(如果你使用的是 Python 3,请将2
URL 中的更改为3
) - 这带来了此系统的另一个优点:你可以在系统上安装多个版本的 Python,而不必依赖于 Sublime Text 2 附带的精简版 2.6。将以下内容保存到Packages/User/SublimeREPL/config/Python/Main.sublime-menu
并根据你的喜好进行自定义:
[
{
"id": "tools",
"children":
[{
"caption": "SublimeREPL",
"mnemonic": "r",
"id": "SublimeREPL",
"children":
[
{
"caption": "Python",
"id": "Python",
"children":[
{
"command": "repl_open",
"caption": "Python 3",
"id": "repl_python3",
"mnemonic": "p",
"args": {
"type": "subprocess",
"encoding": "utf8",
"cmd": ["/opt/local/bin/python3", "-i", "-u"],
"cwd": "/Users/YourNameHere/Development/python",
"syntax": "Packages/Python/Python.tmLanguage",
"external_id": "python3",
"extend_env": {"PYTHONIOENCODING": "utf-8"}
}
},
{
"command": "repl_open",
"caption": "IPython 3",
"id": "repl_ipython3",
"mnemonic": "p",
"args": {
"type": "subprocess",
"encoding": "utf8",
"cmd": ["/opt/local/bin/ipython", "-i", "--pylab=osx", "--colors=NoColor"],
"cwd": "/Users/YourNameHere/Development/python",
"syntax": "Packages/Python/Python.tmLanguage",
"external_id": "Ipython",
"extend_env": {"PYTHONIOENCODING": "utf-8"}
}
}
]
}
]
}]
}
]
现在,您可以拥有自定义菜单选项,这些选项将SublimeREPL
在 Package Control 升级后继续存在,并使用不同的选项、工作目录等运行 REPL。
希望这些内容对您有所帮助,请让我知道它对您有何帮助。
答案3
现在有可能了。您可以完全在 ST 中编译和运行代码,而且非常快速/简单。最近有一个名为 Javatar 的 ST 包可以做到这一点。 https://javatar.readthedocs.org