Як автоматично видалити пробіл із заднім числом у Eclipse?


422

Питання має дві частини, на одну з яких я вже маю відповідь.

  1. Як автоматично видалити пробіли з останнього простору з усього редагованого файлу ? -> Відповідь: використовуйте плагін AnyEdit , який можна встановити для цього при будь-якому збереженні у файл.
  2. Як автоматично видалити пробіли з пробілами лише із змін, які я змінив ? -> Цього я не знаю і буду вдячний за будь-яку допомогу.

97
Я був би радий, якби я міг просто переконати Eclipse припинити додавати пробіли, які я не вводив.
divegeek

5
Вам не потрібен плагін. Просто використовуйте C ++ -> Редактор -> Збережіть дії. Також вкрай зручно -> Редактори -> Текстові редактори -> Показати символи пробілів (натисніть на нього, щоб отримати детальні налаштування) надзвичайно зручно.
Trass3r

3
Дія збереження за замовчуванням не обрізає пробіли білого простору в коментарях Java Doc. Крім того, це обмежено тим, що він працює лише для файлів Java. У нас є система огляду коду, яка позначає всі пробіли білого кольору як помилки. AnyEdit є безцінним, щоб піклуватися про пробіли пробілів для всіх типів файлів. Крім того, може бути корисно дізнатися, які обмеження у вашої компанії щодо програмного забезпечення третьої частини. Плагін AnyEdit має ліцензію на EPL ( opensource.org/licenses/eclipse-1.0.php ) [Звідси: andrei.gmxhome.de/anyedit/index.html]
Ashutosh Jindal

1
Я не міг зрозуміти, чому раптом білі пробіли в кінці рядків видаляються, доки я не побачив ваше запитання і не з’ясував, що це належить до AnyEditPlugin. Дякую!
Цафрір

Відповіді:


142
  1. Видалення пробілів з усього редагуючого файлу :

Preferences-> Java-> Editors-> Save Actions-> перевірити Perform the selected actions on save-> перевірити Additional actions-> натиснути Configure..-> перейти до Code organizingвкладки -> перевірити Remove trailing whitespace-> вибрати All lines.

  1. Видаляючи пробіли лише із змін, які я змінив :

Preferences-> Java-> Editor-> Save Actions-> перевірити " Perform the selected actions on save-> перевірити Format source code-> вибрати Format edited lines.

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

Використовуючи цю налаштування, очевидно, ви також повинні вимкнути рішення до частини 1 питання.

Eclipse version checked: 4.5.2, 4.11

Як визначити формат? Чи використовую посилання Форматтер або кнопку Налаштувати?
Vijay Kotari

Ця опція відображається і в PDT для PHP, і в розділі Зберегти дії.
thaddeusmt

1
@VijayKotari Відповідь відредаговано - не потрібно визначати формат.
Ян Żankowski

350

Я припускаю, що ваші запитання стосуються коду Java. У такому випадку вам не потрібні додаткові плагіни для виконання 1). Ви можете просто перейти до Налаштування -> Java -> Редактор -> Зберегти дії та налаштувати його, щоб видалити пробіли .

За звуками цього ви також хочете зробити це загальнонаціональне налаштування, правда? Щоб полегшити життя та уникнути необхідності пам’ятати про його налаштування кожного разу, коли у вас є нова робоча область, ви можете встановити дію збереження як особливий проект, який зберігається у вашій SCM разом із кодом.

Для цього натисніть правою кнопкою миші ваш проект та перейдіть до Властивості -> Редактор Java -> Зберегти дії . Звідти ви можете ввімкнути конкретні параметри проекту та налаштувати його, щоб видалити пробіли пробілу (серед інших корисних речей).

Примітка : Ця опція була видалена в Eclipse Kepler (4.3) та наступних випусках.

Примітка № 2: Можливо, варіант повернувся в Eclipse Luna -Luna Service Release 1a (4.4.1)


2
Дякую, gcastro - це простіше, ніж AnyEdit. На жаль, це для всього редагованого файлу .. досі не знаю, як це зробити лише для рядків, які я змінив - схоже, це зараз, мабуть, неможливо.
Ян Żankowski

7
Добре для Java; добре для C / C ++; але не для Python в PyDev.
Крейг МакКуїн

14
Для Python в PyDev я зробив запит на функцію для цього. Дивіться: sourceforge.net/tracker/…
Крейг МакКуїн

5
FYI ... Те саме поняття для PHP. Налаштування -> PHP -> Редактор -> Зберегти дії.
seanmrafferty

1
Я не знаю, чи це коли-небудь спрацювало, але це, звичайно, не працює в останній версії Eclipse (Kepler). Ви можете запускати форматер лише в редагованих рядках, але обрізка пробілів обмежена всіма рядками або ігнорування порожніх рядків - справді дратує.
Thor84no

73

Для цього вам не потрібен плагін. Наприклад, якщо ви кодуєте JAVA, ви можете стерти пробіли білого простору, налаштувавши дії збереження:

Затемнення 3.6

Preferences-> Java-> Editors-> Save Actions-> Перевірити Perform the selected actions on save-> Перевірити Additional actions-> Натисніть Configure..кнопку.

На Code organizingвкладці перевіртеRemove trailing whitespace


4
Це перша відповідь, яка спеціально радить переглядати розділ "Додаткові дії" для "Видалити пробіли пробілу". Дякую.
DavidRR

7
це працює лише для файлів .java, я зазвичай працюю з десятками розширень
Eildosa,

Працює для затемнення 4.12
Матильда

46

PyDev може це зробити або Ctrl+ Shift+, Fякщо для цього встановлено варіант форматування коду, або during saving:

Eclipse-> Window-> Preferences-> PyDev-> Editor-> Code Style-> Code Formatter:

Я використовую принаймні такі:

  • Автоматичний формат перед збереженням
  • Правильні обрізні лінії?
  • Додайте новий рядок в кінці файлу

5
Це не стосується питання позбавлення простору лише від редагованих рядків. Це також небезпечна функція, оскільки вона запускає всі параметри форматів коду, і неперевірена опція не є такою ж, як "ігнорувати / не використовувати". напр .: якщо "Використовувати простір після коми" не встановлено прапорець, Форматор коду видалить ці пробіли замість того, щоб ігнорувати параметр.
JCotton

7
У формат-коді PyDev є нова опція: у режимі збереження застосовуйте лише форматування у змінених рядках.
Варварюк

2
-1 за занадто загальну відповідь - питання стосувалося простору; ввімкнення автоматичного форматування коду означає, що у ваших джерелах почнеться непередбачене в них матеріалів, що спричинить брудну історію, оскільки комісії містять речі, не пов'язані з заголовком комісії.
Ерік Каплун


19

Ви можете зіставити ключ у Eclipse, щоб вручну видалити пробіли пробілів у всьому файлі, але лише за запитом, а не автоматично при збереженні. (Налаштування / Ключі, а потім встановіть набір ключів до Файл / Видалити пробіли пробілів) Це може бути корисно, якщо ви хочете оздоровити всі нові файли, але зберегти застарілий код недоторканим.

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


Дуже дякую за цю відповідь! Поки що це єдиний спосіб, який я знайшов для плагіна Aptana.
Ігор Зинов'єв

11

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


9

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

Отже, якщо ви модифікуєте цей файл та додаєте нові пробіли, під час операції збереження AnyEdit видалить лише ці нові пробіли, оскільки вони є єдиними проміжками у цьому файлі.

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


4
Так, я хотів би, щоб пробіли у рядках не були змінені мною. Це поведінка Intellij Idea за замовчуванням (видаляйте пробіли в моїх лініях, зберігайте їх у інших), і я хотів би отримати це в Eclipse . Дякую за відповідь.
Ян Żankowski

8

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

Залежне питання: https://bugs.eclipse.org/bugs/show_bug.cgi?id=311173



4

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

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

4

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

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

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


1
Як щодо [\t ]+$цього [\t ][\t ]*$?
Jonah Graham

1

Я не знаю жодного рішення другої частини вашого питання. Причина в тому, що незрозуміло, як визначити, що я змінив . Змінили коли? Якраз між двома збереженнями або між комісіями ... В основному - забудьте про це.

Я припускаю, що ви хочете дотримуватися певної настанови, але не торкайтеся решти коду. Але керівництво слід використовувати загалом, а не для укусів і шматочків. Тому моя пропозиція - змінити весь код на керівний принцип: це одноразова операція, але переконайтесь, що всі ваші розробники мають однаковий плагін (AnyEdit) з однаковими налаштуваннями для проекту.


7
Оскільки це дія збереження, це були б рядки, змінені між збереженнями. Eclipse вже відстежує ці лінії для позначення в бічній смузі.
starblue

0

Я використовував цю команду для git: git config --global core.whitespace cr-at-eol

Він видаляє ^Mсимволи, які знаходяться в кінці.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.