首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么文本编辑器会使粘贴代码的缩进变形?

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

Stack Overflow用户
提问于 2011-12-03 23:47:28
回答 1查看 119关注 0票数 2

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

例如,当我粘贴代码时:

代码语言:javascript
代码运行次数:0
运行
复制
int i = 0;
for(; i < 5; ++i){
     System.out.println(i);
}

其效果通常如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
int i = 0;
    for(; i < 5; ++i){
         System.out.println(i);
    }

即使在使用像Eclipse这样的超高级IDE时,也会出现这个问题。这个问题的原因是什么?为什么我要处理它这么多年?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-06 12:38:26

那个问题的原因是什么?

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

Zeus编辑器做一些非常类似的事情。

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

代码语言:javascript
代码运行次数:0
运行
复制
System.out.println(i+1);
System.out.println(i+2);
System.out.println(i+3);

如果您随后将该代码粘贴到示例中,位置如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
int i = 0;
for(; i < 5; ++i){
    System.out.println(i);
} <-- place cursor on this line

您应该以下面的代码结束(这就是Zeus所做的):

代码语言:javascript
代码运行次数:0
运行
复制
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);
}

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

代码语言:javascript
代码运行次数:0
运行
复制
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);
}

这是聪明的缩进。

为什么我要处理这么多年?

IDE中应该有一个关闭此功能的选项。宙斯当然有这样的选择。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8368800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档