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