Eclipse ve Windows yeni satırları


182

Eclipse çalışma alanımı masaüstüm çöktüğünde Linux'tan Windows'a taşımak zorunda kaldım. Bir hafta sonra tekrar Linux'a kopyaladım, mutlu bir şekilde kodlayın, CVS'ye bağlıyım. Ne yazık ki, windows yeni satırları birçok dosyayı kirletti, bu yüzden CVS diff bir veya iki satırı değiştirdiğimde bile tüm dosyayı dağıtıyor!

Bir senaryo hazırlayabilirim, ama Eclipse proje dosyalarımı bozup çözmeyeceğini merak ediyorum.


1
Sadece birkaç tıklamayla bir projedeki birkaç / tüm dosyalar için satır sonlarını dönüştürmek için: stackoverflow.com/a/7019737/1364747
Teddy

Yanıtlar:


358

Burada ve burada belirtildiği gibi :

UTF-8Yeni dosyaların dosya kodlamasını ve satır sonlarını Unix olarak ayarlayın, böylece metin dosyaları Windows işletim sistemine özgü olmayan bir biçimde kaydedilir ve heterojen geliştirici masaüstlerinde en kolay şekilde paylaşılır:

  • Çalışma Alanı tercihlerine gidin (Genel: Çalışma Alanı)
  • Metin Dosyası Kodlamasını şu şekilde değiştirin: UTF-8
  • Yeni Metin Dosyası Satırı Sınırlayıcısını Diğer olarak değiştirin ve seçim listesinden Unix'i seçin

alternatif metin

  • Not: mevcut bir dosyanın satır sonlarını dönüştürmek için dosyayı Eclipse'de açın ve File : Convert Line Delimiters to : Unix

İpucu : Paket Gezgini'nde öğesini seçip menü girişine giderek mevcut dosyayı kolayca dönüştürebilirsiniz.File : Convert Line Delimiters to : Unix


2
Tam olarak aradığım şey bu! Yeni dosyalar için zaten değiştirmiştim, ancak dönüştürme seçeneği - gözlerimi özledim. Teşekkürler VonC!
Vasu

@ Vasu: Rica ederim :). Anahat görünümü ve Paket Gezgini, genellikle göz ardı edilen çoktan seçmeli öğeler için bazı özellikler içerir.
VonC

Harika bir yazı. Eclipse'nin korkunç labirent tercihleri ​​iletişim kutusu aracılığıyla bunu kendim aramak beni deli ediyordu.
Cerin

39
Paket gezgininde bir projenin tamamını seçerseniz, projedeki File : Convert Line Delimiters to : Unixtüm dosyaları bir kerede "düzeltmek" komutunu kullanabilirsiniz .
Tal Weiss

11

Aynı satırda bir satır değişikliği olsa bile tutulma kirlenmiş dosyaları vardı. Çözüm: Eclipse git settings -> Giriş Ekle: Anahtar: core.autocrlf Değerler: true

resim açıklamasını buraya girin

resim açıklamasını buraya girin


Bu çoğu durumda iyi bir çözüm olsa da, örneğin kaynak dosyalar üzerinde sağlama toplamlarını hesaplarken sizi ısıtabilir. Bunlar daha sonra platformdan platforma farklılık gösterir.
zb226

8

Kullanışlı bir bash yardımcı programı vardır - dos2unix- DOS / MAC'den UNIX'e bir metin dosyası formatı dönüştürücüsüdür. dos2unix man sayfası


Eclipse çalışma alanım üzerinde bunu tekrar tekrar yapmak için bir senaryo yazmayı planlıyordum. Sadece endişe herhangi bir tutulma iç proje dosyalarını bozuyordu. Önerin için teşekkürler!
Vasu

7

Eclipse çözümlerine ve başka bir cevapta bahsedilen araca ek olarak, çevirmeyi düşünün . Normal ve Windows satır araları arasında herhangi bir şekilde 'çevirebilir' ve dosyanın zaman damgasını ve diğer istatistikleri korumak gibi güzel şeyler yapar.

Sorununuzu çözmek için bu şekilde kullanabilirsiniz:

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

(Git'i kullanmanız durumunda .git dizininizi yoksaymak için bir cümle koydum, ancak flip varsayılan olarak ikili dosyaları yok saydığından buna ihtiyacınız olmayabilir.)


Sadece bir not ... bu komut Windows kullanıcıları için değil Linux kullanıcıları içindir. Windows findbu şekilde çalışmaz.
Brad

@Brad doğru. Bununla birlikte, bir Cygwin flip limanı var: github.com/jaalto/cygwin-package--flip
Michael Scheper

3

Bir deneyebilirsin. Sorun, Windows'un yeni bir satır verildiğinde satır başı yanı sıra satır beslemesi eklemesidir. Unix sistemleri sadece bir satır beslemesi ekler. Ekstra satır başı karakteri, tutulmanızın yeni satırlarla uğraşmasının nedeni olabilir.

Projenizden bir veya iki dosya alın ve dönüştürün. Bunu yapmak için Notepad ++ kullanabilirsiniz. Dosyayı açın, Biçim-> Unix'e Dönüştür'e gidin (pencereleri kullanırken).

Linux'ta bunu bir komut satırında deneyin:

sed 's/$'"/`echo \\\r`/" yourfile.java > output.java

10k civarında dosyam var! Yani bir şekilde otomatikleştirmek zorunda kaldı. Tavsiye için teşekkürler!
Vasu

sed -i 's/$`echo \\\r`//' yourfile.javafind . -name "*.java" -exec sed -i 's/$`echo \\\r`//' {} \;
CLI'nızda

3

\rTüm alt dizinlerdeki satırbaşı ( ) CVS / * dosyalarından özyinelemeli olarak kaldırmak için , bir unix kabuğunda aşağıdakileri çalıştırın:

find ./ -wholename "\*CVS/[RE]\*" -exec dos2unix -q -o {} \;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.