39

在 VIM 中区分 2 个文件时,我更喜欢换行。但是,vimdiff 默认设置 wrap 为 off。

有没有办法为每个差异自动设置换行?

4

6 回答 6

42

我使用以下内容:

autocmd FilterWritePre * if &diff | setlocal wrap< | endif

FilterWritePre在生成的差异写入缓冲区之前立即触发,并setlocal wrap<复制 的全局值wrap。当然也可以简单地强制setlocal wrap

于 2013-06-26T20:29:48.623 回答
39

您可以将以下内容放入您的 vimrc 中。

au VimEnter * if &diff | execute 'windo set wrap' | endif
于 2013-06-01T00:50:41.007 回答
17

当 vim 已经启动时,启动 diff 和 wrap 的命令在每个拆分窗口文件上:

:diffthis
:set wrap

但是,diff+wrap 显示不正确:

如果您在一个文件上有一个长行,而另一个文件有一个短行或缺失行,那么长行将占据第一侧的 2 行,短行或缺失的行将仅占据第二侧的 1 行边。

这会导致2 个文件发生垂直偏移。当然,颜色有助于在视觉上补偿这种转变。但是经过几行差异,偏移可能高于窗口的高度,使差异不可读。

所以这个问题还没有完全解决......请指教。

于 2013-12-11T15:41:39.317 回答
6

你可以运行这个

vimdiff -c 'set wrap' -c 'wincmd w' -c 'set wrap' file1 file2
于 2017-07-26T17:17:05.973 回答
3

我必须为演示解决这个问题,我只想从某个终端启动时vimdiff包装。

我终于求助于原油:

alias vimdiff='vimdiff +"windo set wrap"'
vimdiff file.orig file
于 2017-02-02T14:48:38.360 回答
3

如果你有更多文件,并且你不想在你的 vimrc 中永久保存它

vimdiff -c 'windo set wrap' file1 file2 file3 [file4]

或仅windo set wrap当 vim 打开时

于 2019-02-12T16:52:48.033 回答