Conversion EOL dans notepad ++

113

Pour une raison quelconque, lorsque j'ouvre des fichiers à partir d'un serveur unix sur ma machine Windows, ils ont parfois une conversion EOL Macintosh, et lorsque je les modifie / enregistre à nouveau, ils ne fonctionnent pas correctement sur le serveur unix. J'utilise uniquement notepad ++ pour éditer des fichiers à partir de ce serveur Unix, alors existe-t-il un moyen de créer une macro qui convertit automatiquement EOL au format Unix chaque fois que j'ouvre un fichier?

Jeff
la source
duplication possible de Change EOL sur plusieurs fichiers en une seule fois
Navid EMAD
1
Votre problème peut provenir du programme FTP que vous utilisez. Par exemple, j'utilise WinSCP pour accéder à distance à un serveur Unix, Notepad ++ est défini comme mon éditeur par défaut, mais je devais entrer dans les paramètres de WinSCP et définir le mode de transfert Binarysur afin de conserver les fins de ligne. Ainsi, vous pourrez peut-être reconfigurer votre programme FTP / SCP / etc pour transférer les fichiers d'une manière différente.
Slicktrick

Réponses:

200

Cette fonctionnalité est déjà intégrée à Notepad ++. Dans le menu "Edition", sélectionnez "Conversion EOL" -> "Format UNIX / OSX".

capture d'écran de l'option pour une recherche encore plus rapide (ou différentes versions linguistiques)

Vous pouvez également définir la valeur EOL par défaut dans notepad ++ via "Paramètres" -> "Préférences" -> "Nouveau document / répertoire par défaut" puis sélectionnez "Unix / OSX" dans le champ Format.

Nate Allen
la source
7
Je connais la conversion dans le menu d'édition, et les paramètres que vous avez mentionnés ne concernent que les nouveaux documents. Je veux effectuer automatiquement la conversion pour chaque fichier que j'ouvre (ou chaque fichier que je sauvegarde)
Jeff
Le problème est que lorsque j'ouvre un fichier Unix existant, le format "EOL Conversion" -> UNIX / OSX est grisé. Notepad ++ est trop frustrant à utiliser avec des fichiers UNIX, donc j'utilise Notetab Lite qui me permet de sauvegarder tous les fichiers sous UNIX, pas seulement les nouveaux.
Off The Gold
3
@OffTheGold L'option UNIX EOL est grisée car il s'agit de la sélection actuelle.
blakeoft
Bien sur. Merci depuis novembre 2017 via Google.
SDsolar
Cela ne fonctionne pas pour moi. Je continue à sélectionner "Conversion EOL -> Unix", mais cela ne fait rien. Je retourne dans le menu et vois que Windows est l'option grisée (donc sélectionnée?), Donc je clique à nouveau sur Unix. J'ai même essayé de sélectionner tout mon texte d'abord au cas où cela ne fonctionnerait que sur la sélection, puis j'ai de nouveau sélectionné Unix. Cela ne fait toujours rien.
Loduwijk
16

Dans Notepad ++, utilisez remplacer tout par une expression régulière. Cela présente un avantage par rapport à la commande de conversion dans le menu que vous pouvez utiliser sur un dossier entier sans avoir à ouvrir chaque fichier ou glisser-déposer (sur plusieurs centaines de fichiers, cela deviendra sensiblement plus lent) et vous pouvez également définir un filtre générique de nom de fichier.

(\r?\n)|(\r\n?)

à

\n

Cela correspondra à chaque motif de fin de ligne possible (simple \ r, \ n ou \ r \ n) de retour à \ n. (Ou \ r \ n si vous effectuez une conversion au style Windows)

Pour opérer sur plusieurs fichiers, soit:

  • Utilisez "Tout remplacer dans tous les documents ouverts" dans l'onglet "Remplacer". Vous devrez d'abord faire glisser et déposer tous les fichiers dans Notepad ++. Il est bon que vous ayez le contrôle sur le fichier sur lequel opérer, mais cela peut être lent s'il y a plusieurs centaines ou milliers de fichiers.
  • "Remplacer dans les fichiers" dans l'onglet "Rechercher dans les fichiers", par le filtre de fichier de votre choix, par exemple * .cpp * .cs sous un répertoire spécifié.
Wappenull
la source
Cela peut entraîner une perte d'EOL en raison du remplacement d'un \ r \ n \ r \ n par un seul \ n. Je pense.
Sunspawn
Confirmez travaillé dans Notepad ++ 6.9.1. Il cherchera en avant, donc ne remplacera pas récursivement ceux qui sont en retard.
Wappenull
En répondant à: "Cela peut entraîner une perte de fin de vie en remplaçant un \ r \ n \ r \ n par un seul \ n" >> Ce ne sera pas le cas, car il utilise | (ou) opérateur entre 2 groupes possibles.
Wappenull
3

J'ouvre des fichiers "directement" depuis WinSCP qui ouvre les fichiers dans Notepad ++ J'avais un fichier php sur mon serveur linux qui s'ouvrait toujours au format Mac quoi que je fasse :-(

Si j'ai téléchargé le fichier puis que je l'ai ouvert depuis local (Windows), il était ouvert en tant que Dos / Windows .... hmmm

La solution était de convertir EOL le fichier local au "Format UNIX / OSX", de l'enregistrer et de le télécharger.

Maintenant, lorsque j'ouvre le fichier directement depuis le serveur, il est ouvert sous le nom "Dos / Windows" :-)

MrCalvin
la source
1

En fonction de votre projet, vous pouvez envisager d'utiliser EditorConfig ( https://editorconfig.org/ ). Il existe un plugin Notepad ++ qui chargera un .editorconfig où vous pouvez spécifier "lf" comme fin de ligne obligatoire.

Je n'ai commencé à l'utiliser, mais c'est bien jusqu'à présent, et les projets open source sur lesquels j'ai travaillé incluent des fichiers .editorconfig depuis des années. Le paramètre "Conversion EOL" n'est pas modifié, il peut donc être un peu déroutant, mais si vous "Affichage> Afficher le symbole> Afficher la fin de la ligne", vous pouvez voir qu'il ajoute LF au lieu de CRLF, même lorsque "Conversion EOL "et le coin inférieur inférieur montre autre chose (par exemple Windows (CR LF)).

D. Cook
la source