Как автоматически удалить конечные пробелы в Eclipse?
Вопрос состоит из двух частей, на одну из которых у меня уже есть ответ.
- Как автоматически удалить конечные пробелы из всего редактируемого файла? -> Ответ: используйте плагин AnyEdit, который можно настроить для этого при любом сохранении в файл.
- Как автоматически удалить конечные пробелы только из строк, которые я изменил? -> Этого я не знаю и буду признателен за любую помощь.
14 ответов
- Удаление пробелов из всего редактируемого файла:
Настройки -> Java -> Редакторы -> Сохранить действия -> проверить Выполнить выбранные действия при сохранении -> проверить Дополнительные действия -> нажать Настроить.. -> перейти на вкладку " Упорядочивание кода " -> проверить " Удалить завершающие пробелы" -> выбрать " Все строки".
- Удаление пробелов только из строк, которые я изменил:
Настройки -> 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
Есть действительно простой способ сделать это с помощью sed, инструмента командной строки Unix. Возможно, вы могли бы создать макрос в Eclipse для запуска этого:
sed -i 's/[[:space:]]*$//' <filename>
Как сказал @Malvineous, это не профессионал, а обходной путь, чтобы использовать метод Find/Replace для удаления конечного пробела (ниже, включая вкладку U+0009 и пробел U+0020).
Просто нажмите Ctrl + F (или команду + F)
- найти
[\t ][\t ]*$
- Заменить на пустую строку
- Используйте регулярные выражения
- Заменить все
дополнительно:
Для удаления пробела найдите ^[\t ][\t ]*
вместо [\t ][\t ]*$
Для удаления пустых строк найдите ^\s*$\r?\n
Я использовал эту команду для git: git config --global core.whitespace cr-at-eol
Удаляет ^M
символы, которые тянутся.
Я не знаю ни одного решения для второй части вашего вопроса. Причина в том, что не ясно, как определить, что я изменил. Изменилось когда? Просто между 2-мя сохранениями или между коммитами... По сути - забудьте об этом.
Я предполагаю, что вы хотели бы придерживаться некоторого руководства, но не трогайте остальную часть кода. Но руководство следует использовать в целом, а не для укусов и кусочков. Поэтому я предлагаю изменить весь код в соответствии с указаниями: это разовая операция, но убедитесь, что у всех ваших разработчиков одинаковый плагин (AnyEdit) с одинаковыми настройками для проекта.