在 Sublime Text 运行交互程序
Submile Text 是一个很漂亮的文本编辑工具,配上丰富的扩展,可谓神器。
我很喜欢在 Submile Text 里写一些小脚本,包括 javascript, python, processing 等等,甚至可以直接编译运行。但是有一个困惑就是如何在 Submile Text 的控制台里获得输入?例如有这样一个 Hello.py
your_name = raw_input("What's your name?")
print "Hello, ", your_name
如果直接在 Submile Text 执行 Tools > Build 的话,它会遗憾地告诉你
What's your name?Traceback (most recent call last):
File "/Users/mutoo/code/python/h.py", line 1, in
your_name = raw_input("What's your name?")
EOFError: EOF when reading a line
[Finished in 0.1s with exit code 1]
实际上 Submile Text 的 Build System 很简陋,它只是调用 Shell 执行一些命令,然后将返回结果输出到它的控制台。对于 Python 的 Build System 是这样的:
{
"cmd": ["python", "-u", "$file"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python"
}
Submile Text 并不处理输入过程,所以 Build 的时候上面的 Hello.py
报出了 EOFError: EOF when reading a line
错误,提示没有读到任何东西就 EOF 了。
¶SubmileREPL
不过这等小事可难不倒 Submile Text ,它的强大在于有无数开发者为它开发强大的插件。那么是否有这样一个插件可以应对以上的问题?万能的 StackOverflow 给出了答案: SubmileREPL
SublimeREPL is a plugin for Sublime Text 2 that lets you run interactive interpreters of several languages within a normal editor tab. It also allows connecting to a running remote interpreter (e.g. Clojure/Lein) though a telnet port.
学过脚本语言的话,常常可以看到 REPL(Read-Eval-Print Loop)也就是“读取-求值-输出”循环。SumbileREPL 插件提供了一个简单的交互环境,可以让你的脚本直接“跑“到交互模式的解析器上,这样就可以直接在解析器里进行输入输出了。
SublimeREPL 可以通过 Pacakge Control 直接安装,使用起来也很容易,它的官方网站上有简易的教程。
使用过程大致只需要注意以下几点:
- 安装完插件后需要重启一下 Sublime Text ;
- 开启分栏 View > Layout > Rows: 2 (
Optoin + Shift + Command + 2
); - 在其中一个分栏设置语法环境:Tools > Command Palette,
SublimeREPL: Python
或其它语言; - 在另一个分栏里写自己的脚本,然后使用 Tools > SubmileREPL > Transfer to REPL > File 将脚本运行到解析器中。
最后一个操作会经常使用,可以使用连续快捷键 Ctrl + ,
然后 f
执行。