Vim VI显示使用git-bash-split分割大文本文件后的控制字符
我过去常常把一个大的文本文件分割成几个小文件。要分割文件,我在Git Bash中使用以下命令: 拆分-l 80000大文件 然后我想编辑每个输出文件,但是当我在VI中打开它们时,输出看起来很奇怪,我无法正确编辑文件。输出包含大量@符号和插入符号。我假设这些是控制字符。请参见以下屏幕截图: 我的问题是: 为什么文件会这样显示? 如何在VI中正确编辑文件?Vim VI显示使用git-bash-split分割大文本文件后的控制字符,vim,split,vi,git-bash,Vim,Split,Vi,Git Bash,我过去常常把一个大的文本文件分割成几个小文件。要分割文件,我在Git Bash中使用以下命令: 拆分-l 80000大文件 然后我想编辑每个输出文件,但是当我在VI中打开它们时,输出看起来很奇怪,我无法正确编辑文件。输出包含大量@符号和插入符号。我假设这些是控制字符。请参见以下屏幕截图: 我的问题是: 为什么文件会这样显示? 如何在VI中正确编辑文件? 如果仔细观察,每秒钟的字符都是^@,它在Vim中表示一个空字节cp。中间的字母是可读的,使用[TIP_Update_uz]。。因此,我们正在研究
如果仔细观察,每秒钟的字符都是^@,它在Vim中表示一个空字节cp。中间的字母是可读的,使用[TIP_Update_uz]。。因此,我们正在研究的是16位编码,即大多数ASCII文本的每个字符有两个字节;由于空字节是第二个字节,因此它是小尾端 前两个字符ÿþ违反了规则;这是一个为文本编辑器提供编码提示的字符。按照显示方式,Vim认为文本是拉丁1编码 因此,您在Vim:UCS-2le中处理的是16位UCS-2编码的Unicode ISO/IEC 10646-1名称;请参阅,但Vim不会自动检测它们 你也可以 通过::e!++enc=ucs-2le手动强制编码 重新配置Vim以自动检测这些;实际上,默认值包括ucs bom,应该可以很好地检测这些。
我知道这是一篇非常古老的文章,但它可能会对某些人有所帮助。如果您使用Git Bash将文件拆分为多个文件,请尝试使用65001 UTF-8而不是ANSI 1252或任何其他格式创建主文件。我在拆分的文件中遇到了相同的NUL问题,但当我将主文件转换为UTF-8时,它工作得非常好
SPLIT -l 50000 Main.txt Split.txt
谢谢,这对拆分输出的第一个文件非常有效,但对第二个文件却不起作用。结果如下:文件最初看起来是这样的:区别在于前两个字符ÿþ没有出现在这里。你能提供一个有效的命令吗?看起来拆分的字节数不是偶数,因此秒ond one实际上是带有边界损坏的大端字节。如果您真的需要在行上拆分,您的shell还需要正确理解编码。在偶数上拆分会更容易!字节计数,例如拆分-b 800000。如果您手动提供编码,则缺少BOM并不重要。对于“文件编码”,它将是com但是,即使在使用命令split-b 100000000 largeFile时,第二个文件看起来是这样的:但是我似乎可以使用您提供的命令::e!++enc=ucs-2leYes,这就是我的意思;您需要手动++enc,因为后续拆分中缺少BOM。