2011-12-03 68 views
2

這似乎是與許多不同的文本編輯器(或者在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,即使發生。這個問題的原因是什麼,爲什麼我必須處理這麼多年?

+0

在粘貼模式下粘貼時,在vim/gvim中沒有這個問題http://ayaz.wordpress.com/2008/06/21/paste-mode-pasting-text-and-indenting-it-in -vim/ – number5

回答

3

那是什麼問題

原因的IDE可能是試圖做某種智能代表您縮進,但在這種情況下,它看起來像一個bug。

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中應該有一個選項來關閉此功能。宙斯當然有這樣的選擇。

+1

是的,可能它實際上是某種智能縮進。我會盡力把它關掉以確保。謝謝! –

相關問題