Edite o arquivo no local sem modificar os finais de linha

Edite o arquivo no local sem modificar os finais de linha

Preciso modificar as fontes no controle de versão do Git. As fontes são arquivos de projeto do Visual Studio, o que os torna nativos da Microsoft. Eu queroevitarproblemas de espaço em branco, incluindo jogos de finalização de linha.

Eu olhei os arquivos antes da modificação no emacs, e o^Mclaramente não estava presente.

Em seguida, executei o seguinte a partir de um script de uma máquina Linux:

sed -i 's/odbc32.lib //g' *.vcproj
sed -i 's/odbccp32.lib //g' *.vcproj

Quando olho para as mudanças:

$ 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"
...

Como faço uma substituição sem adicionar espaços em branco estranhos?

Responder1

Hoje em dia, o emacs detectará automaticamente os finais de linha usados ​​​​em um arquivo e, portanto, você não verá se um arquivo possui \nou \rou \r\nfinais de linha. Quaisquer edições no emacs preservarão e imitarão os finais de linha.

Para realmente ver o que o arquivo contém, você pode tentar cat -vetmostrar caracteres de controle, incluindo ^M, guias ( ^I) e o final da linha ( $).

Observe que gitpode ser configurado para converter automaticamente \r\nou \nvice-versa ao mover arquivos de texto entre o diretório de trabalho e o banco de dados de objetos. Veja issoartigoe istoartigopara verificar como seu git está configurado, globalmente e por repositório, e como você pode alterá-lo.

É difícil ver como sedpoderia ter introduzido o \r. Presumo que você esteja em um sistema Unix.


No topo do seu diretório de trabalho, verifique se os seguintes comandos não mostram nada:

git config core.eol
git config core.autocrlf
find . -name .gitattributes -o -name attributes

Execute o arquivo original não editado cat -vete verifique se todas, algumas ou nenhuma das linhas terminam com os 3 caracteres ^M$.

informação relacionada