Nowe znaki w Eclipse i Windows

182

Musiałem przenieść mój obszar roboczy Eclipse z Linuksa na Windows, gdy mój komputer się zawiesił. Tydzień później kopiuję go z powrotem do Linuksa, szczęśliwie koduję, zobowiązuję się do CVS. I niestety, nowe wiersze systemu Windows zanieczyściły wiele plików, więc CVS ​​diff zrzuca cały plik, nawet gdy zmieniłem wiersz lub dwa!

Mogę przygotować skrypt, ale zastanawiam się, czy nie zepsuje on plików projektu Eclipse.

Vasu
źródło
1
Do konwertowania zakończeń linii dla kilku / wszystkich plików w projekcie za pomocą zaledwie kilku kliknięć: stackoverflow.com/a/7019737/1364747
Teddy

Odpowiedzi:

358

Jak wspomniano tutaj i tutaj :

Ustaw kodowanie plików UTF-8i zakończenia linii dla nowych plików na Unix, aby pliki tekstowe były zapisywane w formacie, który nie jest specyficzny dla systemu operacyjnego Windows i najłatwiejszy do udostępniania na heterogenicznych pulpitach programistów:

  • Przejdź do preferencji obszaru roboczego (Ogólne: obszar roboczy)
  • Zmień kodowanie pliku tekstowego na UTF-8
  • Zmień Nowy ogranicznik linii pliku tekstowego na Inny i wybierz z listy wyboru Uniks

alternatywny tekst

  • Uwaga: aby przekonwertować zakończenia linii istniejącego pliku, otwórz plik w Eclipse i wybierz File : Convert Line Delimiters to : Unix

Wskazówka : Możesz łatwo przekonwertować istniejący plik, wybierając go w Eksploratorze pakietów, a następnie przechodząc do pozycji menuFile : Convert Line Delimiters to : Unix

VonC
źródło
2
Właśnie tego szukałem! Zmieniłem już to dla nowych plików, ale opcja konwersji - brakowało mi oczu. Dzięki VonC!
Vasu,
@Vasu: nie ma za co :). Widok konspektu i Eksplorator pakietów zawierają pewne funkcje dla wielu wybranych elementów, które są często pomijane.
VonC
Świetny opis. Samo szukanie tego w okropnie labiryntowym oknie preferencji Eclipse doprowadzało mnie do szaleństwa.
Cerin,
39
Jeśli wybierzesz cały projekt w eksploratorze pakietów, możesz użyć File : Convert Line Delimiters to : Unixpolecenia, aby „naprawić” wszystkie pliki w projekcie na raz.
Tal Weiss,
11

Miałem te same, zanieczyszczone przez zaćmienie pliki, nawet przy jednej zmianie linii. Rozwiązanie: Ustawienia git Eclipse -> Dodaj wpis: Klucz: core.autocrlf Wartości: true

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

użytkownik988282
źródło
Chociaż jest to dobre rozwiązanie w większości przypadków, może cię ugryźć - na przykład podczas obliczania sum kontrolnych na plikach źródłowych. Różnią się one następnie w zależności od platformy.
zb226
8

Istnieje przydatne narzędzie bash - dos2unix- które jest konwerterem formatu plików tekstowych DOS / MAC na UNIX, który, jeśli nie jest jeszcze zainstalowany na twojej dystrybucji, powinien być łatwy do zainstalowania za pomocą menedżera pakietów. strona podręcznika dos2unix

Ben Hayden
źródło
Planowałem napisać skrypt, aby rekurencyjnie robić to w moim obszarze roboczym zaćmienia. Jedynym zmartwieniem było uszkodzenie jakichkolwiek wewnętrznych plików projektu zaćmienia. Dzięki za Twoją sugestię!
Vasu,
7

Oprócz rozwiązań Eclipse i narzędzia wymienionego w innej odpowiedzi , zastanów się nad flip . Może „przerzucać” w obie strony między normalnym a Windowsowym łamaniem linii i robi fajne rzeczy, takie jak zachowanie znacznika czasu pliku i innych statystyk.

Możesz użyć tego w ten sposób, aby rozwiązać problem:

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

(Wstawiłem klauzulę, aby zignorować twój katalog .git, na wypadek, gdybyś używał git, ale ponieważ flip domyślnie ignoruje pliki binarne, możesz tego nie potrzebować.)

Michael Scheper
źródło
Tylko uwaga ... to polecenie jest przeznaczone dla użytkowników systemu Linux, a nie użytkowników systemu Windows. Windows findnie działa w ten sposób.
Brad
@Brad jest poprawny. Istnieje jednak port Cygwin flip: github.com/jaalto/cygwin-package--flip
Michael
3

Możesz spróbować. Problem polega na tym, że po wstawieniu nowego wiersza system Windows wstawia znak powrotu karetki oraz znak wiersza. Systemy uniksowe po prostu wstawiają linię. Tak więc dodatkowy znak powrotu karetki może być powodem, dla którego twoje zaćmienie miesza się z nowymi liniami.

Weź jeden lub dwa pliki ze swojego projektu i przekonwertuj je. W tym celu możesz użyć Notepad ++. Wystarczy otworzyć plik, przejdź do Format-> Konwertuj na Unix (gdy używasz systemu Windows).

W systemie Linux po prostu spróbuj tego w wierszu polecenia:

sed 's/$'"/`echo \\\r`/" yourfile.java > output.java
Szynka Vocke
źródło
Mam około 10 000 plików! Musiałem więc jakoś to zautomatyzować. Dzięki za radę!
Vasu,
Niektóre błędy literówek w interfejsie CLI: sed -i 's/$`echo \\\r`//' yourfile.javai w celu zautomatyzowania gofind . -name "*.java" -exec sed -i 's/$`echo \\\r`//' {} \;
pdem
3

Aby rekurencyjnie usunąć return return ( \r) z plików CVS / * we wszystkich katalogach potomnych, uruchom następujące polecenie w powłoce unix:

find ./ -wholename "\*CVS/[RE]\*" -exec dos2unix -q -o {} \;
Gabe
źródło