为什么文本编辑器会改变粘贴代码的缩进?

时间:2011-12-03 15:47:28

标签: text text-editor copy-paste paste

这似乎是与许多不同文本编辑器相关的非常通用的问题(或者可能是Windows中的复制粘贴机制?)。通常当我复制粘贴缩进代码的片段时,我最终会使第一行正确缩进,其余行向右移动一级并需要手动校正(这很烦人)。

例如,当我粘贴代码时:

int i = 0;
for(; i < 5; ++i){
     System.out.println(i);
}

效果通常如下:

int i = 0;
    for(; i < 5; ++i){
         System.out.println(i);
    }

即使使用Eclipse等超高级IDE,也会出现此问题。这个问题的原因是什么?为什么我这么多年来不得不处理它?<​​/ p>

1 个答案:

答案 0 :(得分:3)

  

该问题的原因是什么

IDE可能正在尝试代表您进行某种智能缩进,但在这种情况下,它看起来确实是一个错误。

Zeus编辑器做了类似的事情。

作为我的意思的一个例子,假设您将此文本复制到剪贴板:

System.out.println(i+1);
System.out.println(i+2);
System.out.println(i+3);

如果您将该代码粘贴到您的示例中,则显示在以下位置:

int i = 0;
for(; i < 5; ++i){
    System.out.println(i);
} <-- place cursor on this line

你应该最终得到这个代码(这就是宙斯所做的):

int i = 0;
for(; i < 5; ++i){
    System.out.println(i); < place cursor on this line
    System.out.println(i+1);
    System.out.println(i+2);
    System.out.println(i+3);
}

正如您所看到的,这与您可能预期的不同:

int i = 0;
for(; i < 5; ++i){
    System.out.println(i); < place cursor on this line
System.out.println(i+1);
System.out.println(i+2);
System.out.println(i+3);
}

那是智能缩进

  

为什么我这么多年不得不处理它?<​​/ p>

IDE中应该有一个选项可以关闭此功能。宙斯肯定有这样的选择。