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

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

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

Ответ 1

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

PreferencesJavaEditorsSave Actions → проверить Perform the selected actions on save → проверить Additional actions → нажмите Configure.. → перейти на вкладку Code organizing → проверить Remove trailing whitespace → выберите All lines.

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

PreferencesJavaEditorSave Actions → проверить "Perform the selected actions on save → проверить Format source code → выберите Format edited lines.

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

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

Eclipse version checked: 4.5.2

Ответ 2

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

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

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

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

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

Ответ 3

Для этого вам не нужен плагин. Например, если вы закодируете JAVA, вы можете стереть конечные пробелы, настраивая save actions:

Eclipse 3.6

PreferencesJavaEditorsSave Actions → Проверить Perform the selected actions on save → Проверить Additional actions → Нажмите кнопку Configure...

На вкладке Code organizing установите флажок Remove trailing whitespace

Ответ 4

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

EclipseWindowPreferencesPyDevEditorCode StyleCode Formatter:

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

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

Ответ 5

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

PreferencesJavaEditorSave Actions

enter image description here

Ответ 6

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

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

Ответ 7

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

Ответ 8

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

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

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

Ответ 10

Для php существует также опция: enter image description here

Ответ 11

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

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

Ответ 12

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

  • Найти [\t ][\t ]*$
  • Заменить с помощью пустой строки
  • Использовать Регулярные выражения
  • Заменить все

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

Ответ 13

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

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

Ответ 14

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

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