Как автоматически удалить конечные пробелы в Eclipse?

Вопрос состоит из двух частей, на одну из которых у меня уже есть ответ.

  1. Как автоматически удалить конечные пробелы из всего редактируемого файла? -> Ответ: используйте плагин AnyEdit, который можно настроить для этого при любом сохранении в файл.
  2. Как автоматически удалить конечные пробелы только из строк, которые я изменил? -> Этого я не знаю и буду признателен за любую помощь.

14 ответов

Решение
  1. Удаление пробелов из всего редактируемого файла:

Настройки -> Java -> Редакторы -> Сохранить действия -> проверить Выполнить выбранные действия при сохранении -> проверить Дополнительные действия -> нажать Настроить.. -> перейти на вкладку " Упорядочивание кода " -> проверить " Удалить завершающие пробелы" -> выбрать " Все строки".

  1. Удаление пробелов только из строк, которые я изменил:

Настройки -> Java -> Редактор -> Сохранить действия -> проверить "Выполнить выбранные действия при сохранении -> проверить Формат исходного кода -> выбрать Формат отредактированных строк.

Обратите внимание, что нет необходимости нажимать кнопку " Настроить параметры форматирования" на странице "Форматирование" - все стили кода автоматически включают удаление конечных пробелов. По крайней мере, я не смог найти параметр для этого в конфигурации Formatter, и он работал из коробки для встроенных соглашений Java, стилей Eclipse, Eclipse 2.1, а также GoogleStyle.

При использовании этой настройки вам, очевидно, также необходимо отключить решение части 1 вопроса.

Eclipse version checked: 4.5.2

Я предполагаю, что ваши вопросы касаются кода Java. Если это так, вам не нужны никакие дополнительные плагины для выполнения 1). Вы можете просто перейти в " Настройки" -> "Java" -> "Редактор" -> "Сохранить действия" и настроить его для удаления конечных пробелов.

Судя по всему, вы также хотите сделать это для всей команды, верно? Чтобы упростить жизнь и избежать необходимости настраивать ее каждый раз, когда у вас появляется новое рабочее пространство, вы можете установить действие сохранения как предпочтение, специфичное для проекта, которое сохраняется в вашем SCM вместе с кодом.

Для этого щелкните правой кнопкой мыши свой проект и перейдите в Свойства -> Редактор Java -> Сохранить действия. Оттуда вы можете включить конкретные настройки проекта и настроить его для удаления конечных пробелов (среди других полезных вещей).

Примечание: эта опция была удалена в Eclipse Kepler (4.3) и последующих выпусках.

NB # 2: вариант, кажется, вернулся в Eclipse Luna - Luna Service Release 1a (4.4.1)

Вам не нужен плагин для этого. Например, если вы кодируете JAVA, вы можете удалить конечные пробелы, конфигурируя действия сохранения:

Затмение 3.6

Настройки -> Java -> Редакторы -> Сохранить действия -> Проверить Выполнить выбранные действия при сохранении -> Проверить дополнительные действия -> Нажмите кнопку Настроить..

На вкладке " Упорядочение кода" установите флажок Удалить конечные пробелы.

PyDev может сделать это либо Ctrl+Shift+F, если у вас установлена ​​опция форматирования кода, либо во время сохранения:

Eclipse -> Окно -> Настройки -> PyDev -> Редактор -> Стиль кода -> Форматировщик кода:

Я использую по крайней мере это:

  • Автоформат перед сохранением
  • Правильные линии отделки?
  • Добавить новую строку в конец файла

Сделайте следующее:

Настройки -> Java -> Редактор -> Сохранить действия

Вы можете сопоставить ключ в Eclipse, чтобы вручную удалить конечные пробелы во всем файле, но только по запросу, а не автоматически при сохранении. (Предпочтение / Ключи, а затем сопоставить набор ключей с Файлом / Удалить конечные пробелы). Это может быть полезно, если вы хотите очистить все новые файлы, но оставить прежний код без изменений.

Другая стратегия заключается в том, чтобы активировать визуальное отображение пробелов, чтобы, по крайней мере, вы знали, когда добавляете пробелы в конце. Насколько я знаю, нет способа отобразить только пробелы, но я буду рад, что ошибся.

В крайнем случае, для тех редакторов, которые вообще не поддерживают удаление конечных пробелов (например, редактор XML), вы можете удалить его из всех строк, выполнив поиск и замену, включив регулярные выражения, а затем найдя "[\t ]+$"и заменить его на"" (пусто). Вероятно, есть лучшее регулярное выражение для этого, но оно работает для меня без необходимости устанавливать AnyEdit.

Я бы сказал AnyEdit тоже. Это не обеспечивает эту конкретную функциональность. Однако если вы и ваша команда используете функции AnyEdit при каждом действии сохранения, то при открытии файла у него не должно быть завершающих пробелов.

Таким образом, если вы измените этот файл и добавите новые конечные пробелы, то во время операции сохранения AnyEdit удалит только эти новые пробелы, поскольку они являются единственными конечными пробелами в этом файле.

Если по каким-либо причинам вам нужно сохранить конечные пробелы в строках, которые не были изменены вами, то у меня нет ответа для вас, и я не уверен, что такая функция существует в любом плагине Eclipse...

Сейчас это невозможно сделать в Eclipse в общем виде, но это можно изменить, если у вас есть базовые знания Java и свободное время, чтобы добавить базовую поддержку для этого https://bugs.eclipse.org/bugs/show_bug.cgi?id=180349

Зависимая проблема: https://bugs.eclipse.org/bugs/show_bug.cgi?id=311173

Для php есть также опция:

Есть действительно простой способ сделать это с помощью sed, инструмента командной строки Unix. Возможно, вы могли бы создать макрос в Eclipse для запуска этого:

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

Как сказал @Malvineous, это не профессионал, а обходной путь, чтобы использовать метод Find/Replace для удаления конечного пробела (ниже, включая вкладку U+0009 и пробел U+0020).
Просто нажмите Ctrl + F (или команду + F)

  1. найти [\t ][\t ]*$
  2. Заменить на пустую строку
  3. Используйте регулярные выражения
  4. Заменить все

дополнительно:
Для удаления пробела найдите ^[\t ][\t ]* вместо [\t ][\t ]*$
Для удаления пустых строк найдите ^\s*$\r?\n

Я использовал эту команду для git: git config --global core.whitespace cr-at-eol

Удаляет ^M символы, которые тянутся.

Я не знаю ни одного решения для второй части вашего вопроса. Причина в том, что не ясно, как определить, что я изменил. Изменилось когда? Просто между 2-мя сохранениями или между коммитами... По сути - забудьте об этом.

Я предполагаю, что вы хотели бы придерживаться некоторого руководства, но не трогайте остальную часть кода. Но руководство следует использовать в целом, а не для укусов и кусочков. Поэтому я предлагаю изменить весь код в соответствии с указаниями: это разовая операция, но убедитесь, что у всех ваших разработчиков одинаковый плагин (AnyEdit) с одинаковыми настройками для проекта.

Другие вопросы по тегам