Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Intellij中自动执行重复编辑操作_Java_Refactoring_Intellij Idea - Fatal编程技术网

Java 在Intellij中自动执行重复编辑操作

Java 在Intellij中自动执行重复编辑操作,java,refactoring,intellij-idea,Java,Refactoring,Intellij Idea,在Intellij IDEA中,自动化重复编辑操作的方法是什么 例如,我有一个包含几十个条目的文件,如下所示: public static final Test1 = new Test(A a1, B b); public static final Test2 = new Test(A a2, B b); public static final Test3 = new Test(A a3, B b); public static final Test4 = new Test(A a4, B b)

在Intellij IDEA中,自动化重复编辑操作的方法是什么

例如,我有一个包含几十个条目的文件,如下所示:

public static final Test1 = new Test(A a1, B b);
public static final Test2 = new Test(A a2, B b);
public static final Test3 = new Test(A a3, B b);
public static final Test4 = new Test(A a4, B b);

我想替换文件中的所有
bb
,并传递一个
null
参数。在像
gvim
这样的编辑器中很容易做到这一点,通常您会记录一个
,然后重复它。当Intellij的重构功能受到限制时,实现这种自动化的通常方法是什么?

如果您能够识别一种模式,您可以始终将文本复制到textpad或类似的地方,并执行正则表达式替换,然后将文本复制回来。我经常这样做

对于您的特定示例,请在textpad中尝试此选项-

  • F8-用于替换对话框
  • 查找内容:(测试([^,])+([^)]+)
  • 替换为:\1,null
  • 选中正则表达式复选框

  • 这在IntelliJ思想中也很容易。您可以切换到列模式编辑(从主菜单编辑|列模式),然后选择要替换的列,只需键入您的
    null


    同时检查此屏幕广播:

    也许您可以使用键盘宏录制器:


    或者您可以使用IDEA的功能

    我同意我的示例太简单,无法说明问题,但在很多情况下,简单的正则表达式替换将不起作用。假设我想从构造函数中重构出参数,将其移动到另一个文件并将其传递到另一个类的构造中。还有更多的实例需要更复杂的处理。宏似乎在某种程度上是有用的,但它们通常不像您在Intellij中所期望的那样工作。是的,正则表达式绝对是比普通的find-replace做更多事情的有用方法!!是的,这种重构是不可用的。但是,您可以更改方法签名/构造函数参数等,但您不能保留相同的签名并对某些调用说ChangeArgumat值——可以说,这不是重构。