在使用SublimeREPL运行Python代码时,如何重复使用选项卡?

15
在这个问题中 如何在SublimeREPL中运行Python代码,给出了一个答案,介绍了如何使用通常的 Ctrl+b 快捷键来在SublimeText 内的SublimeREPL中运行Python代码。
步骤如下:
1- 创建一个新的空文件,并将以下命令粘贴到其中:
{
    "target": "run_existing_window_command", 
    "id": "repl_python_run",
    "file": "config/Python/Main.sublime-menu"
}

2- 将文件保存为:

/home/USER/.config/sublime-text-3/Packages/User/SublimeREPL-python.sublime-build

3- 转到你的 Python 文件选项卡并选择:

Tools > Build System > SublimeREPL-python

之后按照惯例的Ctrl+b快捷键将打开一个新标签页,其中代码被执行。

问题在于这些标签页不会被重复使用。这意味着每次按下Ctrl+b,就会打开一个新的标签页,而不是在之前打开的同一标签页中运行代码。

有没有办法让SublimeREPL重新使用已有的标签页?

3个回答

13
在SublimeREPL\config\Python\Main.sublime-menu的"repl_python_run"命令中,在"external_id": "python"参数之前添加以下行:
"view_id": "*REPL* [python]",

然后更改行:

if view.id() == view_id

进入:

if view.name() == view_id

在 SublimeREPL\sublimerepl.py 中。

在这里找到 链接图片说明


在Linux Mint 19上,ST3(3207)按预期工作。唯一缺少的是一条消息,用于在新结果与先前结果之间进行视觉分隔。您有什么想法可以将其合并在哪里?@Daniel - Traxidus Wolf
2
要自动将焦点切换到已使用的 REPL 视图,请在同一 if 语句中使用 window.focus_view(found) - Traxidus Wolf
@Traxidus Wolf - 我已经在阅读,但目前还没有发现什么。我想也许可以在SublimeREPL用户定义的“repl_view_settings”中找到可能的选项之一,或者类似于那样的东西。 - Daniel
在我的 Sublime Text 3 (3211) 和 SublimeREPL v2.1.2 上,运行良好,在 macOS 11.01(Big Sur)下也是如此。 - Martin CR
这对我在Windows上使用最新版本的ST3和SublimeREPL有效,但当我重新组织ST3布局时(例如,拉出REPL选项卡),它会出现问题。 - tagoma
显示剩余2条评论

3

我发现使用Terminus有更好的方法来完成这个任务。

  1. 安装 Terminus
  2. 创建一个新的构建系统
  3. 在构建系统中输入以下内容:
{
    "target": "terminus_open",
    "title": "Python REPL",
    "tag": "python-repl",
    "auto_close": false,
    "shell_cmd": "python -u -i \"$file\"",
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python",
    "env": {"PYTHONIOENCODING": "utf-8"},
}
  1. 现在使用这个新的构建系统进行构建

使用终端仿照REPL的截图:

enter image description here

这将为您创建一个repl,每次构建后不会打开新的标签页,您还可以使用origami进一步修改它,以在屏幕右侧、左侧、上方或下方显示控制台(如果需要)。
您还可以使用terminus并在默认输出控制台窗口中运行它,同时接受输入并使其可交互。为此,您需要:
1. 创建一个新的构建系统 2. 在构建系统中输入以下内容:
{
    "target": "terminus_exec",
    "cancel": "terminus_cancel_build",
    "focus": true,
    "timeit": false,
    "shell_cmd": "python -u -i \"$file\"",
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python",
    "env": {"PYTHONIOENCODING": "utf-8"},
}
  1. 现在使用这个新的构建系统进行构建
  2. 同时确保将它们添加到键绑定中
[
    //----------------------- OPEN CMD CONSOLE -----------------------

    {
       "keys": ["ctrl+enter"], // you can change the keys
       "command": "terminus_open",
       "args" : {
           "cmd": "cmd.exe",
           "cwd": "${file_path:${folder}}",
           "panel_name": "Terminus"
       }
    },

    //----------------------- CLOSE TERMINUS CONSOLE -----------------------

    {
        "keys": ["ctrl+x"], "command": "terminus_close", // you can change the keys
        "context": [{ "key": "terminus_view"}]
    },
]
  1. 第一个允许您在默认控制台区域(Ctrl + Enter)中创建cmd shell,第二个允许通过关闭Terminus(Ctrl + X)来关闭默认控制台,就是这样,享受吧。

Terminus在控制台中的截图:

enter image description here

我曾经花费了很多时间寻找在repl中重新使用选项卡的方法,后来发现sublime repl已经不再被积极维护。这就是我发现terminus的原因,它正在积极维护并且可以像repl一样完成类似的任务,希望这能帮到你。
这里是Github指南链接:https://github.com/wuub/SublimeREPL/issues/481#issuecomment-917862655

3

很遗憾,即使在最新版本的SublimREPL中也无法做到这一点。 你可以打开工单向开发者提出此实现的请求。但我不确定Sublime Text是否能够实现。


2
这个问题的票已经在这里了:https://github.com/wuub/SublimeREPL/issues/481 但问题仍然存在。 - Antony Hatchkins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接