你有没有这种场景:
- 本地写代码,远程服务器跑任务(R / Python / Shell 都行)
- 服务器环境不好配,装一堆后端、插件、依赖还要翻墙
- 你其实只想要一个最朴素的能力:把编辑器里选中的几行,发到远程终端执行
我最近在折腾 Positron 的远程能力时,又一次意识到:有些“高级集成”当然很香,但在很多时候,一个简单的快捷键就能把 80% 的问题解决掉。
先说 Positron 的官方远程思路
上次写下《见异思迁:扔掉RStudio,拥抱Positron》时,我想:Positron 现在应该已经把远程 R 给配置好了吧?于是去搜了一圈。
确实是有的,是以下这样的工作形式:

需要服务器端有个Positron Backend,它在你第一次用的时候,需要装一下东西:

然后我试了一下,下载需要翻墙。

我本来想找镜像,或者先在本地下载再上传到服务器,最后 ssh 上去手工装。一搜,倒是看到有人在 GitHub 上给了另一种路线:

这个方案不是解决 positron backend 的安装问题,而是用 openvscode-server 来当 backend,相当于把 positron backend 换掉。自己折腾当然有机会跑通,但我这次没有继续往下钻。
退一步:回到最朴素、最可靠的方案
我突然想起以前用 Emacs 的日子:在编辑器里开一个 terminal,ssh 到服务器,再启动服务器端的 R(或 Python)。之后我在编辑器里写代码,把选中的代码“发送到终端”,就等于在远程解释器里执行了。
整个过程完全不依赖服务器端做任何额外配置,本质上就是:
-
终端在哪里不重要(本地/远程都可以)
-
解释器是什么不重要(Shell/R/Python 都可以)
-
我只需要一个动作:把代码发过去执行
在Positron里,Ctrl+Enter 会把代码发送到 Console(例如 R 或 Python)。那我只要定义一个快捷键,把“选中的文本”发送到 Terminal 执行,就能实现上面的流程。
一个快捷键:Shift+Enter 把选中内容发到终端
我定义了一个 Shift+Enter 的快捷键:
{
"key": "shift+enter",
"command": "workbench.action.terminal.runSelectedText",
"args": { "text": "${selectedText}\\n" },
"when": "editorTextFocus"
}有了它之后,编辑器里选中一段代码,按一下 Shift+Enter,就会把内容发到当前 Terminal 执行。这个 Terminal 不管是本地还是远程,不管跑的是 Shell、R 还是 Python,都适用。

使用体验:朴素,但真的好用
配合 screen、nohup 之类的工具,你就能做到:脚本在本地写,任务在服务器跑。即便你不做远程开发,这个快捷键也很值:很多时候我们想在 Terminal 执行几条命令,往往是在终端里现敲;有了这个套路,你更容易把命令写成“可复用的文本”,一键发送执行。
这种“以文本为核心”的工作方式有点 Emacs 的味道:看起来不 fancy,但非常稳定、通用、可迁移。最重要的是,它让你不必为了一个简单需求,去背负一整套复杂配置。