【问题标题】:Forcing vimdiff to wrap lines?强制 vimdiff 换行?
【发布时间】:2013-05-30 15:42:55
【问题描述】:

在 VIM 中比较 2 个文件时,我更喜欢换行。但是,vimdiff 默认将 wrap 设置为关闭。

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

【问题讨论】:

  • 感谢您的意见。它只有在 vim 以 diff 模式启动时才有效。当从 vim 内部启动差异时,我也有兴趣强制换行。是否也可以通过类似的命令?谢谢!
  • 这很有趣,但我遇到了完全相反的问题,但 'set nowrap' 不起作用。如果我进入 diff 模式,行会自动换行。

标签: vim word-wrap vimdiff


【解决方案1】:

我使用以下:

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

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

【讨论】:

  • 非常感谢!这正是我一直在寻找的。我会投票,但我不能(太新)......
  • 我不知道为什么,但这不起作用。我在 debian 机器上使用 vim 7。不过,user2442259 答案有效。
  • @eddy147 您的全局设置是wrap 还是nowrap?如果是后者,请尝试使用相同的 autocmdsetlocal wrap 而不是 setlocal wrap&lt;
【解决方案2】:

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

au VimEnter * if &diff | execute 'windo set wrap' | endif

【讨论】:

  • 实际上,这对我有用,但无论如何不是被接受的答案。
【解决方案3】:

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

:diffthis
:set wrap

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

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

这会导致两个文件垂直移动。当然,颜色有助于在视觉上补偿这种转变。但是经过几行 diff,偏移量可能会高于窗口的高度,导致 diff 无法读取。

所以问题还没有完全解决…… 请指教。

【讨论】:

  • :windo set wrap 在两个拆分中设置换行。
  • @SophiaFeng 这不是我们在这里讨论的问题。每次出现两个文件中的当前行占用不同数量的虚拟行进行显示,都会使滚动绑定更加不同步。
【解决方案4】:

你可以运行这个

vimdiff -c 'set wrap' -c 'wincmd w' -c 'set wrap' file1 file2

【讨论】:

    【解决方案5】:

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

    我终于用粗粮了:

    alias vimdiff='vimdiff +"windo set wrap"'
    vimdiff file.orig file
    

    【讨论】:

      【解决方案6】:

      如果您有更多文件,并且不想将其永久保存在 vimrc 中

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

      或者只要打开 vim 就直接windo set wrap

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-17
        • 2016-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多