SourceTree认为.vimrc是二进制的


0

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

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

:set bomb
:set fileencoding=utf-8

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

[更新]修正了它:

有一个非ascii字符(设备控件3,0x13)在Vim中根本没有显示,但在Sublime Text中呈现为“DC3”。删除后,问题解决了!谢谢你的帮助。


你在文件中有任何“硬”转义序列吗?
Heptite 2013年

你的意思是喜欢\"文件中的某个地方?不,我没有这些。
EthanP 2013年

不,那不是我的意思。我的意思是实际的控制字符,如转义(0x1B)或空格下面的ASCII表中的任何字符(即任何低于0x20的字符)。
Heptite 2013年

不,我知道的
EthanP

Answers:


0

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

它在文本文件的开头添加两个字节以指示字节序。它们是0xFF和0xFE,我忘了哪个顺序是什么,但这就是为什么你的VCS认为你的.vimrc是一个二进制文件。

您应该编辑.vimrc,然后关闭炸弹选项并保存.vimrc。这应该删除BOM字节。最糟糕的情况是,重置/删除.vimrc文件中的BOMB选项,然后使用vim的二进制模式删除icky字节。

# 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.

此外,'file'命令可以告诉您文件是否也有BOMB字节。

您还可以使用'xxd'命令(随vim一起提供)来查看文件的十六进制字节:

xxd .vimrc | head

应该显示BOM字节是否存在。(很多东西都很方便)


谢谢,但看起来没有BOMB字节:xxd .vimrc | head=> 0000000: 224e 756d 6265 7273 0a73 6574 206e 756d "Numbers.set num 我认为问题是charset=binary,但我不知道如何让它 停止发生。我尝试复制/粘贴到一个新文件并保存,但新文件也有charset=binary
EthanP 2013年

1
嗯,大多数确定二进制/文本的程序倾向于扫描几百或几千个字节来做出决定。你的.vimrc中有UTF-8字符吗?我这样做,在我的listchars设置中的整齐符号,等等。由于UTF-8由字节表示,第7位设置(0x80 - 0xFD),因此将启动sourcetree的检测器。
lornix 2013年

1
是的,我有一个非ascii字符(设备控件3,0x13),在Vim中是不可见的,但在Sublime中呈现为“DC3”。我删除了它,问题解决了!谢谢你的帮助。
EthanP 2013年

0

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

在vim中打开你的.vimrc:

:write ++enc=utf-8

谢谢,但我试过了,SourceTree仍称它为“二进制文件”,“无法预览”
EthanP 2013年

你能复制粘贴你的vimrc gist(gist.github.com)吗?
Hettomei 2013年

什么给了<< file -I .vimrc >>(如果你可以在终端中)?
Hettomei 2013年


file -I .vimrc ==> .vimrc:application / octet-stream; charset = binary
EthanP 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.