Почему текстовые редакторы деформируют отступ вставленного кода? - PullRequest
2 голосов
/ 03 декабря 2011

Это, кажется, очень общая проблема, связанная со многими различными текстовыми редакторами (или, может быть, механизм копирования и вставки в Windows?). Часто, когда я копирую и вставляю фрагменты кода с отступом, получается, что первая строка имеет правильный отступ, а остальные строки сдвигаются вправо на один уровень и нуждаются в ручной коррекции (что раздражает).

Например, когда я вставляю код:

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

Эффект часто выглядит так:

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

Эта проблема возникает даже при использовании ультра-продвинутых IDE, таких как Eclipse. В чем причина этой проблемы и почему я так долго с ней сталкивался?

1 Ответ

3 голосов
/ 06 декабря 2011

В чем причина этой проблемы

Возможно, IDE пытается выполнить какое-то интеллектуальное отступление 1006 * от вашего имени, но в этом случаевыглядит как ошибка.

Редактор 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);
}

То есть умный отступ .

почему мне приходилось сталкиваться с этим в течение многих лет?

В IDE должна быть возможность отключить эту функцию.Зевс, безусловно, имеет такую ​​возможность.

...