我已经看过这个论坛上的所有答案,但我遗漏了一些东西。 我希望能够在Sublime Text 2中编辑Python文件“myfile.py”时点击 Cmd + B 。
这应该打开一个Python shell,它加载我的文件并将我返回到交互式提示符,以便我的Python脚本中的命名空间可用。
在构建设置中设置-i
选项仍会关闭解释器(参见下文)
> 81
> >>> [Finished in 0.1s]
我下载了 sublimeREPL ,但我不确定如何设置-i
选项。
任何帮助表示赞赏
答案 0 :(得分:11)
步骤1.创建一个插件pydev,(来自Tools-> New Plugin),创建命令'pydev'
import sublime, sublime_plugin
class PydevCommand(sublime_plugin.WindowCommand):
def run(self):
self.window.run_command('set_layout', {"cols":[0.0, 1.0], "rows":[0.0, 0.5, 1.0], "cells":[[0, 0, 1, 1], [0, 1, 1, 2]]})
self.window.run_command('repl_open',{"type": "subprocess",
"encoding": "utf8",
"cmd": ["python2.7", "-i", "-u", "$file"],
"cwd": "$file_path",
"syntax": "Packages/Python/Python.tmLanguage",
"external_id": "python2.7"
})
self.window.run_command('move_to_group', { "group": 1 })
步骤2.在Preferences-> Key-Bindings-user
中创建新的密钥绑定
{"keys": ["f5"], "command": "pydev"}
现在按 f5 (在Mac上它默认为 fn + f5 )诀窍 - 它将启动python解释器在repl选项卡中,将布局设置为双窗口水平,并将repl选项卡移动到下窗口。
这是非常基本的,因为它不会检查当前布局是什么,只是将布局设置为2水平。可能会修改代码来进行一些检查,只需在现有布局中添加一个水平窗口即可。当repl选项卡关闭时,最好删除水平缓冲区。
答案 1 :(得分:7)
尝试更新用户键绑定:
[
{ "keys": ["super+shift+r"], "command": "repl_open",
"caption": "Python",
"mnemonic": "p",
"args": {
"type": "subprocess",
"encoding": "utf8",
"cmd": ["python", "-i", "-u", "$file"],
"cwd": "$file_path",
"syntax": "Packages/Python/Python.tmLanguage",
"external_id": "python"
}
}
]
答案 2 :(得分:0)
答案比你的方法简单得多。
只需定义一个新版本" profile" (构建系统),除了将选项-u
更改为-ui
{ "cmd": ["C:\\python33\\python.exe", "-ui", "$file"], "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", "selector": "source.python" }
答案 3 :(得分:0)
我想通过@ user1936097添加对答案的快速编辑。
我复制了这个想法但是想要加载IPython(代码可以正常加载标准Python)。我换了......
self.window.run_command('repl_open',{"type": "subprocess",
"encoding": "utf8",
"cmd": ["python2.7", "-i", "-u", "$file"],
"cwd": "$file_path",
"syntax": "Packages/Python/Python.tmLanguage",
"external_id": "python2.7"
})
...与
self.window.run_command('repl_open', {
"type": "subprocess",
"encoding": "utf8",
"autocomplete_server": true,
"cmd": ["python","-u","${packages}/SublimeREPL/config/Python/ipy_repl.py"],
"cwd": "$file_path",
"syntax": "Packages/Python/Python.tmLanguage",
"external_id": "python",
"extend_env": {
"PYTHONIOENCODING": "utf-8",
"SUBLIMEREPL_EDITOR": "$editor"}
})
但它没有用。
线"autocomplete_server": true
似乎是个问题。如果我删除它,代码运行,但IPython打开关闭。如果我离开它,什么也没发生。
我终于借用了文件/SublimeREPL/config/Python/Default.sublime-commands
中找到的命令并提出了......
self.window.run_command('run_existing_window_command', {
"id": "repl_python_ipython",
"file": "config/Python/Main.sublime-menu"
})
这制作了最终的插件代码:
import sublime, sublime_plugin
class PydevCommand(sublime_plugin.WindowCommand):
def run(self):
self.window.run_command('set_layout', {"cols":[0.0, 1.0], "rows":[0.0, 0.5, 1.0], "cells":[[0, 0, 1, 1], [0, 1, 1, 2]]})
self.window.run_command('run_existing_window_command', {
"id": "repl_python_ipython",
"file": "config/Python/Main.sublime-menu"
})
self.window.run_command('move_to_group', { "group": 1 })
将其分配给keybind,如原帖中所示,现在您将加载IPython而不是标准Python!
答案 4 :(得分:-1)
这是一种简单的方法,只需创建一个新的构建系统。
{
"cmd": ["C:\\python33\\python.exe", "-u", "$file"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python"
}
然后将构建系统保存为Python3或Python27并将其选为默认值。