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

<p>вопрос состоит из двух частей, на одну из которых у меня уже есть ответ.</p><ol> <li>как автоматически удалить конечные пробелы <strong> из всего редактируемого файла </strong>? -> ответ: используйте <a href="http://andrei.gmxhome.de/anyedit/">anyedit plugin</a> , который может быть установлен для этого при любом сохранении в файл.</li> <li>как автоматически удалить конечные пробелы <strong> только из строк, которые я изменил </strong>? -> это я не знаю и был бы признателен за любую помощь.</li> </ol>

<ol> <li>удаление пробела <em> из всего редактируемого файла </em>:</li> </ol><p><kbd>preferences</kbd> -> <kbd>java</kbd> -> <kbd>editors</kbd> -> <kbd>save actions</kbd> -> проверить <kbd>perform the selected actions on save</kbd> -> проверить <kbd>additional actions</kbd> -> нажмите <kbd>configure..</kbd> -> перейти к <kbd>code organizing</kbd> вкладка -> проверить <kbd>remove trailing whitespace</kbd> -> выбрать <kbd>all lines</kbd>,.</p><ol start="2"> <li>удаление пробелов <em> только из строк, которые я изменил </em>:</li> </ol><p><kbd>preferences</kbd> -> <kbd>java</kbd> -> <kbd>editor</kbd> -> <kbd>save actions</kbd> -> проверить "<kbd>perform the selected actions on save</kbd> -> проверить <kbd>format source code</kbd> -> выбрать <kbd>format edited lines</kbd>,.</p><p>обратите внимание, что нет необходимости нажимать <kbd>configure the formatter settings on the formatter page</kbd> - все стили кода автоматически включают удаление конечных пробелов. по крайней мере, я не смог найти параметр для этого в конфигурации formatter, и он работал из коробки для встроенных java условных обозначений, eclipse, eclipse 2.1, а также <a href="https://github.com/google/styleguide/blob/gh-pages/eclipse-java-google-style.xml">googlestyle</a> .</p><p>при использовании этой настройки вам, очевидно, также необходимо <strong> отключить </strong> решение части 1 вопроса.</p><pre><code>eclipse version checked: 4.5.2 </code></pre>

<p>я предполагаю, что ваши вопросы касаются java кода. если это так, вам не нужны никакие дополнительные плагины для выполнения 1). вы можете просто перейти к <strong>preferences -> java -> editor -> save actions</strong> и настроить его на <strong>удалить конечные пробелы</strong>.</p><p>судя по всему, вы также хотите сделать это для всей команды, верно? чтобы упростить жизнь и избежать необходимости настраивать ее каждый раз, когда у вас появляется новое рабочее пространство, вы можете установить действие сохранения как предпочтение конкретного проекта, которое сохраняется в вашем scm вместе с кодом.</p><p>для этого щелкните правой кнопкой мыши свой проект и перейдите в <strong>свойства -> java редактор -> сохранить действия</strong>. оттуда вы можете включить конкретные настройки проекта и настроить его для удаления конечных пробелов (среди других полезных вещей).</p><p><strong>nb</strong>: эта опция была удалена в eclipse kepler (4.3) и следующих выпусках.</p><p><strong>nb # 2:</strong> опция, похоже, вернулась в eclipse luna - <code>luna service release 1a (4.4.1)</code></p>

<p>вам не нужен плагин для этого. например, если вы кодируете java, вы можете удалить конечные пробелы, конфигурируя действия сохранения:</p><p><strong>затмение 3.6</strong></p><p><kbd>preferences</kbd> -> <kbd>java</kbd> -> <kbd>editors</kbd> -> <kbd>save actions</kbd> -> проверить <kbd>perform the selected actions on save</kbd> -> проверить <kbd>additional actions</kbd> -> нажмите <kbd>configure..</kbd> кнопка.</p><p>в <kbd>code organizing</kbd> вкладка, проверить <kbd>remove trailing whitespace</kbd></p>

<p><strong>pydev</strong> может сделать это либо <kbd>ctrl</kbd>+<kbd>shift</kbd>+<kbd>f</kbd> если у вас есть опция форматирования кода, или <kbd>during saving</kbd>:</p><p><kbd>eclipse</kbd> -> <kbd>window</kbd> -> <kbd>preferences</kbd> -> <kbd>pydev</kbd> -> <kbd>editor</kbd> -> <kbd>code style</kbd> -> <kbd>code formatter</kbd>:</p><p>я использую по крайней мере это:</p><ul> <li><em> автоформат перед сохранением </em></li> <li><em> правильные линии обрезки? </em></li> <li><em> добавить новую строку в конец файла </em></li> </ul>

<p>сделайте следующее:</p><p><kbd>preferences</kbd> -> <kbd>java</kbd> -> <kbd>editor</kbd> -> <kbd>save actions</kbd></p><p><img src="https://i.stack.imgur.com/c3ibc.png" alt="enter image description here"></p>

<p>вы можете сопоставить ключ в eclipse, чтобы вручную удалить конечные пробелы во всем файле, но только по запросу, а не автоматически при сохранении. (предпочтение/ключи, а затем сопоставить набор ключей с файлом/удалить конечные пробелы). это может быть полезно, если вы хотите очистить все новые файлы, но оставить прежний код без изменений.</p><p>другая стратегия заключается в том, чтобы активировать визуальное отображение пробелов, так что вы, по крайней мере, будете знать, когда добавляете пробелы в конце. насколько я знаю, нет никакого способа отобразить только конечные пробелы, но я буду рад оказаться ошибочным.</p>

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

<strong> невозможно </strong> сделать это в eclipse в общем виде прямо сейчас, <strong>, но это можно изменить </strong> дано с базовыми java знаниями и некоторым свободным временем, чтобы добавить базовую поддержку для этого <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=180349">https://bugs.eclipse.org/bugs/show_bug.cgi?id=180349 зависимая проблема: <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311173">https://bugs.eclipse.org/bugs/show_bug.cgi?id=31117 

я бы сказал anyedit тоже. это не обеспечивает эту конкретную функциональность. однако если вы и ваша команда используете функции anyedit при каждом действии сохранения, то при открытии файла у него не должно быть завершающих пробелов.таким образом, если вы измените этот файл и добавите новые конечные пробелы, то во время операции сохранения anyedit удалит только эти новые пробелы, поскольку они являются единственными конечными пробелами в этом файле.если по каким-либо причинам вам нужно оставить пробелы в строках, которые были <strong>не</strong> изменены вами, то у меня нет ответа для вас, и я не уверен, что такая функция существует в любом eclipse плагин ...

для php есть также опция:<img src="https://i.stack.imgur.com/n1a55.png" alt="enter image description here">

есть действительно простой способ сделать это с помощью sed, инструмента командной строки unix. возможно, вы могли бы создать макрос в eclipse для запуска этого:sed -i 's/[[:space:]]$//' <filename> </code></pre>

<p>как сказал @malvineous, это не профессионал, а обходной путь, чтобы использовать метод find/replace для удаления конечного пробела (ниже, включая вкладку u + 0009 и пробел u + 0020).<br> просто нажмите ctrl + f (или команду + f)</p><ol> <li><strong>найти</strong> <code>[\t ][\t ]*$ <strong>заменить на</strong> пустая строка используйте <strong>регулярные выражения</strong> <strong>заменить все</strong> <strong>дополнительно:</strong> для удаления начального пробела найдите ^[t ][t ] вместо [t ][t ]$</code><br> для удаления пустых строк найдите <code>^\s*$\r?\n</code><br></p>

<p>я не знаю ни одного решения для второй части вашего вопроса. причина в том, что не ясно, как определить <strong>я изменил</strong>. изменилось когда? просто между 2 сохранениями или между коммитами ... в основном - забудьте об этом.</p><p>я предполагаю, что вы хотели бы придерживаться некоторого руководства, но не трогайте остальную часть кода. но руководство должно использоваться в целом, а не для укусов и кусочков. поэтому я предлагаю изменить весь код в соответствии с указаниями: это разовая операция, но убедитесь, что у всех ваших разработчиков одинаковый плагин (anyedit) с одинаковыми настройками для проекта.</p>

<p>я использовал эту команду для git: <code>git config --global core.whitespace cr-at-eol</code></p><p>он удаляет <code>^m</code> символы, которые заканчиваются.</p>