2013-05-30 81 views
23

當版本比較在VIM 2個文件,我寧願要封裝的行。但是,vimdiff默認設置爲關閉。強制vimdiff換行?

有沒有一種方法來設置線,用於對差異自動換行?

+0

感謝。它工作,但只有當vim以差異模式啓動時纔有效。我也有興趣在從vim內開始diff時強制換行。是否也可以從類似的命令?謝謝! – mgouin

回答

22

我使用以下命令:

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

FilterWritePre之前產生的差異被寫入緩衝區,setlocal wrap<副本wrap全球價值被立即觸發。當然,也可以簡單地強制setlocal wrap

+0

非常感謝!這正是我所期待的。我會投票,但我不能(太新)... – mgouin

+0

我不知道爲什麼,但這不工作。我在debian機器上使用vim 7。 user2442259 Answer雖然有效。 – eddy147

+0

@ eddy147你的全局設置是'wrap'還是'nowrap'?如果是後者,請用'setlocal wrap'而不是'setlocal wrap <'來嘗試'autocmd'。 –

19

你可以把你的vimrc以下。

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

其實,這對我和somhow不是被接受的答案。 – BHS

13

如果Vim已經啓動,命令啓動diff和一個包裹是,在每個拆分窗口的文件:

:diffthis 
:set wrap 

然而,DIFF +包裝不正確顯示:

如果你有一個文件很長的線,並在其他短期或缺失行,那麼長的線將佔據,比方說,2號線在第一面上,通過短或者缺失行只會佔用1行第二側。

這導致2個文件的垂直移位。當然,這些顏色有助於視覺上彌補這種轉變。但是在幾行diff中,shift可能高於窗口的高度,使diff不可讀。

所以,問題不完全解決... 請指教。

+2

':windo set wrap'設置兩個分組中的包裝。 –

2

我必須解決這個問題的一個演示,我想vimdiff從某個終端啓動時。

我終於祭出對原油:

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

您可以爲您輸入運行該

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