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

求 vim 大神看一个问题, js 行尾的注释改 js doc 注释

  •  
  •   HytonightYX · 2020-12-25 20:20:56 +08:00 · 2016 次点击
    这是一个创建于 1423 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如图

    image.png

    现在接手一个老项目,里面大量的注释风格混用,为了 ts 的智能提示,需要统一改为 js DOC 风格

    想到 vim 应该可以比较好地完成这个事情,但是本人 vim 目前处于初学阶段,研究了会搞不出来,来问问 V 友

    12 条回复    2020-12-26 17:18:29 +08:00
    billlee
        1
    billlee  
       2020-12-25 21:37:22 +08:00
    大规模的修改 vim 不好搞的,万一有个字符串字面值里面有 // 怎么办?这种事情还是交给专业的 IDE 去做
    vim 擅长的是 ad hoc 修改需求
    joysir
        3
    joysir  
       2020-12-25 21:44:20 +08:00   ❤️ 1
    vim 宏可以解决,建议先看一遍 vim 宏的基本概念,理解之后再看以下内容。


    光标放到 name 行首,在此行录制一个宏,如下步骤按键:
    qa - 录制一个名为 a 的宏
    $ - 到行尾
    v - 选中模式
    F/ - 从后找到第一个 /
    l - 小写的 L,向左移动一位
    x - 剪切注释内容
    O - 大写的 O:在当前行之上插入一行

    接着在新开启的行正常输入注释格式(尽量减少出错,一次性完成),并按 p 粘贴刚刚剪切的注释

    完成 name 字段的格式之后,继续按键:
    j - 移动到下一行
    0 - 回到下一行的行首
    q - 结束名为 a 的宏


    此时,有一个名为 a 的宏录制了将行内注释转换为文档注释并自动跳转到下一行的操作。

    使用宏:
    - 单个操作:可以在 age 字段的行首,按 @a 回放宏,完成 age 注释的转换。
    - 批量操作:例如 10 个字段,可以在第一个需要处理的字段按 10@a 执行 10 次宏。
    joysir
        4
    joysir  
       2020-12-25 21:45:48 +08:00
    @joysir 说明下,格式不太好看:短横线之后是该宏的说明,之前是具体的宏操作。
    crs0910
        5
    crs0910  
       2020-12-25 21:46:40 +08:00
    .s,\(.*\)//\(.*\),\r/**\r* \2\r*/\r\1

    慎用
    Kasumi20
        6
    Kasumi20  
       2020-12-25 21:47:54 +08:00
    Node.js 处理一遍呗
    crs0910
        7
    crs0910  
       2020-12-25 21:55:45 +08:00
    crs0910
        8
    crs0910  
       2020-12-25 22:10:06 +08:00   ❤️ 1
    也可以用 typescript 的 api 自己 transform
    https://github.com/dsherret/ts-morph
    lululau
        9
    lululau  
       2020-12-25 22:17:12 +08:00 via iPhone
    服了 1 楼了,以为你要说交给脚本去处理呢,还大型 ide,哪个大型 ide 有这样的功能?哪个大型 ide 比 vim 或脚本更适合处理这个问题
    lululau
        10
    lululau  
       2020-12-25 22:22:28 +08:00   ❤️ 1
    fastmod '^(\s*)(.*) // (.*)' '$1/**'$'\n''$1 * $3'$'\n''$1 */'$'\n''$1$2' demo.js
    learningman
        11
    learningman  
       2020-12-25 23:34:33 +08:00
    @lululau JB 家的真有这玩意儿,refactor
    HytonightYX
        12
    HytonightYX  
    OP
       2020-12-26 17:18:29 +08:00
    @joysir 谢谢了,用你的办法解决了
    @lululau 确实呢,我也是第一时间想到 vim
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5579 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 07:23 · PVG 15:23 · LAX 23:23 · JFK 02:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.