Comment réparer les fins de ligne incohérentes pour une solution VS complète?

Visual Studio détectera les terminaisons de ligne incohérentes lors de l’ouverture d’un fichier et il existe une option permettant de le corriger pour ce fichier spécifique. Cependant, si je veux corriger les fins de ligne pour tous les fichiers d’une solution, comment puis-je le faire?

Juste pour une réponse plus complète, cela a fonctionné le mieux pour moi:

Remplacer

(? 

avec

 \r\n 

en solution complète avec option "regEx".

Cela définira la ligne correcte se terminant dans tous les fichiers qui n'ont pas la ligne correcte se terminant jusqu'à présent. Il utilise le lookahead négatif pour vérifier la non-existence d'un \ r devant le \ n.

Soyez prudent avec les autres solutions: ils modifieront toutes les lignes de tous les fichiers (en ignorant la fin de ligne d'origine) ou supprimeront le dernier caractère de chaque ligne.

Vous pouvez utiliser la commande Remplacer dans les fichiers et activer les expressions régulières. Par exemple, pour remplacer les lignes de fin ayant un seul saut de ligne “\ n” (par exemple, depuis GitHub) avec le saut de ligne standard de retour chariot “\ r \ n”, recherchez:

 ([^\r]|^)\n 

Cela dit pour créer un groupe (c’est pourquoi les parenthèses sont obligatoires), où le premier caractère n’est pas un retour chariot ou est le début d’une ligne. Le début du test de ligne n’est vraiment que pour le tout début du fichier, s’il se produit un “\ n”. Suivre le groupe est une nouvelle ligne. Donc, vous allez faire correspondre “; \ n” qui a la mauvaise fin de ligne, mais pas “\ r \ n” qui est la fin de ligne correcte.

Et remplacez-le par:

 $1\r\n 

Cela dit pour garder le groupe ($ 1) et ensuite remplacer le “\ n” par “\ r \ n”.

Essayez de faire

 Edit > Advanced > Format Document 

Ensuite, enregistrez le document, tant que le fichier n’est pas modifié par un autre éditeur externe, il doit restr cohérent. Je le répare

Mise à jour: s’il vous plaît soyez prudent. Ne le faites pas à moins que vous ne soyez déjà complètement engagé dans votre référentiel de codes et que vous puissiez annuler les modifications involontaires. Lisez les commentaires ci-dessous. Les choses qui ont fonctionné pour moi pourraient ne pas fonctionner pour vous.


La réponse de Ron était vraiment proche de m’aider, mais je devais faire quelques ajustements pour que cela fonctionne dans Visual Studio.

1) Ouvrez la solution dans laquelle vous souhaitez résoudre ce problème.

2) assurez-vous que toutes les modifications en attente sont archivées, car vous allez potentiellement modifier un document de documents et ne voulez pas annuler les autres modifications en attente avec cela.

3) Dans n’importe quel document, appuyez sur Ctrl + F pour ouvrir le champ de recherche, puis cliquez sur l’icône représentant une flèche vers le bas située à gauche pour l’étendre à la zone de recherche / remplacement.

4) Dans la ligne supérieure, collez:

 ([^\r]|^)\n 

Dans la ligne du bas, collez:

 \r\n 

5) Activez l’icône .* Pour “Utiliser les expressions régulières”.

6) Modifiez le menu déroulant à côté de cette icône pour qu’il indique «Solution entière» ou «Tous les documents ouverts» ou tout ce qui convient à votre situation.

7) Cliquez sur le bouton “Remplacer tout” qui affiche ab -> ac dans l’icône.

Et c’est tout!

En passant, j’avais besoin de cela parce que les modèles de script d’Unity sont tous faits dans MonoDevelop, ils ont donc les fins de ligne Mac par défaut. J’ai dû éditer tous les documents du chemin:

 C:\Program Files\Unity\Editor\Data\Resources\ScriptTemplates 

Je les ai donc tous ouverts dans Visual Studio, en suivant le processus que j’ai exposé ci-dessus, en utilisant “Tous les documents ouverts” à l’étape 6.

Si vous avez installé Cygwin avec le paquet cygutils, vous pouvez utiliser cette chaîne de commandes à partir du shell Cygwin:

unix2dos -idu * .cpp | sed -e ‘s / 0 [1-9] [0-9] //’ -e ‘s / [1-9] [0-9] * 0 //’ | sed ‘/ [1-9] [0-9] /! d’ | sed -e ‘s / [1-9] [0-9] //’ | xargs unix2dos

(Remplacez le * .cpp par n’importe quel caractère générique dont vous avez besoin)

Pour comprendre comment cela fonctionne, la commande unix2dos est utilisée pour convertir les fichiers, mais seuls les fichiers dont les fins de ligne sont incohérentes (par exemple, un mélange de UNIX et de DOS) doivent être convertis. L’option -idu affiche le nombre de fins de ligne dos et unix dans le fichier. Par exemple:

  0 491 Acad2S5kDim.cpp 689 0 Acad2S5kPolyline.cpp 0 120 Acad2S5kRaster.cpp 433 12 Acad2S5kXhat.cpp 0 115 AppAuditInfo.cpp 

Ici, seul le fichier Acad2S5kXhat.cpp doit être converti. Les commandes sed filtrent la sortie pour ne produire qu’une liste des fichiers à convertir, qui sont ensuite traités via xargs.