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

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

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

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

Настройки -> Java -> Редакторы -> Сохранить действия -> проверить Выполнить выбранные действия по сохранению -> проверить Дополнительные действия -> нажмите « Настроить» -> перейти на вкладку « Организация кодов » -> « Удалить». Удалить конечные пробелы -> выберите « Все строки» .

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

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

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

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

Eclipse version checked: 4.5.2 

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

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

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

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

NB # 2: Опция, похоже, вернулась в Eclipse Luna – Luna Service Release 1a (4.4.1)

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

Eclipse 3.6

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

На вкладке « Организация кода» установите флажок « Удалить конечные пробелы»

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

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

Я использую, по крайней мере, следующие:

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

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

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

введите описание изображения здесь

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

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

В крайнем случае, для тех редакторов, которые вообще не поддерживают удаление конечных пробелов (например, редактор 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:]]*$//'  

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

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

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

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

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

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

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

Давайте будем гением компьютера.