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