在 Eclipse 中,是否有自动转换的方法:
int myX, myY, myZ;
...对此...
int myX;
int myY;
int myZ;
我认为我可以通过“清理”和“成员排序顺序”首选项来执行此操作,但它不会将多个声明分解为每行一个。有办法做到吗?
编辑:澄清一下,这是关于成员变量的。
虽然我不知道single函数是否可以做到这一点,但您可以通过几次按键获得类似的结果:
突出显示包含多个变量定义的行,然后使用查找/替换功能(按键:
Ctrl-F
)将逗号空格序列替换为分号、空格和变量类型。确保范围设置为“选定的行”,如以下屏幕截图所示:
现在您仍然会在一行中包含所有变量声明。这可以通过突出显示同一行和 Source > Format 功能(按键:
Shift-Ctrl-F
)来修复。
全部完成,现在您有了各自类型的变量,每行一个:
没有内置的清理或格式化选项来执行此操作(这让我感到惊讶)。然而,编写一个插件来做到这一点并不是非常困难。作为参考,您可以从此扩展点开始。
org.eclipse.jdt.internal.ui.fix.VariableDeclarationCleanUp
课程看起来像是一个可以作为示例和指导进行学习的课程。
Eclipse 不提供这种开箱即用的格式化功能。您可以使用
Checkstyle
插件来检查此以及更多编码标准。
在Checkstyle配置文件中,像这样使用模块
MultipleVariableDeclarations
,
<module name="Checker">
<module name="TreeWalker">
<property name="cacheFile" value="target/cachefile"/>
<property name="tabWidth" value="4"/>
...
<module name="MultipleVariableDeclarations"/>
...
</module>
</module>
如果您可以使用命令行工具,那么
astyle
和 GC GreatCode
是两个很好的代码格式化程序。
GC GreatCode
作为 C/C++ 代码格式化程序给出,但在这种情况下它可以很好地格式化您的代码。
在
GC
中,拆分变量声明的选项是 -code_split_decl_style
原代码:
String fileName, a, b, c;
使用
-code_split_decl_style-1
选项:
String fileName,
a,
b,
c;
使用
-code_split_decl_style-2
选项:
String fileName;
String a;
String b;
String c;
您可以使用
UniversalIndentGUI
在一个 GUI 工具中使用不同的命令行格式化工具和各种语言的配置。
Checkstyle:http://checkstyle.sourceforge.net/
Astyle:astyle.sourceforge.net/
GC GreateCode:http://sourceforge.net/projects/gcgreatcode/
UniversalIndentGUI:universalindent.sourceforge.net/
Eclipse似乎没有提供这方面的功能,我也没有找到可以做到这一点的插件。但假设您可以访问 awk,您可能会发现这个 awk 小脚本很有用:
{
if (match($0,/([a-z|A-Z|0-9|_]+)\s+(([a-z|A-Z|0-9|_]+)\s*,\s*)+([a-z|A-Z|0-9|_]+);/)) {
match($0,/(\s*[a-z|A-Z|0-9|_]+)\s+([^;]*)/,components);
split(components[2],vars,",");
for(i in vars) {
gsub (/'[[:cntrl:]]|[[:space:]]|\x20/,"",vars[i])
print components[1],vars[i]";"
}
}
else {
print $0;
}
}
它将完成所需的工作。假设您将其保存到文件 script.awk 您会这样称呼它
awk -f script.awk target_file.java
注意:您必须将输出定向到备用文件,否则您的源将被覆盖(清空)
因此,如果您想一次处理多个文件,您应该这样做(假设是 bash shell):
for f in *.java; do awk -f awk1.awk $f > $f.pr; done
对于每个 java 文件,这将创建一个以 .java.pr 结尾的新文件,然后您只需将它们移动到以 .java 结尾的文件中。
==================编辑=================
只想补充一点,Eclipse 存在支持选定区域的 bash/awk 脚本的插件。请看这里:
http://eclipseexeditor.sourceforge.net/ (对于较新版本的 Eclipse 来说可能比较旧)
还有这里:
因此,我的脚本与这些插件之一相结合可能会将所请求的功能添加到 Eclipse。
据我所知,Eclipse 中没有开箱即用的此类功能。
我假设您是一名 Java 程序员,因此您最好的选择是编写一个简单的程序,该程序将解析此类模式的源代码并根据需要将其转换为多行。然后在其上运行 clean up 以根据需要正确格式化。