SourceTree 认为 .vimrc 是二进制

SourceTree 认为 .vimrc 是二进制

SourceTree 认为 .vimrc 是二进制的,所以我无法在窗口中看到差异。

基于这一页,我认为这是因为编码,所以尝试使用以下步骤将编码更改为 utf-8这一页

:set bomb
:set fileencoding=utf-8

但这并没有解决问题。我需要做什么?

[更新] 修复:

有一个非 ASCII 字符(设备控制 3,0x13)在 Vim 中根本显示不出来,但在 Sublime Text 中却显示为“DC3”。删除后,问题就解决了!感谢大家的帮助。

答案1

关闭BOMB选项。(字节顺序标记字节)

它会在文本文件的开头添加两个字节来指示字节顺序。它们是 0xFF 和 0xFE,我忘了具体顺序了,但这就是 VCS 认为 .vimrc 是二进制文件的原因。

你应该编辑你的 .vimrc,然后关闭炸弹选项并保存 .vimrc。这应该删除 BOM 字节。最坏的情况是,从 .vimrc 文件中重置/删除 BOMB 选项,然后使用 vim 的二进制模式删除这些令人讨厌的字节。

# edit .vimrc
$ vim .vimrc
# remove / comment out the set BOMB line
# reset the BOMB option (:set nobomb)
# save file, exit vim

如果 BOM 字节消失了(使用文件),您就大功告成了,提交并享受吧。如果没有:

# remove the BOMB bytes using binary mode
$ vim -b .vimrc
# save and exit, .vimrc should no longer have the BOMB bytes.

此外,“文件”命令还可以告诉您文件是否也包含 BOMB 字节。

您还可以使用“xxd”命令(vim 自带)来查看文件的十六进制字节:

xxd .vimrc | head

应该会显示 BOM 字节是否存在。(对于很多事情来说,它非常方便)

答案2

您是否尝试过 stackoverflow 页面的其他响应?

在 vim 中打开 .vimrc 并:

:write ++enc=utf-8

相关内容