首页 > 解决方案 > 如何使 vimdiff 检测行尾字符的差异(dos vs unix)

问题描述

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

标签: vimvimdiff

解决方案


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

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

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

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

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

或在 Vim 内部:

:windo e! ++ff=unix

推荐阅读