我有一堆带有多个行注释序列的java文件:
// blah blah blah
// blah blah blah
// blah blah blah
我想将其转换为带有额外的开头和结尾行的块注释:
/**
* blah blah blah
* blah blah blah
* blah blah blah
*/
有没有简单的方法可以自动处理所有评论?最好使用Vim
或Eclipse
?
当然,我可以编写自己的脚本,但我希望有一个更简单的解决方案。
答案 0 :(得分:2)
对于 Vim ,您可以使用或多或少复杂的宏轻松完成此操作(取决于它的健壮性,是否需要支持带有计数的普通模式,可视模式或甚至自动调整现有评论的范围。
但是有几个注释器插件可以很好地做到这一点,并且它们都是通用的(并且通常是可扩展的),因此它们适用于任何文件类型:
使用第一个插件,您需要应用两个映射:首先将3<Leader>cu
取消注释(3行),然后使用3<Leader>cs
使用“性感”的多部分注释定界符。这几乎可以满足您的需求。您只需为JavaDoc注释插入另一个*
:
/*
* blah blah blah
* blah blah blah
* blah blah blah
*/
要找到行注释的后续行(假设从第一列开始),可以使用:help :range
。使范围从下一个注释行开始,并使其继续直到下一个不以行注释开头或为空的行。要开发此功能,使用:print
命令很方便:
:/^\/\/ /;/\%(^$\|^[^\/]\)/-1print
一旦成功,我们就可以触发 uncomment 映射(通过:normal
):
:/^\/\/ /;/\%(^$\|^[^\/]\)/-1normal \cu
这分别注释了每一行;对于(块)注释,我们需要将块作为一个整体进行处理,将[count]
传递给映射。幸运的是,现在更改标记界定了整个未注释的块,因此我们可以将它们用于:
:execute line("'[") | execute 'normal' (line("']") - line("'[") + 1) . '\cs'
如果不是最后一步,则可以通过:global
将更改应用于整个文件。相反,您需要重复触发上述步骤,直到到达缓冲区末尾。 递归宏可以为您完成此操作。然后,您可以通过:bufdo
或:argdo
将该宏应用于多个文件。但是您必须非常确定宏是可靠的,并且在某些极端情况下不会造成严重破坏。因此,这是一个权衡取舍,具体取决于您面临的情况。
答案 1 :(得分:0)
是的。有一个简单的方法。您可以使用以下快捷方式...
Ctrl + /
从当前行添加/ 删除行注释(//…)。
Ctrl + Shift + /
将所选的行括在块注释(/ *…* /)中。
答案 2 :(得分:0)
在Eclipse中,您可以通过以下方法进行此操作:
选择要注释的行和#!/usr/bin/expect
set oldIP "[lrange $argv 0 0]"
set newIP "[lrange $argv 1 1]"
set password "123..."
set admin "User"
set host localhost
spawn ssh '$admin'@'$oldIP'
expect -exact "Password: "
sleep 3
send -- "$password\r"
expect -exact "$host:~ user# "
send -- "rsync -azvH --numeric-ids -W --force /path/ '$newIP':/path/"
expect -exact "Password: "
sleep 3
send -- "$password\r"
sleep 1
send -- quit\n"
-(生成块行注释)
Ctrl + Shift + /
(运行Eclipse格式化程序)。
运行eclipse格式化程序将在注释的每一行上添加Ctrl + Shift + F
。
要删除评论,请*
答案 3 :(得分:-1)
您可以选择多行,然后在所有行上按Ctrl + /
放置/
。