【问题标题】:How to pass a line to the console in sublime text 2 editor如何在 sublime text 2 编辑器中向控制台传递一行
【发布时间】:2013-05-11 11:01:48
【问题描述】:

我使用 RStudio 来处理 R 编程语言,并找到 ctrl+enter 快捷方式向控制台发送一条线,这对我的工作进行故障排除非常有用。

现在我正在使用 sublimetext2,我想在 RStudio 中做同样的事情,向控制台发送一行。

有没有办法将现有线路发送到控制台或 SublimeREPL 控制台?

【问题讨论】:

    标签: r keyboard-shortcuts sublimetext2


    【解决方案1】:

    现在可以将原始 R 代码发送到 SublimeREPL:

    1. 调出 Cmd/Ctrl+Shift+P 菜单
    2. 选择R Application Switch
    3. 选择SublimeREPL

    激活 SublimeREPL 后,您可以使用 Cmd/Ctrl+Enter 向其发送原始 R。

    请注意,默认情况下,SublimeREPL 不会显示发送进来的代码;它只会显示输出。如果您还想查看代码,可以更改用户设置:

    1. 导航到Preferences -> Package settings -> SublimeREPL -> Settings - User
    2. 开启show_transferred_text 设置。

    例如,如果您没有任何其他设置,您的设置应如下所示:

    {
        "show_transferred_text": true
    }
    

    【讨论】:

      【解决方案2】:

      除了设置自己的键绑定,您还可以简单地安装Enhanced-R

      在崇高:

      • Cmd + Shift + P(调出命令面板)
      • 输入“Install Package
      • 导航到Enhanced-R

      如果您主要将 Sublime 用于 R,那么您可以为整个应用程序设置默认语法。或者您可以按文件更改它(Cmd + Shift + P 再次,然后开始输入Syntax Enhanced R

      然后,就像您在 RStudio 中习惯的那样,您只需点击 Cmd + enter 即可将代码发送到控制台或 R.app 等

      【讨论】:

      • 使用 SublimeREPL 我可以在 Sublime Text 中打开 R 控制台,增强型 R 是否有类似的选项?
      • @adibender 你可以同时使用sublimeREPLEnhanced-R。就个人而言,我已经取消了sublimeREPL,因为处理窗口大小变得很烦人。我宁愿有两个窗口,我可以在CMD-tab(或CMD-`)之间
      • 感谢您的回复,但我无法让它正常工作。我可以通过 SublimeREPL 打开 R,我可以通过 Enhanced-R 将 R-Code 发送到 Rgui,但不能将 R-Code 发送到 SublimeREPL R-Console(通过 Enhanced-R 快捷方式)。但是,如果我在多次尝试后仍无法正常工作,我会发布一个问题...
      • 我好久没用过sublimeREPL了,所以我真的不知道。查看键绑定和首选项。毕竟都是开源的:)
      • 嘿 @RicardoSaporta 我可以问一下,你知道如何让 sublime 将代码发送到 macOS 终端而不是 R gui 吗?我尝试将增强的 R 包设置更改为"App" : "Terminal",但它仍然打开并使用R.app,只要我点击 cmd+enter。欢呼
      【解决方案3】:

      我不了解控制台,但 SublimeREPL 可以做到这一点。

      只要你同时打开一个 REPL 和一个相同语言的文件,你就可以通过 SublimeREPL Source Buffer Keys 向你打开的 REPL 发送一行(或选择或文件)。默认情况下,Ctrl+, 后跟 l 将当前行发送到 REPL,但您可以通过将这些行添加到Preferences -> Key Bindings – User 文件的顶部:

      { "keys": ["ctrl+enter"], "command": "repl_transfer_current", "args": {"scope": "lines"}, "context":
          [
              { "key": "selector", "operator": "equal", "operand": "source.python", "match_all": true }
          ]
      },
      

      其他可用范围(来自 Preferences -> Browse Packages -> SublimeREPL/Default (Windows).sublime-keymap)是 selectionfileblock(仅限 Clojure)。如果您想向您的 REPL 发送一行但立即解析它,您可以将 "action":"view_write" 添加到 args 对象,如下所示:

      { "keys": ["ctrl+enter"], "command": "repl_transfer_current", "args": {"scope": "lines", "action": "view_write"}, "context":
          [
              { "key": "selector", "operator": "equal", "operand": "source.python", "match_all": true }
          ]
      },
      

      有关键绑定的更多信息,请参阅Unofficial Sublime Text 2 Docs

      如果 REPL 在与源不同的选项卡中打开(而不是单独的视图),源缓冲区热键将聚焦 REPL。我确信可以实现某种选项卡交换切换键,但这听起来像是另一个问题的问题。

      【讨论】:

      • 这太棒了。谢谢@ProtractorNinja。快速跟进问题 - 是否有可能同时获得这两个功能。所以我想将该行发送到控制台并在执行之前查看它。谢谢 - 对不起,控制台我的意思是 REPL
      • @TahnoonPasha 是的!将第二个较大的代码 sn-p 添加到您的 Key Bindings – User 文件旁边的第一个文件中,并将 "keys" 值调整为您希望发送但不评估密钥为 ctrl+shift+enter 的任何值。然后ctrl+enter 将发送 评估该行,而ctrl+shift+enter 将发送并 评估该行。如果您对自定义按键不感兴趣,默认的发送但不评估组合键是ctrl+shift+,,后跟l
      • 谢谢@ProtractorNinja 我想我一定是做错了什么。当我执行发送和评估时,它不会在 REPL 终端中回显,它只是评估并在完成后返回一个额外的>>>。我希望的是,如果我有例如import imaplib,我做了ctrl+enter,我会看到>>>import imaplib,它会评估,然后是一个新的>>>。您的代码是否会产生这种效果?再次感谢您对此的帮助。
      • @TahnoonPasha 哦!我的错;我误解了你的要求。我不认为在 SublimeREPL 的当前状态下你想要的东西是可能的——我查看了源代码,你可能必须编写一个命令链接插件,即使你想要的 似乎简单的需求。希望其他人可以证明我错了。抱歉,我无法提供更多帮助!
      • 感谢@ProtractorNinja,能够逐行发送它仍然非常有用。感谢您的帮助。
      猜你喜欢
      • 2014-05-29
      • 2014-10-20
      • 1970-01-01
      • 2014-04-01
      • 2012-05-23
      相关资源
      最近更新 更多