189 votes

Les nouvelles lignes d'Eclipse et de Windows

J'ai dû déplacer mon espace de travail Eclipse de Linux à Windows lorsque mon ordinateur s'est effondré. Une semaine plus tard, je le recopie sur Linux, je code joyeusement, je fais un commit sur CVS. Et hélas, les nouvelles lignes de Windows ont pollué de nombreux fichiers, de sorte que CVS diff vide le fichier entier, même si j'ai changé une ligne ou deux !

Je pourrais préparer un script, mais je me demande si cela ne va pas perturber mes fichiers de projet Eclipse.

1 votes

Pour convertir les fins de ligne de quelques fichiers ou de tous les fichiers d'un projet en quelques clics seulement : stackoverflow.com/a/7019737/1364747

363voto

VonC Points 414372

Comme indiqué aquí y aquí :

Définir l'encodage du fichier à UTF-8 et les fins de ligne pour les nouveaux fichiers vers Unix, de sorte que les fichiers texte sont enregistrés dans un format qui n'est pas spécifique au système d'exploitation Windows et plus facilement partagé sur des bureaux de développeurs hétérogènes :

  • Accédez aux préférences de l'espace de travail (General:Workspace).
  • Changez le codage du fichier texte en UTF-8
  • Remplacez le nouveau délimiteur de ligne du fichier texte par Autre et choisissez Unix dans la liste de sélection.

alt text

  • Remarque : pour convertir les fins de ligne d'un fichier existant, ouvrez le fichier dans Eclipse et choisissez File : Convert Line Delimiters to : Unix

Conseil : Vous pouvez facilement convertir un fichier existant en le sélectionnant dans l'Explorateur de paquets, puis en accédant à l'entrée de menu suivante File : Convert Line Delimiters to : Unix

2 votes

C'est exactement ce que je cherchais ! Je l'avais déjà modifié pour les nouveaux fichiers, mais l'option de conversion - m'a échappé. Merci VonC !

0 votes

@Vasu : vous êtes le bienvenu :). La vue Outline et l'explorateur de paquets contiennent certaines fonctionnalités pour les éléments multi-sélectionnés qui sont souvent négligées.

0 votes

Excellent rapport. Chercher cela moi-même dans le dialogue de préférences horriblement labyrinthique d'Eclipse me rendait fou.

8voto

beardedprojamz Points 801

Il existe un utilitaire bash très pratique - dos2unix - qui est un convertisseur de format de fichier texte DOS/MAC vers UNIX, qui, s'il n'est pas déjà installé sur votre distro, devrait pouvoir être facilement installé via un gestionnaire de paquets. page de manuel dos2unix

0 votes

J'avais prévu d'écrire un script pour faire cela récursivement sur mon espace de travail eclipse. Le seul souci était de corrompre tout fichier de projet interne à eclipse. Merci pour votre suggestion !

7voto

Michael Scheper Points 552

En plus des solutions Eclipse et de l'outil mentionné dans la section une autre réponse considère flip . Il peut "basculer" entre les sauts de ligne normaux et ceux de Windows, et fait des choses agréables comme préserver l'horodatage du fichier et d'autres statistiques.

Vous pouvez l'utiliser comme ceci pour résoudre votre problème :

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

(J'ai ajouté une clause pour ignorer votre répertoire .git, au cas où vous utiliseriez git, mais comme flip ignore les fichiers binaires par défaut, vous n'en aurez peut-être pas besoin).

0 votes

Juste une note... cette commande est pour les utilisateurs de Linux, pas pour les utilisateurs de Windows. Windows find ne fonctionne pas de cette manière.

0 votes

@Brad a raison. Cependant, il existe un portage Cygwin de flip : github.com/jaalto/cygwin-package--flip

3voto

Gabe Points 21

Pour supprimer récursivement les retours chariot ( \r ) des fichiers CVS/* dans tous les répertoires enfants, exécutez la commande suivante dans un shell unix :

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

3voto

Ham Points 1956

Vous pouvez faire un essai. Le problème est que Windows insère un retour chariot ainsi qu'un saut de ligne lorsqu'il reçoit une nouvelle ligne. Les systèmes Unix n'insèrent qu'un saut de ligne. Le caractère supplémentaire de retour chariot pourrait donc être la raison pour laquelle votre éclipse se trompe avec les nouvelles lignes.

Prenez un ou deux fichiers de votre projet et convertissez-les. Vous pouvez utiliser Notepad++ pour le faire. Ouvrez simplement le fichier, allez dans Format->Conversion vers Unix (si vous utilisez Windows).

Sous Linux, essayez simplement ceci sur une ligne de commande :

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

0 votes

J'ai environ 10 000 fichiers ! Je devais donc l'automatiser d'une manière ou d'une autre. Merci pour le conseil !

0 votes

Une erreur de frappe dans votre CLI : sed -i 's/$`echo \\\r`//' yourfile.java et pour l'automatiser find . -name "*.java" -exec sed -i 's/$`echo \\\r`//' {} \;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X