2012-02-20 9 views
8

Cuando abre un archivo con terminaciones de línea mixtas, Visual Studio le pedirá que lo normalice. ¿Hay alguna forma de normalizar todos los archivos en la solución actual?Lote normalizar terminaciones de línea en Visual Studio

mensajes

relacionadas que no responde a mi pregunta:

Respuesta

2

Visual Studio no tiene un mecanismo para la normalización de los finales de línea para un entero solución. La característica se limita esencialmente a verificar si un archivo es correcto al abrir y cambiar en ese punto.

La normalización de las terminaciones de línea es una API expuesta por Visual Studio en IEditorOperations::NormalizeLineEndings. Por lo tanto, es posible escribir un plugin/script que realice la acción contra elementos en la solución.

+0

¡Eso es bueno! Nunca escribí un plugin/script para VS, ¿puedo abrir una consola de PowerShell y escribir un bucle sobre todos los archivos de la solución? – Borek

+1

@Borek lamentablemente no es muy fácil. El principal problema con el que se encontrará es que no hay una gran definición de qué es un archivo controlado por el usuario. Por ejemplo, es probable que no desee hacer esto en contra de un archivo generado, pero no se ve muy diferente de un archivo normal desde una perspectiva API. Además, no todos los archivos en el IDE tienen un archivo físico real que los respalde en el disco (también es difícil de distinguir de una API). En general, enumerar los archivos funcionará pero terminará con todos estos casos especiales/de esquina. Probablemente es por eso que el comportamiento VS es lo que es hoy – JaredPar

+0

Es una pena, pensé que habría una manera fácil de obtener una lista de todo lo que veo en un explorador de soluciones (y es un archivo). – Borek

5

Puede crear un archivo bat que normalice todos los archivos recursivamente.

  1. Descargue la herramienta de línea de comandos Tofrodos.
  2. Cree un archivo bat en la raíz del directorio que la solución con el siguiente contenido:

de/R %% i en (* .cs) hacer "C: \ PRGS \ tofrodos \ todos. exe" -p "%% i"

tenga en cuenta que usted tiene que actualizar la ruta del archivo a todos.exe, y posiblemente el * .cs filtro.

Luego ejecuta el archivo bat y espera a que termine.

1

acabo de utilizar Notepad ++ buscar y reemplazar característica:

  1. Conjunto Notepad ++ para mostrar los finales de línea, Ver-> Mostrar símbolos -> mostrar todos los caracteres
  2. abrir el hallazgo en los archivos de diálogo
  3. conjunto encontrar lo que \ r \ n (\ n) en función de la coversion que estás haciendo
  4. reemplazar con \ n (o \ r \ n)
  5. punto del Directorio en su carpeta de soluciones

debe hacer una copia o cometer cualquier cambio que tenga antes de hacer esto

+2

si reemplaza \ n con \ r \ n pasará un mal momento. – yellowblood

2

Como yellowblood señaló en la respuesta de Aaron F., si se reemplaza \n (LF) con \r\n (CRLF), que tendrá un mal momento ya que agregará un CR antes de cada LF, incluso aquellos que ya tenían uno.

Sin embargo, lo que desea puede lograrse con expresiones regulares utilizando cualquier editor de texto que admita la sustitución de lotes en archivos (como Notepad ++ o Visual Studio "Reemplazar en archivos").

Por ejemplo, para reemplazar LF con CRLF, hay que activar la opción de expresiones regulares a continuación, reemplace todas las apariciones de

(?<!\r)\n 

con

\r\n 

\r es un retorno de carro (CR), \n es un avance de línea (LF). El patrón (?<!\r)\n coincidirá con cualquier línea de alimentación cuyo carácter anterior no sea un retorno de carro, sin capturar (es decir, reemplazar) el carácter anterior.

La otra manera es mucho más simple: simplemente reemplace \r\n con \n.

Como siempre, haga una copia de seguridad de sus archivos y asegúrese de probar la operación en un solo archivo antes de procesar la solución completa.

Lo habría agregado como comentario a la respuesta de Aaron F. pero mi reputación no es lo suficientemente alta :)

Cuestiones relacionadas