Conversión EOL en bloc de notas ++

113

Por alguna razón, cuando abro archivos de un servidor Unix en mi máquina Windows, ocasionalmente tienen conversión Macintosh EOL, y cuando los edito / guardo de nuevo, no funcionan correctamente en el servidor Unix. Solo uso notepad ++ para editar archivos de este servidor Unix, entonces, ¿hay alguna manera de crear una macro que convierta automáticamente EOL a formato Unix cada vez que abro un archivo?

Jeff
fuente
posible duplicado de Change EOL en varios archivos de una sola vez
Navid EMAD
1
Su problema puede estar relacionado con el programa FTP que esté utilizando. Por ejemplo, uso WinSCP para acceder de forma remota a un servidor Unix, Notepad ++ está configurado como mi editor predeterminado, pero tuve que ir a la configuración de WinSCP y configurar el modo de transferencia Binarypara mantener los finales de línea preservados. Por lo tanto, es posible que pueda reconfigurar su programa FTP / SCP / etc. para transferir los archivos de una manera diferente.
Slicktrick

Respuestas:

200

Esa funcionalidad ya está integrada en Notepad ++. En el menú "Editar", seleccione "Conversión EOL" -> "Formato UNIX / OSX".

captura de pantalla de la opción para una búsqueda aún más rápida (o versiones en diferentes idiomas)

También puede establecer el EOL predeterminado en notepad ++ a través de "Configuración" -> "Preferencias" -> "Nuevo documento / Directorio predeterminado" y luego seleccione "Unix / OSX" en el cuadro Formato.

Nate Allen
fuente
7
Conozco la conversión en el menú de edición y las configuraciones que mencionaste son solo para documentos nuevos. Quiero hacer automáticamente la conversión para cada archivo que abra (o cada archivo que guarde)
Jeff
El problema es que cuando abro un archivo Unix existente, la "Conversión EOL" -> Formato UNIX / OSX aparece atenuada. Notepad ++ es muy frustrante de usar con archivos UNIX, así que uso Notetab Lite que me permite guardar todos los archivos como UNIX, no solo los nuevos.
Off The Gold
3
@OffTheGold La opción UNIX EOL está atenuada porque es la selección actual.
blakeoft
Tocar el asunto exacto. Gracias desde noviembre de 2017 a través de Google.
SDsolar
Esto no funciona para mí. Sigo seleccionando "Conversión EOL -> Unix", pero no hace nada. Vuelvo al menú y veo que Windows es la opción atenuada (¿por tanto seleccionada?), Así que vuelvo a hacer clic en Unix. Incluso intenté seleccionar todo mi texto primero en caso de que solo funcione en la selección, luego seleccioné Unix nuevamente. Todavía no hace nada.
Loduwijk
16

En Notepad ++, use reemplazar todo con expresión regular. Esto tiene una ventaja sobre el comando de conversión en el menú que puede operar en toda la carpeta sin tener que abrir cada archivo o arrastrar y soltar (en varios cientos de archivos se volverá notablemente más lento) además de que también puede configurar el filtro comodín de nombre de archivo.

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

a

\n

Esto coincidirá con todos los patrones finales de línea posibles (único \ r, \ n o \ r \ n) de nuevo a \ n. (O \ r \ n si está convirtiendo al estilo de Windows)

Para operar en varios archivos, ya sea:

  • Utilice "Reemplazar todo en todos los documentos abiertos" en la pestaña "Reemplazar". Primero tendrá que arrastrar y soltar todos los archivos en Notepad ++. Es bueno que tenga control sobre en qué archivo operar, pero puede ser lento si hay varios cientos o miles de archivos.
  • "Reemplazar en archivos" en la pestaña "Buscar en archivos", por filtro de archivo de su elección, por ejemplo, * .cpp * .cs en un directorio especificado.
Wappenull
fuente
Esto puede causar la pérdida de EOL debido a la sustitución de un \ r \ n \ r \ n con un solo \ n. Yo creo que.
Sunspawn
Confirmar trabajado en Notepad ++ 6.9.1. Buscará hacia adelante, por lo tanto, no reemplazará recursivamente a los que están detrás.
Wappenull
En respuesta a: "Esto puede causar la pérdida de EOL debido a la sustitución de un \ r \ n \ r \ n con un solo \ n" >> No lo hará, ya que utiliza | (u) operador entre 2 grupos posibles.
Wappenull
3

Abro archivos "directamente" desde WinSCP que abre los archivos en Notepad ++ Tenía archivos php en mi servidor linux que siempre se abrían en formato Mac sin importar lo que hice :-(

Si descargué el archivo y luego lo abrí desde local (Windows), estaba abierto como Dos / Windows ... hmmm

La solución fue convertir EOL el archivo local a "Formato UNIX / OSX", guardarlo y luego cargarlo.

Ahora, cuando abro el archivo directamente desde el servidor, está abierto como "Dos / Windows" :-)

MrCalvin
fuente
1

Dependiendo de su proyecto, es posible que desee considerar el uso de EditorConfig ( https://editorconfig.org/ ). Hay un complemento Notepad ++ que cargará un .editorconfig donde puede especificar "lf" como el final de línea obligatorio.

Solo comencé a usarlo, pero hasta ahora es bueno, y los proyectos de código abierto en los que he trabajado han incluido archivos .editorconfig durante años. La configuración de "Conversión EOL" no se cambia, por lo que puede ser un poco confuso, pero si "Ver> Mostrar símbolo> Mostrar final de línea", puede ver que está agregando LF en lugar de CRLF, incluso cuando "Conversión EOL "y la esquina inferior inferior muestra algo más (por ejemplo, Windows (CR LF)).

D. Cocinar
fuente