木匣子

Web/Game/Programming/Life etc.

在 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 执行。

1 条留言

  1. 老公,我运行成功了,可以使用SublimeREPL来运行Python脚本了。原来要使用分栏,我之前没有采用分栏形式,总是无法正常运行。

Disqus 留言存档

键盘快捷键

全局

?
快捷键帮助
/或⌘K
搜索
gh
首页
ga
归档
gt
标签
gc
分类
gg
回到顶部
G
跳到底部
h
较新一篇 / 上一页
l
较旧一篇 / 下一页
Esc
关闭弹窗

文章列表首页、归档、标签、分类

j
选中下一篇
k
选中上一篇
o或Enter
打开选中的文章

阅读文章和其他页面

j
向下滚动
k
向上滚动
yy
复制本页链接
c
跳到留言