V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
KesonAn
V2EX  ›  程序员

Intellij 插件新秀 CommentShell,让你的注释运行起来!

  •  
  •   KesonAn · 2021-03-26 10:18:12 +08:00 · 3475 次点击
    这是一个创建于 1098 天前的主题,其中的信息可能已经有所发展或是发生改变。

    CommentShell

    demo

    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 这样一行单行注释即可实现

    支持的语言

    • .gitignore
    • Antlr(g4)
    • Api(go-zero)
    • Dart
    • Dockerfile
    • Drools
    • Gherkin
    • Gradle
    • Groovy
    • Html
    • Java
    • JavaScript
    • JFlex
    • JSPX
    • Kotlin
    • Lua
    • Markdown
    • Perl
    • PHP
    • Properties
    • Proto
    • Python
    • R
    • React
    • Ruby
    • Rust
    • Scala
    • SQl
    • TypeScript
    • Vue
    • XML
    • YAML

    以上语言或者文件已经经过测试,除此外,只要编程语言或者某类型文件支持单行注释语法且指定单行注释类型和语法书写规范理论均可使用(见下文)。

    安装方式

    方式一: 下载地址 方式二:intellij plugin 仓库搜索 CommentShell install 即可,plugin 商店还在审核中。

    支持的注释类型

    • Java 风格单行注释
      //x:generate echo hello java
      
    • Yaml 风格单行注释
      #x:generate echo hello yaml
      
    • SQL 风格单行注释
      --x:generate echo hello sql
      
    • xml/html 风格单行注释
      <!--x:generate echo hello xml-->
      

    书写规则

    格式

    [linePrefix]x:generate [shell] [arg...] [lineSuffix]
    
    • linePrefix 为单行注释开始标志,仅支持//#--<!--
    • lineSuffix 为单行注释结束标志,仅支持 --> 此为 html/xml 风格单行注释特有
    • x:generate 为关键字

    注意

    • linePrefix 与 x:generate 之间不能有任何其他内容

    常量

    • %DIR% 代表当前文件的文件目录,如:/foo/bar
    • %FILENAME% 代表当前文件路径,如:/foo/bar/foobar.txt
    • %PERCENT_SIGN% 代表百分号符号本身%
    • "%BASE%" 代表当前文件名称,如:foobar.txt

    示例

    • 在 Java 文件注释中输出 hello java
      //x:generate echo hello java
      
      output:
      hello java
      
    • 在 proto 文件中生成 pb.go
      //x:generate protoc --go_out=plugins=grpc:. %FILENAME%
      
    • 在 Java 代码中输出 PATH 环境变量值
      //x:generate echo $PATH
      

    点击这里查看各主流编程语言的 shell 写法。

    20 条回复    2021-03-27 12:00:11 +08:00
    xiaofan2
        1
    xiaofan2  
       2021-03-26 10:29:22 +08:00
    注释运行和我用 IDEA 自带的 Terminal 运行有啥区别吗?
    anankun
        2
    anankun  
       2021-03-26 10:35:02 +08:00
    花里胡哨的
    KesonAn
        3
    KesonAn  
    OP
       2021-03-26 10:43:47 +08:00
    @xiaofan2 其实本质是运行 shell 命令,但是这个的场景是适用于命令比较长,很难记的情况下,如 grpc 通过 proto 生成 pb.go 文件,我们通常会把命令写在头部的注释中,方便下次 copy 到终端执行,而插件在这里就减少了 copy 到终端的过程,可以点击运行按钮直接运行。
    locoz
        4
    locoz  
       2021-03-26 10:50:53 +08:00 via Android
    emmmm,你举的这个例子貌似没有必要用插件实现?你看看 grpc 的样例代码,里面那个开头的注释就是可以在 goland 里直接点击执行的。
    xaplux
        5
    xaplux  
       2021-03-26 10:52:38 +08:00
    看明白了,其实就是省去了复制粘贴打开 Terminal 的过程,类似于 stackoverflow 插件可以打开浏览器自动去 stackoverflow 网站搜索
    K1W1
        6
    K1W1  
       2021-03-26 10:56:35 +08:00 via Android
    挺好的,支持一下
    sxfscool
        7
    sxfscool  
       2021-03-26 10:57:53 +08:00 via Android
    有点像 go: generate
    KesonAn
        8
    KesonAn  
    OP
       2021-03-26 11:05:50 +08:00
    @sxfscool 👍 灵感涞源于它
    KesonAn
        9
    KesonAn  
    OP
       2021-03-26 11:06:10 +08:00
    @K1W1 🤝🤝
    KesonAn
        10
    KesonAn  
    OP
       2021-03-26 11:07:30 +08:00
    @locoz go 代码可以用 //go:generate 去生成,proto 代码中没有快捷生成的按钮的。
    KesonAn
        11
    KesonAn  
    OP
       2021-03-26 11:09:15 +08:00
    @xaplux 👍👍 是的,如果只是简单的 shell 命令,其实这个插件没必要,它的使用场景是针对的是命令比较长,不方便记忆的情况使用,下次来直接运行就行,也省去再花时间想这个命令怎么敲来着。
    aguesuka
        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 复杂太多。
    KesonAn
        13
    KesonAn  
    OP
       2021-03-26 11:50:49 +08:00
    @aguesuka 这只是尽可能提升开发效率,像 makefile,shell 脚本这类做专业的事,它不可能去和那些专业的脚本比较哈。
    lanlan2020
        14
    lanlan2020  
       2021-03-26 16:47:46 +08:00
    我觉得很有用,支持你
    locoz
        15
    locoz  
       2021-03-26 16:51:01 +08:00 via Android
    @KesonAn #10 这样啊,那还是挺有用的
    oneisall8955
        16
    oneisall8955  
       2021-03-26 17:01:58 +08:00
    戳中萌点,支持下 23333
    KesonAn
        17
    KesonAn  
    OP
       2021-03-26 17:04:25 +08:00
    @lanlan2020 🤝🤝🤝
    KesonAn
        18
    KesonAn  
    OP
       2021-03-26 17:04:35 +08:00
    @locoz 🤝🤝🤝
    KesonAn
        19
    KesonAn  
    OP
       2021-03-26 17:04:43 +08:00
    @oneisall8955 🤝🤝🤝
    nanjoyoshino
        20
    nanjoyoshino  
       2021-03-27 12:00:11 +08:00
    虽然目前用不到,但是有点意思啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3331 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 13:27 · PVG 21:27 · LAX 06:27 · JFK 09:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.