【问题标题】:How to make vimdiff to detect differences in line ending characters(dos vs unix)如何使 vimdiff 检测行尾字符的差异(dos vs unix)
【发布时间】:2019-01-16 18:19:45
【问题描述】:

当比较两个具有相同内容但具有行结尾的文件时,vim diff 不会检测到差异。 有没有办法让 vimdiff 显示差异。

【问题讨论】:

标签: vim vimdiff


【解决方案1】:

当文件的行尾不一致(dos 与 unix)时,Vim 会将它们检测为 unix,并且行将显示尾随 CR (^M),也在差异中。

当一个文件始终使用 dos,而另一个文件始终使用 unix 行结尾时,您所描述的(未检测到更改)会发生。 Vim 然后“抽象掉”:help 'fileformat' 选项值中一致的行尾。

一些用户将'fileformat' 值放入'statusline',并用它来发现差异。 (我这样做是有条件的,只有在它与平台的默认值不同时才显示它。)

如果您想在 diff 本身内显示行尾差异,您可以在启动时强制 'fileformat' 为 unix:

$ vimdiff --cmd 'set fileformats=unix' file1 file2

或在 Vim 中:

:windo e! ++ff=unix

【讨论】:

  • vimdiff 命令行是“永远不要将set nocompatible 放入vimrc”的第一个硬参数(我经历过)。
  • @user7369280:没错;这确实会恢复像'fileformats' 这样的设置。如果 vimrc 存在,Vim 无论如何都会切换到 nocompatible。尽管如此,人们(通常出于迷信或无知)还是把它放进去了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多