VS Code中如何将单行、多行选中内容及代码块统一发送到终端而非交互/REPL环境
VS Code中如何将单行、多行选中内容及代码块统一发送到终端而非交互/REPL环境
我完全懂你这种混乱的感觉——一会儿Jupyter交互窗口,一会儿IPython终端,快捷键还不统一,太折腾人了!刚好我之前也遇到过一模一样的问题,给你整理了一套能把所有内容(单行、多行选中、代码块)都统一发送到同一个终端的方法,全程不用依赖交互/REPL环境:
第一步:先把执行环境统一成终端IPython
先打开VS Code的终端,输入ipython启动交互式Python shell,这就是你接下来所有代码要跑的唯一环境,记得关掉之前打开的Jupyter交互窗口,只保留这一个终端就行。
第二步:配置单行/多行选中内容的发送快捷键
按Ctrl+K再Ctrl+S打开快捷键设置面板:
- 找到Run Selected Text in Active Terminal这个命令,把它绑定到你顺手的快捷键,比如你之前用的
Ctrl+Enter,要是想统一用Shift+Enter也可以,看你习惯。 - 重点:如果原来的
Shift+Enter被Jupyter的命令占用了,找到Jupyter: Run Cell和Jupyter: Run Cell and Advance这两个命令,把它们的Shift+Enter绑定删掉,避免冲突。
第三步:让代码块(#%%)也能发送到同一个终端
默认的代码块运行是走Jupyter交互的,我们得改改让它也指向终端:
最省心的方法是用VS Code的宏命令,把「选中整个代码块+发送到终端」合并成一个快捷键:
- 点击快捷键设置面板右上角的
{}图标,打开快捷键配置的JSON文件。 - 把下面这段配置粘贴进去(可以根据自己的习惯修改快捷键):
{ "key": "shift+enter", "command": "runCommands", "args": { "commands": [ "editor.action.expandSelectionToBlock", "workbench.action.terminal.runSelectedText" ] }, "when": "editorLangId == 'python' && editorTextFocus && !editorReadonly" }
这样一来,不管你光标在代码块的哪个位置,按Shift+Enter就会自动选中整个代码块,然后发送到你打开的IPython终端执行,和单行、多行选中内容的操作完全统一。
最后一步:彻底告别混乱
- 如果你平时不用Jupyter的交互功能,可以在VS Code的设置里关掉Jupyter插件的自动启动选项(比如“Auto Start Jupyter Server”),防止它偷偷打开交互窗口。
- 全程只保留一个IPython终端,所有操作都指向它,再也不会有多个窗口满天飞的情况了!
内容来源于stack exchange
相关产品推荐
相关产品推荐

