Necesito modificar las fuentes bajo el control de versiones de Git. Las fuentes son archivos de proyecto de Visual Studio, lo que los convierte en nativos de Microsoft. Yo quieroevitarProblemas de espacios en blanco, incluidos juegos de final de línea.
Miré los archivos antes de la modificación en emacs, y el^M
claramente no estaba presente.
Luego ejecuté lo siguiente desde un script desde una máquina Linux:
sed -i 's/odbc32.lib //g' *.vcproj
sed -i 's/odbccp32.lib //g' *.vcproj
Cuando miro los cambios:
$ git diff cryptest.vcproj
diff --git a/cryptest.vcproj b/cryptest.vcproj
index cec447d..9ae71ea 100644
--- a/cryptest.vcproj
+++ b/cryptest.vcproj
@@ -76,7 +76,7 @@
...
Name="VCLinkerTool"
- AdditionalDependencies="odbc32.lib odbccp32.lib Ws2_32.lib"
+ AdditionalDependencies="Ws2_32.lib"^M
SuppressStartupBanner="true"
...
¿Cómo realizo un reemplazo sin agregar espacios en blanco superfluos?
Respuesta1
Hoy en día, emacs detectará automáticamente los finales de línea utilizados en un archivo y, por lo tanto , no verá si un archivo tiene finales de línea \n
o . Cualquier edición en emacs preservará e imitará los finales de línea.\r
\r\n
Para ver realmente qué tiene el archivo, puede probar cat -vet
que muestra caracteres de control que incluyen ^M
tabulaciones ( ^I
) y el final de línea ( $
).
Tenga en cuenta que git
se puede configurar para convertir automáticamente \r\n
o \n
viceversa al mover archivos de texto entre el directorio de trabajo y la base de datos de objetos. Mira estoartículoy estoartículopara verificar cómo está configurado su git, globalmente y por repositorio y cómo puede cambiarlo.
Es difícil ver cómo sed
se podría haber introducido el \r
. Supongo que estás en un sistema Unix.
En la parte superior de su directorio de trabajo verifique que los siguientes comandos no muestren nada:
git config core.eol
git config core.autocrlf
find . -name .gitattributes -o -name attributes
Ejecute el archivo original sin editar cat -vet
y verifique si todas, algunas o ninguna de las líneas terminan con los 3 caracteres ^M$
.