14

我已经查看了这个论坛上的所有答案,但我错过了一些东西。我希望能够在 Sublime Text 2 中编辑 Python 文件“myfile.py”时点击Cmd+ 。B

这应该会打开一个 Python shell,它会加载我的文件并将我返回到交互式提示,以便我的 Python 脚本中的命名空间可用。

在构建设置中设置-i选项仍然会关闭解释器(见下文)

> 81
> >>>  [Finished in 0.1s]

我下载了 sublimeREPL,但我不确定如何设置该-i选项。
任何帮助表示赞赏

4

5 回答 5

11

好的,感谢 sneawo 的提示!这是我第一次这样做。

步骤 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)就可以了——它将在 repl 选项卡中启动 python 解释器,将布局设置为水平两个窗口并将 repl 选项卡移动到下部窗口。

这是非常基本的,因为它不会检查当前布局是什么,而只是将布局设置为 2-horizo​​ntal。可能会修饰代码以进行一些检查,并简单地在现有布局中添加一个水平窗口。在关闭 repl 选项卡时删除水平缓冲区也很好。

于 2012-12-30T14:58:23.930 回答
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"
                    } 
    }
]
于 2012-12-29T09:59:49.413 回答
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 })

将其分配给原始帖子中所示的键绑定,您现在将加载 IPython 而不是标准 Python!

于 2014-12-19T10:49:09.693 回答
0

答案比你的方法简单得多。只需定义一个新的构建“配置文件”(构建系统),您可以在其中准确捕获默认的 Python 构建,除了将选项更改-u-ui

{ "cmd": ["C:\\python33\\python.exe", "-ui", "$file"], "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", "selector": "source.python" }

于 2014-04-18T21:06:33.970 回答
-1

这是创建新构建系统的简单方法。

{
    "cmd": ["C:\\python33\\python.exe", "-u", "$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python"
}

然后将构建系统保存为 Python3 或 Python27 并选择它作为默认值。

于 2013-06-26T18:56:37.787 回答