Eclipse и Windows newlines
Мне пришлось переместить мое рабочее пространство Eclipse из Linux в Windows, когда мой рабочий стол вышел из строя. Неделю спустя я копирую его обратно в Linux, к счастью, пишу в CVS. И увы, новые строки Windows загрязнили многие файлы, поэтому CVS diff создает дамп всего файла, даже если я изменил одну или две строки!
Я мог бы подготовить сценарий, но мне интересно, не испортит ли он мои файлы проекта Eclipse.
6 ответов
Как уже упоминалось здесь и здесь:
Установите кодировку файла на
UTF-8
и окончания строк для новых файлов в Unix, так что текстовые файлы сохраняются в формате, который не является специфичным для ОС Windows и наиболее легко распространяются среди разнородных рабочих столов разработчиков:
- Перейдите к настройкам Рабочей области (Общие: Рабочая область)
- Измените кодировку текстового файла на
UTF-8
- Измените разделитель строки нового текстового файла на Другое и выберите Unix из списка выбора
- Примечание: чтобы преобразовать окончания строк существующего файла, откройте файл в Eclipse и выберите
File : Convert Line Delimiters to : Unix
Совет: Вы можете легко преобразовать существующий файл, выбрав его в Package Explorer, а затем перейдя к пункту меню. File : Convert Line Delimiters to : Unix
У меня были такие же, затмеваемые файлы даже при смене одной строки. Решение: Eclipse git settings -> Добавить запись: Ключ: core.autocrlf Значения: true
Есть удобная утилита bash - dos2unix
- конвертер форматов текстовых файлов DOS/MAC в UNIX, который, если он еще не установлен в вашем дистрибутиве, можно легко установить через менеджер пакетов. Страница man dos2unix
В дополнение к решениям Eclipse и инструменту, упомянутому в другом ответе, рассмотрите флип. Он может "переворачиваться" в любом случае между обычным переводом строки и переводом строки в Windows, и делает такие приятные вещи, как сохранение метки времени файла и другой статистики.
Вы можете использовать это так, чтобы решить вашу проблему:
find . -type f -not -path './.git/*' -exec flip -u {} \;
(Я добавляю пункт, чтобы игнорировать ваш каталог.git, если вы используете git, но поскольку flip игнорирует двоичные файлы по умолчанию, вам это может не понадобиться.)
Для рекурсивного удаления каретки возвращается (\r
) из файлов CVS/* во всех дочерних каталогах запустите следующее в оболочке unix:
find ./ -wholename "\*CVS/[RE]\*" -exec dos2unix -q -o {} \;
Вы можете попробовать. Проблема состоит в том, что Windows вставляет возврат каретки, а также перевод строки при вводе новой строки. Unix-системы просто вставляют перевод строки. Таким образом, дополнительный символ возврата каретки может быть причиной того, что ваше затмение портится с символами новой строки.
Возьмите один или два файла из вашего проекта и конвертируйте их. Вы можете использовать Notepad++ для этого. Просто откройте файл, перейдите в Format->Convert to Unix (когда вы используете Windows).
В Linux просто попробуйте это в командной строке:
sed 's/$'"/`echo \\\r`/" yourfile.java > output.java