Заставлять vimdiff обматывать линии?

При сравнении двух файлов в VIM я предпочитаю, чтобы линии были обернуты. Тем не менее, vimdiff устанавливает завершение по умолчанию.

Есть ли способ автоматически установить перенос строки для каждого diff?

Ответ 1

Я использую следующее:

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

FilterWritePre запускается непосредственно перед созданием diff в буфер, а setlocal wrap< копирует глобальное значение wrap. Конечно, это также можно просто заставить setlocal wrap.

Ответ 2

Вы можете поместить следующее в свой vimrc.

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

Ответ 3

Когда vim уже запущен, команды запуска diff и обертывания находятся в каждом из файлов разделенного окна:

:diffthis
:set wrap

Тем не менее, diff + wrap отображается неправильно:

Если у вас длинная строка на одном файле и короткая или отсутствующая строка на другой, то длинная строка будет занимать, скажем, две строки с первой стороны, по короткой или отсутствующей строке будет занимать только одну строку на второй боковая сторона.

Это приводит к вертикальному сдвигу двух файлов. Конечно, цвета помогают визуально компенсировать этот сдвиг. Но в нескольких строках diff сдвиг может быть выше высоты окна, что делает diff нечитаемым.

Так что вопрос не полностью решен... Пожалуйста, посоветуйте.

Ответ 4

Мне пришлось решить этот вопрос для демонстрации, где я хотел, чтобы vimdiff обертывался только при запуске с определенного терминала.

Я, наконец, прибегал к сырой:

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

Ответ 5

Вы можете запустить этот

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