eclipse-plugin - 如何自動刪除Eclipse中的尾隨空白?




whitespace (13)

這個問題有兩個部分,其中一個我已經有了答案。

  1. 如何從正在編輯的整個文件中自動刪除尾隨空格? - >答:使用AnyEdit插件 ,可以將其設置為在任何保存到文件時執行該操作。
  2. 如何僅從我更改的行自動刪除尾部空白? - >這我不知道,並會很感激任何幫助。

Answers

請遵守

首選項 - > Java - > 編輯器 - > 保存操作


您可以在Eclipse中映射一個密鑰來手動刪除整個文件中的尾部空格,但只能根據請求而不是在保存時自動刪除。 (首選項/鍵,然後將一組密鑰映射到文件/刪除結尾空白)如果您想清理所有新文件,但保留原有代碼不變,這可能很有用。

另一個策略是激活空白的可視化顯示,所以至少你會知道什麼時候添加一些尾隨空白。 據我所知,沒有辦法只顯示尾隨空白,但我很樂意被證明是錯誤的。


我也會說AnyEdit。 它不提供這些特定的功能。 但是,如果您和您的團隊在每次保存操作時都使用AnyEdit功能,那麼當您打開文件時,它不能有任何尾隨空格。

因此,如果您修改此文件,並且添加了新的尾部空格,則在保存操作期間,AnyEdit將僅刪除這些新空格,因為它們是該文件中唯一的尾部空格。

如果由於某些原因,你需要保留未修改過的行的尾部空格,那麼我對你沒有任何答案,並且我不確定任何Eclipse插件中都存在這種功能。


我用這個命令git: git config --global core.whitespace cr-at-eol

它刪除正在拖尾的^M字符。


對於PHP也有一個選項:


我不知道你的問題的第二部分有任何解決方案。 原因是不清楚如何定義我改變了 。 什麼時候改變? 只需在2次保存或提交之間...基本上 - 忘記它。

我假設你想堅持一些指導原則,但不要觸及代碼的其餘部分。 但是指南應該全面使用,而不是用於叮咬和碎片。 所以我的建議是 - 將所有代碼更改為準則:它是一次性操作,但要確保所有開發人員具有相同的項目設置相同的插件(AnyEdit)。


你不需要任何插件來做到這一點。 例如,如果您編寫JAVA代碼,則可以擦除配置保存操作的尾部空白:

Eclipse 3.6

首選項 - > Java - > 編輯器 - > 保存操作 - >檢查在保存時執行所選操作 - >檢查其他操作 - >單擊配置..按鈕。

代碼組織選項卡中,選中刪除結尾空白


我假設你的問題與Java代碼有關。 如果是這樣的話,你實際上並不需要額外的插件來完成1)。 您可以轉到首選項 - > Java - >編輯器 - >保存操作並將其配置為刪除尾隨空白

通過它的聲音,你也想讓它成為整個團隊的設置,對吧? 為了讓生活更輕鬆,避免每次擁有新工作區時記住設置,您可以將保存操作設置為項目特定首選項,並將其與代碼一起存儲到SCM中。

為了做到這一點,右鍵單擊您的項目,然後轉到屬性 - > Java編輯器 - >保存操作 。 從那裡你可以啟用項目特定的設置,並將其配置為刪除尾隨空白(以及其他有用的東西)。

注意 :這個選項在Eclipse Kepler(4.3)和後續版本中已被刪除。

注意事項#2:該選項似乎回到Eclipse Luna - Luna Service Release 1a (4.4.1)


正如@Malvineous說的那樣,這不是專業的,而是使用查找/替換方法刪除尾部空格(下麵包括標籤U + 0009和空白U + 0020)。
只需按Ctrl + F(或命令+ F)

  1. 找到 [\t ][\t ]*$
  2. 空白字符串替換
  3. 使用正則表達式
  4. 全部替換

額外:
要刪除前導空間,請查找^[\t ][\t ]*而不是[\t ][\t ]*$
要刪除空白行,請查找^\s*$\r?\n


使用Unix命令行工具sed有一個非常簡單的方法。 你可以在Eclipse中創建一個宏來運行它:

sed -i 's/[[:space:]]*$//' <filename>

  1. 從正在編輯的整個文件中刪除空格:

首選項 - > Java - > 編輯 - > 保存動作 - >檢查在保存時執行所選操作 - >檢查其他操作 - >單擊配置..- >轉到代碼管理選項卡 - >檢查刪除末尾空白 - >選擇所有行

  1. 僅從我更改的行刪除空格:

首選項 - > Java - > 編輯器 - > 保存操作 - >選中“ 在保存時執行所選操作 - >檢查格式源代碼 - >選擇格式化編輯的行

請注意,沒有必要在Formatter頁面上單擊“ 配置格式化程序設置” - 所有代碼樣式都會自動包括刪除末尾的空白。 至少我在Formatter配置中找不到這樣的設置,並且它為內置Java約定,Eclipse,Eclipse 2.1樣式以及GoogleStyle

使用這種設置時,您顯然還需要關閉問題第1部分的解決方案。

Eclipse version checked: 4.5.2

對於那些不支持刪除尾隨空白(例如XML編輯器)的編輯來說,您可以通過查找和替換來移除它,啟用正則表達式,然後找到“[\ t]”, + $“並將其替換為”“(空白)。 有可能是一個更好的正則表達式,但它適用於我而不需要安裝AnyEdit。


你已經從Gursel Koca得到了正確的答案,但我相信很有可能這不是你真正想做的。 如何解析鍵值而不是?

import java.util.Enumeration;
import java.util.Hashtable;

class SplitIt {
  public static void main(String args[])  {

    String person = "name=john age=13 year=2001";

    for (String p : person.split("\\s")) {
      String[] keyValue = p.split("=");
      System.out.println(keyValue[0] + " = " + keyValue[1]);
    }
  }
}

輸出:
name = john
年齡= 13歲
年= 2001年





eclipse eclipse-plugin whitespace