2013-07-14 63 views
2

我在Emacs中遇到了縮進問題。當與VIM查看同一個文件時,Emacs縮進不起作用

每當我在Emacs中縮進代碼時它看起來不錯,但是當我在VIM/Github/Eclipse中查看相同的代碼時,有部分代碼沒有縮進。

例子:

這是我在Emacs中看到:

public class Test { 
    public static void main(String[] args) { 
     System.out.println("Hello, World!"); 
    } 
} 

這是我看到其他編輯:

public class Test { 
    public static void main(String[] args) { 
    System.out.println("Hello, World!"); 
    } 
} 

我在這看到的語言是: - C - Java - JavaScript

我還沒有試圖模擬其他語言atm的行爲...

我也看到這些症狀在我從我的一些老師那裏收到的一些代碼中,我知道使用Emacs生成預定義的代碼,我將在Eclipse/VIM/Github中查看代碼。

還有一件事:在linux上使用'cat'顯示由Emacs製作的縮進是正確的!這是除Emacs之外唯一能做到的事情......

有什麼辦法可以防止這種情況發生嗎?這不是一個大問題,但非常惱人的atm,我一直無法提出解決方案。

回答

4

這很可能是製表符與空格問題。 Emacs可能會將這些標籤顯示爲八個空格,因爲這是貓會使用的標準。

在vim中運行:set list以查看哪些字符構成了空白。如果要使縮進顯示相同,則需要將所有編輯器配置爲使用相同的縮進(最好)或將它們配置爲至少將製表符顯示爲相同的空格數。

相關的vim設置:expandtab,tabstop
相關的emacs設置:tab-widthindent-tabs-mode

+2

同樣,'M-x whitespace-mode'應該在Emacs中爲你指出空白字符。 Emacs Wiki上有很多關於配置縮進的信息,以及S.O的許多其他Q&A。總而言之,它可能會更復雜,你會期望,所以你可能想要花一些時間閱讀細節。 – phils

+0

謝謝!它現在正在使用indent-tabs-mode禁用。還有關於以下方面的重要提示:設置列表和M-x空白模式以查看更改。 – henninglh