send line/selection to terminal

需求

在编辑 shell script 或者 markdown 的时候非常想要这样一个功能:

  1. 在一个文件中,可以通过按下快捷键(比如 command+enter)来执行当前行/选中的内容。
  2. 执行时的工作目录是这个脚本所在的目录,或者项目目录,也可以设置。
  3. 执行的结果会显示在编辑器的另一个窗口中。
  4. 每条指令的最后一次执行结果会被保存下来,如果把鼠标放在该条指令上就可以看到。

这个灵感来源于 database IDE DataGrip,如图所示,并且支持多个连接、自动选择语句范围、写入到文件等功能。

在这里插入图片描述

可能的解决方案

这是一些我的探索过程以及非完美的解决方案,如果有更好的解决方案可以评论交流。

sublime 的 sublimeREPL 插件

需要预先启动一个 repl session,只能写入在 repl 中而且暂时不支持我的 zsh 的 ansi 格式。

jetbrain 系列的 runmarkdown 功能

可以直接在 markdown 中执行一行命令,非常贴近我的需求,但是没有找到文档和设置的地方。

支持整体执行,以及某些语句的单独执行。可以执行到 jetbrain 自己的 terminal 中。

在这里插入图片描述

sublime 的 sendcode 插件

按下快捷键就可以在一个系统 terminal 里面执行任务,可以执行 shell 或者在 markdown 中执行 shell script,将 line/selection 发到终端中。
基本满足我的需求,如果是集成 shell 就好了,还有一个缺点是工作目录需要重新设置。

如果能和 terminus 结合起来那么将绝杀。

update: https://github.com/randy3k/SendCode

又研究了一下,可以结合起来!甚至两个插件是同一个作者做的。这是我的配置:

[
    { "keys": ["alt+`"], "command": "toggle_terminus_panel" },
    { "keys": ["super+t"], "command": "new_file" },
    {
        "settings": {
            "SendCode": {
                "prog": "terminus",
                "auto_advance" : false,
                "r" : {
                    "bracketed_paste_mode": true
                }
            }
        }
    }
]

唯一的问题是,如果之前没有 terminus session,似乎 sendcode 并不能新建一个。

jetbrains 的 send to terminal 插件

和 sendcode 类似。
有人在 issue 中问为什么不使用 jetbrain 集成的 terminal,回答是没有开放对应的 api。

jetbrain 的官方支持

还在 track,遥遥无期。
https://youtrack.jetbrains.com/issue/IDEA-131964/Execute-Selection-in-Embedded-Terminal

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值