java - 将java行注释自动转成块注释
问题描述
我有一堆带有多个行注释序列的java文件:
// blah blah blah
// blah blah blah
// blah blah blah
我想用额外的开头和结尾行将其转换为块注释:
/**
* blah blah blah
* blah blah blah
* blah blah blah
*/
是否有任何简单的方法可以自动处理所有评论?最好用Vim
or Eclipse
? 当然我可以编写自己的脚本,但我希望有一个更简单的解决方案。
解决方案
对于Vim,您可以使用或多或少复杂的宏轻松完成此操作(取决于它应该有多强大,是否需要支持带计数的普通模式、可视模式,甚至自动调整现有注释的范围)。
但是有几个评论器插件做得很好,它们是通用的(并且通常是可扩展的),因此它们适用于任何文件类型:
使用第一个插件,您需要应用两个映射:首先3<Leader>cu
取消注释(3 行),然后3<Leader>cs
使用“性感”多部分注释分隔符。这几乎会给你你想要的;您只需*
为 JavaDoc 注释插入另一个:
/*
* blah blah blah
* blah blah blah
* blah blah blah
*/
自动化
要定位行注释的后续行(这里假设从第一列开始),您可以使用:help :range
. 使范围从下一个注释行开始,并让它继续,直到下一行不以行注释开头,或者为空。要开发它,使用:print
命令很方便:
:/^\/\/ /;/\%(^$\|^[^\/]\)/-1print
一旦这工作,我们可以触发取消注释映射(通过:normal
):
:/^\/\/ /;/\%(^$\|^[^\/]\)/-1normal \cu
这将分别取消注释每一行;对于(块)注释,我们需要将块作为一个整体进行处理,将 a 传递[count]
给映射。幸运的是,更改标记现在分隔了整个未注释的块,因此我们可以使用它们:
- 导航回到起点
- 计算后续行数
- 触发性感评论映射
:execute line("'[") | execute 'normal' (line("']") - line("'[") + 1) . '\cs'
如果不是最后一步,则可以通过:global
. 相反,您需要重复触发上述步骤,直到到达缓冲区的末尾。递归宏可以为您做到这一点。:bufdo
然后,您可以通过或将该宏应用于多个文件:argdo
。但是你必须非常确定宏是健壮的,并且不会对某些极端情况造成严重破坏。因此,这是一个取舍,取决于您面临的事件数量。
推荐阅读
- python-3.x - VS Code Python 3-悬停在变量类型上
- node.js - Momentjs 在当前位置获取时间
- regex - 正则表达式删除 -i- 之后的所有内容(使用 -i-)
- python - QPushButton.clicked() 在使用 .ui 表单自动装配时触发两次
- java - 如何为 JTextfield 中的数值设置范围(例如 1 - 20)
- for-loop - for 循环是对引用还是按值操作?
- python - 如何强制 VSCode 使用 Python 3 而不是 Python 2?
- python - 将图例移出图形时,由线条和图片组成的matplotlib图例标签丢失线条
- python - 从 Python 网络爬虫创建 SQL 数据库
- python - 使用正则表达式python将文本文件拆分为单词