2012-02-15 8 views

Respuesta

7

trate de hacer

Edit > Advanced > Format Document 

A continuación, guarde el documento, siempre y cuando el archivo no quede modificado por otro editor externo, debe permanecer constante. Lo arregla para mí.

+6

Esto no me solucionó el problema. Cambió alrededor de una gran cantidad de espacios en blanco en el archivo actual (más que solo los finales de línea), y no afectó a ningún otro archivo en la solución. – hypehuman

+0

También no se corrigió para mí, (vsc 7.3.2) simplemente aplica el formato de origen, (pero no la política de finales de línea) –

10

Puede usar el comando Reemplazar en archivos y habilitar las expresiones regulares. Por ejemplo, para reemplazar el fin de línea que tiene un solo avance de línea "\ n" (como, desde GitHub, por ejemplo) con el avance de línea de retorno de carro estándar de Windows "\ r \ n", busque:

([^\r]|^)\n 

Esto dice que se debe crear un grupo (por eso se requieren los paréntesis), donde el primer carácter no es un retorno de carro o es el comienzo de una línea. El comienzo de la prueba de línea es realmente solo para el comienzo del archivo, si sucede que comienza con "\ n". Siguiendo al grupo hay una nueva línea. Por lo tanto, coincidirá con "; \ n" que tiene el final de línea incorrecto, pero no con "\ r \ n" que es el final de línea correcto.

y sustituirla por:

$1\r\n 

Esto dice para mantener el grupo ($ 1) y luego vuelva a colocar el "\ n" con "\ r \ n".

+6

Reemplazando '\ r? \ N' con' \ r \ n' se limpiará toda la línea terminaciones sin involucrar el uso de grupos de captura. – kbolino

2

Actualización: Tenga cuidado. No hagas esto a menos que ya te hayas comprometido completamente con tu depósito de código y puedas revertir cualquier cambio involuntario. Lea los comentarios a continuación. Las cosas que funcionaron para mí podrían no funcionar para usted.


La respuesta de Ron estuvo muy cerca de ayudarme, pero tuve que hacer algunos ajustes para que funcione en Visual Studio.

1) abra la solución que desea corregir esto en.

2) asegurarse de que todos los cambios pendientes se comprueban, ya que están potencialmente va a editar un crapton de documentos y no quieren deshacer su otra cambios pendientes con esto.

3) en cualquier documento, presione Ctrl + F para abrir el cuadro de búsqueda y haga clic en el icono de flecha hacia abajo en el lado izquierdo para expandirlo al cuadro de búsqueda/reemplazo.

4) En la línea superior, la pasta:

([^\r]|^)\n 

En la línea de fondo, la pasta:

\r\n 

5) activar el icono de .* a "utilizar expresiones regulares" característica.

6) Cambie el menú desplegable al lado de ese icono para que diga "Solución completa" o "Todos los documentos abiertos" o lo que sea apropiado para su situación.

7) Haga clic en el botón "Reemplazar todo" que muestra ab -> ac en el icono.

¡Y eso es todo!

Por un lado, necesitaba esto porque las plantillas de script de Unity están hechas en MonoDevelop, por lo que tienen las terminaciones de línea de Mac por defecto. Tuve que editar todos los documentos en el camino:

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

Así que todos ellos abiertos en Visual Studio, siguió el proceso que se acaban de exponer, el uso de "todos los documentos abiertos" en el paso 6.

+0

Este método terminó reemplazando a punto y coma en los extremos de las líneas. Pero todavía utilicé esta respuesta para buscar las áreas problemáticas para poder corregirlas manualmente, así que te voté. – William

+0

Sí, esto también quita algunos paréntesis y corchetes para mí. (Además de los puntos y comas mencionados anteriormente) – bkribbs

20

Justo para una respuesta más completa, esto funcionó mejor para mí:

Reemplazar

(?<!\r)\n 

con

\r\n 

en toda la solución con la opción "regEx".

Esto establecerá el final de línea correcto en todos los archivos que hasta ahora no tenían el final de línea correcto. Utiliza el lookahead negativo para comprobar la inexistencia de un \ r delante del \ n.

Tenga cuidado con las otras soluciones: Modificará todas las líneas en todos los archivos (ignorando el final de línea original) o eliminará el último carácter de cada línea.

+0

tenga cuidado, este método no funcionó para mí.En mi caso, VS 2017 apuntaba a la línea incorrecta durante la depuración, así que probé este método pero fue en vano. Usar el arreglo automático de final de línea proporcionado por VS hizo el truco. – Rafal

0

Si tiene Cygwin con el paquete cygutils instalado, puede utilizar esta cadena de comandos desde el shell de 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

(Reemplazar la * .cpp con todo lo que necesita comodín)

Para entender cómo funciona esto, el comando unix2dos se utiliza para convertir los archivos, pero sólo los archivos que tienen los finales de línea inconsistentes (es decir, , una mezcla de UNIX y DOS) necesita ser convertido. La opción -idu muestra el número de terminaciones de línea dos y unix en el archivo. Por ejemplo:

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

Aquí, solo es necesario convertir el archivo Acad2S5kXhat.cpp. Los comandos sed filtran el resultado para producir una lista de solo los archivos que deben convertirse y luego se procesan a través de xargs.

Cuestiones relacionadas