需求
在编辑 shell script 或者 markdown 的时候非常想要这样一个功能:
- 在一个文件中,可以通过按下快捷键(比如 command+enter)来执行当前行/选中的内容。
- 执行时的工作目录是这个脚本所在的目录,或者项目目录,也可以设置。
- 执行的结果会显示在编辑器的另一个窗口中。
- 每条指令的最后一次执行结果会被保存下来,如果把鼠标放在该条指令上就可以看到。
这个灵感来源于 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。