https://github.com/anqiansong/CommentShell
CommentShell(CSL)一个可以在注释中运行 shell 命令的 intellij 插件,👏👏欢迎 Star,Fork,Issue👏👏
其可以帮助开发者快速在文件内执行指定命令,而不需要在终端去敲打 shell 命令, 如:开发 golang 的 grpc 服务时,我们需要用 protoc 工具生成 pb.go ,传统做法是编写完 proto 文件后在打开终端输入 shell 命令去生成 pb 文件,
但是现在,你可以用 CLS 去替代传统做法提高你的开发效率,只需要在单行注释中以 x:generate 开头, 后面跟上你需要执行的 shell 命令即可,如:我期望通过 shell 命令打印 hello proto
,
你可以通过 //x:generate echo hello proto
这样一行单行注释即可实现
以上语言或者文件已经经过测试,除此外,只要编程语言或者某类型文件支持单行注释语法且指定单行注释类型和语法书写规范理论均可使用(见下文)。
方式一: 下载地址
方式二:intellij plugin 仓库搜索 CommentShell
install 即可,plugin 商店还在审核中。
//x:generate echo hello java
#x:generate echo hello yaml
--x:generate echo hello sql
<!--x:generate echo hello xml-->
[linePrefix]x:generate [shell] [arg...] [lineSuffix]
linePrefix
为单行注释开始标志,仅支持//
,#
,--
,<!--
lineSuffix
为单行注释结束标志,仅支持 -->
此为 html/xml 风格单行注释特有x:generate
为关键字注意
x:generate
之间不能有任何其他内容%DIR%
代表当前文件的文件目录,如:/foo/bar
%FILENAME%
代表当前文件路径,如:/foo/bar/foobar.txt
%PERCENT_SIGN%
代表百分号符号本身%"%BASE%"
代表当前文件名称,如:foobar.txt
hello java
//x:generate echo hello java
output:hello java
//x:generate protoc --go_out=plugins=grpc:. %FILENAME%
PATH
环境变量值//x:generate echo $PATH
点击这里查看各主流编程语言的 shell 写法。
1
xiaofan2 2021-03-26 10:29:22 +08:00
注释运行和我用 IDEA 自带的 Terminal 运行有啥区别吗?
|
2
anankun 2021-03-26 10:35:02 +08:00
花里胡哨的
|
3
KesonAn OP @xiaofan2 其实本质是运行 shell 命令,但是这个的场景是适用于命令比较长,很难记的情况下,如 grpc 通过 proto 生成 pb.go 文件,我们通常会把命令写在头部的注释中,方便下次 copy 到终端执行,而插件在这里就减少了 copy 到终端的过程,可以点击运行按钮直接运行。
|
4
locoz 2021-03-26 10:50:53 +08:00 via Android
emmmm,你举的这个例子貌似没有必要用插件实现?你看看 grpc 的样例代码,里面那个开头的注释就是可以在 goland 里直接点击执行的。
|
5
xaplux 2021-03-26 10:52:38 +08:00
看明白了,其实就是省去了复制粘贴打开 Terminal 的过程,类似于 stackoverflow 插件可以打开浏览器自动去 stackoverflow 网站搜索
|
6
K1W1 2021-03-26 10:56:35 +08:00 via Android
挺好的,支持一下
|
7
sxfscool 2021-03-26 10:57:53 +08:00 via Android
有点像 go: generate
|
11
KesonAn OP @xaplux 👍👍 是的,如果只是简单的 shell 命令,其实这个插件没必要,它的使用场景是针对的是命令比较长,不方便记忆的情况使用,下次来直接运行就行,也省去再花时间想这个命令怎么敲来着。
|
12
aguesuka 2021-03-26 11:47:13 +08:00 via Android
idea 的功能性注释有官方先例的,比如 region 和 endregion 或者 language injection 。
但是我不会用这个插件。首先命令不应该出现在注释里,而是构建脚本比如 makefile)的工作,再不济也应该是 bash 或者 markdown 里。而且 x:generate 意义不明,语法比 TODO,FIXME language injection 复杂太多。 |
13
KesonAn OP @aguesuka 这只是尽可能提升开发效率,像 makefile,shell 脚本这类做专业的事,它不可能去和那些专业的脚本比较哈。
|
14
lanlan2020 2021-03-26 16:47:46 +08:00
我觉得很有用,支持你
|
16
oneisall8955 2021-03-26 17:01:58 +08:00
戳中萌点,支持下 23333
|
17
KesonAn OP @lanlan2020 🤝🤝🤝
|
19
KesonAn OP @oneisall8955 🤝🤝🤝
|
20
nanjoyoshino 2021-03-27 12:00:11 +08:00
虽然目前用不到,但是有点意思啊
|