Visual Studio实际仅增删数行,却显示文件所有行均发生变更

简 述: 使用 Visual Studio 2019 开发 C++ 工程,经常遇到仅修改几行代码,但整个文件所有行都显示被修改;甚是奇怪数月之久,于近日彻底解决之,共享同困惑于此者。Visual Studio 开发工程项目,设置默认行尾和文件编码。


本文初发于 “偕臧的小站”,同步转载于此。


背景

💻: win10 21H2 📎 Visual Studio 2019 📎 Git Extensions 📎 GitLab

使用 VS 2019 在项目上开发,常遇到修改 .h / .cpp 文件,明明仅增删几行后,但用 git diff / git gui 工具 / GitLab 网页端,查看 push 的提交差异,却显示整个文件所有行都有增删修改了。忧愁,甚是不解,无奈搁置许久。


分析

一日,后无意想到可能一种原因,后验证,果然可行,遂纪录此方案供后来者查阅之。

两个原因: 在 VS 2019 中编辑文件后,ctrl + s 保存时,

​ ⅰ改变了文件编码,如 GBK ↔ UTF8 ;

​ ⅱ 文件行尾发生了改变,如 CRLR ↔ LF ;


原因为商业项目中,团队开发合作,通常会进行跨平台支持,如前 K 司的 WPS,大家使用不同的 IDE 和默认环境配置造成的。

如:A 在 Mac / Linux 下修改 xxx.cpp 文件后保存,会将一些自己操作系统下的默认符号,也保存下来后提交到 Git 仓库;后面 B 在 Windows 下从 Pull 此更新,亦修改此 xxx.cpp 文件后保存时,也会将自己的系统下的默认符号保存进文件。此时 B 查看 git

diff 就及容易看到整个文件所有行都被修改。


解决

方案一

每次手动在 notepad++ 中对单个文件修改"行尾"、“文件编码”;可行,但很麻烦。且不足在于不知道下一个文件会是哪一个文件会有此些问题。

当然希望依托于 Visual Studio 有比较好的的解决方案,且最优雅和方便的。搜寻之后,放上我的配置;


我的需求为:

  • 每次修改 .cpp 文件后,保存时候,自动使用的为当前文件的 “行尾”;不会默认强制保存为 CRLR 或 LR 编码。
  • 每次修改 .cpp 文件后,保存时候,自动使用的为当前文件的 “编码格式” ;不会默认强制保存为 GBK 或 UTF8 编码。
  • 能够在 Visual Studio 编辑区域,能够轻松查看到当前文件的 “编码格式”“行尾” ;最好还能点击一下就能在不同编码格式、不同行尾之间切换,耐久奶思了。

方案二『荐』

这个三个需求使用下面『插件1』和『插件2』完美解决。


在线插件可安装

『插件1』 LineEndingsUnifier 文件行尾设置;使用当前文档的行尾(CRLR、LR、LF)


『插件2』FileEncoding 客户编辑区域右下角显示当前文件编码


还有一个类似『插件3』 Strip’em Add-in for Visual Studio 文件行尾设置;使用当前文档的行尾(CRLR、LR、LF),不过仅支持 VS 2008-2017;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偕臧x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值