При сравнении двух файлов в 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