为什么我需要vim在二进制模式为’noeol’工作?

前端之家收集整理的这篇文章主要介绍了为什么我需要vim在二进制模式为’noeol’工作?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这个问题是一个后续的 Work Around我用于“保存文件在vim,而没有在文件末尾的换行符强行添加”烦恼。

基本上我不能在我的.vimrc中使用set noeol,因为它没有!

它做它应该做的,但如果我编辑文件在二进制模式。 (vim -b文件而不是vim文件)

这是为什么?

反正在.vimrc有一个简单的偏好,不添加换行符在我编辑的每个单个文件

此外,如果我开始编辑每个文件在二进制模式,我会遇到什么样的问题?到目前为止我还没有看到任何区别。

Vim“添加”到文件最后一行的末尾是“换行符”字符,不应该与“新行”混淆。

“换行”字符或更准确地“行结束”字符(< EOL>)意味着“在该点之后的任何内容必须被认为在另一行上”。利用该解释 – < EOL>是行终止符 – 文件的最后一行实际上是具有< EOL>的最后一行。

问题是大多数编辑器和IDE有不同的解释 – < EOL>是一个行分隔符,并且在逻辑上,默认不添加< EOL>在新文件的最后一行的末尾,并且当他们遇到< EOL>时,在真实的最后一行之后添加多余的“新行”。

简而言之,Vim不添加“新行”:其他编辑将其“换行”解释为(“错误”)为“新行”。

但你可以通过执行以下操作来解决这个问题:在你写文件之前,执行:set binary noeol如果你想要保持“< EOL> -free”。

然而,:’二进制’有很多关于危险的说:set二进制,所以我会说,把它“开”所有的时间听起来像一个坏主意。

为了说明不同的行为,这是当你尝试连接两个文件与< EOL&gt ;:

$ cat file1    $ cat file2         $ cat file1 file2

lorem ipsum    Le tramway jaune    lorem ipsum
dolor sit      avance lentement    dolor sit
amet           dans le             amet
                                   Le tramway jaune
                                   avance lentement 
                                   dans le

这是当您尝试连接两个文件而不< EOL&gt ;:

$ cat file1    $ cat file2         $ cat file1 file2

lorem ipsum    Le tramway jaune    lorem ipsum
dolor sit      avance lentement    dolor sit
amet           dans le             ametLe tramway jaune
                                   avance lentement 
                                   dans le

第一个行为是以某种方式预期的行为和为什么Vim和许多(如果不是大多数)UNIX-y程序默认为终止符解释和添加< EOL>字符在最后一行的结尾。

下面的图片显示了一个简单的文件,其中< EOL>使用nano创建(与Vim相同),并在Eclipse,TextMate,Sublime Text,Vim,XCode和TextEdit中打开。

(编辑)这个文件中没有第4行,并且正确显示文件的唯一编辑器是Vim。行号列的唯一目的是提供有关缓冲区的信息。显示4行,其中只有3是一个严重的错误。 (结束)

图片显示另一个简单文件,但不包含< EOL>用Sublime Text创建并在相同的编辑器/ IDE中打开。

猜你在找的Bash相关文章