求Sublime Text 3中R语言等效R app Ctrl+R的快捷键及同类工具
我刚好折腾过这个需求,完全可以在Sublime Text 3里复刻R原生Ctrl+R的核心行为,也有类似NppToR的工具来增强和R的交互体验,下面给你一步步拆解:
一、自定义快捷键实现核心功能
要实现「空选发当前行/选中文本发选中内容,发送后自动跳转」的逻辑,我们需要借助SublimeREPL插件的命令,再配合自定义键绑定来完成:
先安装SublimeREPL
打开Sublime,通过Preferences > Package Control > Install Package搜索并安装SublimeREPL——这个插件是Sublime和R交互的核心基础。添加自定义键绑定
点击Preferences > Key Bindings,打开用户侧的键绑定JSON文件,把下面的代码粘贴进去(替换或追加到现有内容里):
[ { "keys": ["ctrl+r"], "command": "repl_send", "args": {"external_id": "r"}, "context": [ { "key": "selector", "operator": "equal", "operand": "source.r" }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true } ] }, { "keys": ["ctrl+r"], "command": "repl_send", "args": {"external_id": "r", "action": "send"}, "context": [ { "key": "selector", "operator": "equal", "operand": "source.r" }, { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true } ] }, { "keys": ["ctrl+r"], "command": "move", "args": {"by": "lines", "forward": true}, "context": [ { "key": "selector", "operator": "equal", "operand": "source.r" }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "last_command", "operator": "equal", "operand": "repl_send" } ] }, { "keys": ["ctrl+r"], "command": "move_to", "args": {"to": "eol", "extend": false}, "context": [ { "key": "selector", "operator": "equal", "operand": "source.r" }, { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }, { "key": "last_command", "operator": "equal", "operand": "repl_send" } ] } ]
这段代码的逻辑很清晰:
- 当你在R文件里没有选中内容时,按Ctrl+R会把当前行发送到R会话,然后自动跳转到下一行;
- 当你选中了文本时,按Ctrl+R只会发送选中的部分,发送完成后自动跳转到选中内容的末尾。
- 启动R会话
第一次使用前,先通过Tools > SublimeREPL > R > R打开一个R交互会话,之后就能用Ctrl+R正常发送代码了。
如果Sublime找不到R的路径,可以在SublimeREPL的用户设置里指定:
打开Preferences > Package Settings > SublimeREPL > Settings - User,添加:
{ "default_extend_env": {"PATH": "{PATH}:你的R安装路径/bin"} }
把你的R安装路径换成你实际的R安装目录,比如Windows下可能是C:/Program Files/R/R-4.3.1。
二、类似NppToR的工具推荐
Sublime里最接近NppToR功能的就是上面提到的SublimeREPL,它不仅支持代码发送,还能在Sublime内部嵌入R的交互窗口,或者连接外部的R进程,和NppToR的核心逻辑一致。
另外还有一个叫R-Box的插件,也能增强Sublime对R的支持,比如智能代码补全、代码片段、一键运行脚本等,你可以通过Package Control安装后搭配使用,体验会更好。
内容的提问来源于stack exchange,提问作者Hugo

