При сравнении двух файлов в VIM я предпочитаю, чтобы линии были обернуты. Тем не менее, vimdiff устанавливает завершение по умолчанию.
Есть ли способ автоматически установить перенос строки для каждого diff?
При сравнении двух файлов в VIM я предпочитаю, чтобы линии были обернуты. Тем не менее, vimdiff устанавливает завершение по умолчанию.
Есть ли способ автоматически установить перенос строки для каждого diff?
Я использую следующее:
autocmd FilterWritePre * if &diff | setlocal wrap< | endif
FilterWritePre
запускается непосредственно перед созданием diff в буфер, а setlocal wrap<
копирует глобальное значение wrap
. Конечно, это также можно просто заставить setlocal wrap
.
Вы можете поместить следующее в свой vimrc.
au VimEnter * if &diff | execute 'windo set wrap' | endif
Когда vim уже запущен, команды запуска diff и обертывания находятся в каждом из файлов разделенного окна:
:diffthis
:set wrap
Тем не менее, diff + wrap отображается неправильно:
Если у вас длинная строка на одном файле и короткая или отсутствующая строка на другой, то длинная строка будет занимать, скажем, две строки с первой стороны, по короткой или отсутствующей строке будет занимать только одну строку на второй боковая сторона.
Это приводит к вертикальному сдвигу двух файлов. Конечно, цвета помогают визуально компенсировать этот сдвиг. Но в нескольких строках diff сдвиг может быть выше высоты окна, что делает diff нечитаемым.
Так что вопрос не полностью решен... Пожалуйста, посоветуйте.
Мне пришлось решить этот вопрос для демонстрации, где я хотел, чтобы vimdiff
обертывался только при запуске с определенного терминала.
Я, наконец, прибегал к сырой:
alias vimdiff='vimdiff +"windo set wrap"'
vimdiff file.orig file
Вы можете запустить этот
vimdiff -c 'set wrap' -c 'wincmd w' -c 'set wrap' file1 file2