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

2020-12-25 20:20:56 +08:00
 HytonightYX

如图

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

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

2045 次点击
所在节点    程序员
12 条回复
billlee
2020-12-25 21:37:22 +08:00
大规模的修改 vim 不好搞的,万一有个字符串字面值里面有 // 怎么办?这种事情还是交给专业的 IDE 去做
vim 擅长的是 ad hoc 修改需求
RustingSword
2020-12-25 21:41:29 +08:00
:%s#\(.*\) //\(.*\)#/\*\*\r \*\2\r\ */\r\1#g

试了一下,缩进还需要再自动格式化一次。
joysir
2020-12-25 21:44:20 +08:00
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
2020-12-25 21:45:48 +08:00
@joysir 说明下,格式不太好看:短横线之后是该宏的说明,之前是具体的宏操作。
crs0910
2020-12-25 21:46:40 +08:00
.s,\(.*\)//\(.*\),\r/**\r* \2\r*/\r\1

慎用
Kasumi20
2020-12-25 21:47:54 +08:00
Node.js 处理一遍呗
crs0910
2020-12-25 21:55:45 +08:00
crs0910
2020-12-25 22:10:06 +08:00
也可以用 typescript 的 api 自己 transform
https://github.com/dsherret/ts-morph
lululau
2020-12-25 22:17:12 +08:00
服了 1 楼了,以为你要说交给脚本去处理呢,还大型 ide,哪个大型 ide 有这样的功能?哪个大型 ide 比 vim 或脚本更适合处理这个问题
lululau
2020-12-25 22:22:28 +08:00
fastmod '^(\s*)(.*) // (.*)' '$1/**'$'\n''$1 * $3'$'\n''$1 */'$'\n''$1$2' demo.js
learningman
2020-12-25 23:34:33 +08:00
@lululau JB 家的真有这玩意儿,refactor
HytonightYX
2020-12-26 17:18:29 +08:00
@joysir 谢谢了,用你的办法解决了
@lululau 确实呢,我也是第一时间想到 vim

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/739024

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX