Eclipse и новые строки Windows

Мне пришлось переместить рабочее пространство Eclipse с Linux на Windows, когда мой рабочий стол сломался. Через неделю я копирую его обратно в Linux, успешно кодирую, фиксирую в CVS. И, увы, новые строки Windows загрязнили многие файлы, поэтому CVS diff выгружает весь файл, даже если я изменил строку или две!

Я мог бы придумать сценарий, но мне интересно, не испортит ли он мои файлы проекта Eclipse.


person Vasu    schedule 11.12.2009    source источник
comment
Для преобразования окончаний строк для нескольких / всех файлов в проекте всего несколькими щелчками мыши: stackoverflow.com/a/7019737/1364747   -  person Teddy    schedule 04.07.2017


Ответы (6)


Как упоминалось, здесь и здесь:

Установите кодировку файлов на UTF-8, а окончание строк для новых файлов - на Unix, чтобы текстовые файлы сохранялись в формате, который не является специфическим для ОС Windows и который проще всего использовать для разнородных рабочих столов разработчиков:

  • Перейдите к настройкам рабочей области (Общие: Рабочая область)
  • Измените кодировку текстового файла на UTF-8
  • Измените разделитель строк в новом текстовом файле на «Другой» и выберите Unix в раскрывающемся списке.

alt text

  • Примечание: чтобы преобразовать окончания строк в существующем файле, откройте файл в Eclipse и выберите File : Convert Line Delimiters to : Unix

Совет. Вы можете легко преобразовать существующий файл, выбрав его в проводнике пакетов, а затем перейдя к пункту меню File : Convert Line Delimiters to : Unix

person VonC    schedule 11.12.2009
comment
Это именно то, что я искал! Я его уже поменял на новые файлы, но вариант конвертировать - упустил мне глаза. Спасибо, VonC! - person Vasu; 12.12.2009
comment
@Vasu: пожалуйста :). Представление Outline и Package Explorer содержат некоторые функции для множественного выбора элементов, которые часто упускаются из виду. - person VonC; 12.12.2009
comment
Отличное описание. Сам поиск этого через ужасно лабиринтный диалог настроек Затмения сводил меня с ума. - person Cerin; 13.06.2011
comment
Если вы выбрали весь проект в проводнике пакетов, вы можете использовать команду File : Convert Line Delimiters to : Unix, чтобы исправить все файлы в проекте сразу. - person Tal Weiss; 02.11.2012

У меня были такие же загрязненные файлы eclipse даже после изменения одной строки. Решение: настройки Eclipse git -> Добавить запись: Ключ: core.autocrlf Значения: true

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

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

person user988282    schedule 11.11.2016
comment
Хотя это подходящее решение для большинства случаев, оно может вас укусить - например, когда вы вычисляете контрольные суммы по исходным файлам. Тогда они будут отличаться от платформы к платформе. - person zb226; 06.04.2020

Существует удобная утилита bash - dos2unix, которая представляет собой преобразователь формата текстовых файлов DOS / MAC в UNIX, который, если он еще не установлен в вашем дистрибутиве, должен быть легко установлен через диспетчер пакетов. справочная страница dos2unix

person Ben Hayden    schedule 11.12.2009
comment
Я планировал написать сценарий, чтобы рекурсивно делать это в моем рабочем пространстве eclipse. Единственное беспокойство заключалось в том, что были повреждены любые внутренние файлы проекта eclipse. Спасибо за ваше предложение! - person Vasu; 12.12.2009

В дополнение к решениям Eclipse и инструменту, упомянутому в другом ответе, рассмотрите возможность перевернуть. Он может «переключаться» в любую сторону между обычным переносом строки и переносом строки Windows, а также делает приятные вещи, например, сохраняет временную метку файла и другую статистику.

Вы можете использовать это так, чтобы решить вашу проблему:

find . -type f -not -path './.git/*' -exec flip -u {} \;

(Я добавил предложение игнорировать ваш каталог .git, если вы используете git, но поскольку flip по умолчанию игнорирует двоичные файлы, вам это может не понадобиться.)

person Michael Scheper    schedule 10.01.2013
comment
Просто примечание ... эта команда предназначена для пользователей Linux, а не Windows. Windows find так не работает. - person Brad; 31.05.2015
comment
@Brad правильный. Однако существует порт переворота Cygwin: github.com/jaalto/cygwin-package- -flip - person Michael Scheper; 31.05.2015

Вы можете попробовать. Проблема в том, что Windows вставляет возврат каретки, а также перевод строки при вводе новой строки. Unix-системы просто вставляют перевод строки. Таким образом, дополнительный символ возврата каретки может быть причиной того, что ваше затмение испортилось с новыми строками.

Возьмите один или два файла из своего проекта и конвертируйте их. Для этого вы можете использовать Notepad ++. Просто откройте файл, перейдите в Формат-> Преобразовать в Unix (когда вы используете Windows).

В Linux просто попробуйте это в командной строке:

sed 's/$'"/`echo \\\r`/" yourfile.java > output.java
person Ham Vocke    schedule 11.12.2009
comment
У меня около 10к файлов! Так что пришлось как-то автоматизировать. Спасибо за совет! - person Vasu; 12.12.2009
comment
Некоторая опечатка в вашем интерфейсе командной строки: sed -i 's/$`echo \\\r`//' yourfile.java и для автоматизации find . -name "*.java" -exec sed -i 's/$`echo \\\r`//' {} \; - person pdem; 07.03.2018

Чтобы рекурсивно удалить символы возврата каретки (\r) из файлов CVS / * во всех дочерних каталогах, выполните в оболочке unix следующее:

find ./ -wholename "\*CVS/[RE]\*" -exec dos2unix -q -o {} \;
person Gabe    schedule 10.08.2011