1

Я пытаюсь отключить функцию в vim, которая помнит, где я был, когда я использую vimdiff. Причина этого проста: я не хочу пропустить изменения, которые прокрутились из поля зрения.

Я нашел много документации по mkview и loadview, но ничего о том, как их отключить. Кто-нибудь знает, как отключить loadview.

одна интересная часть этого состоит в том, что, поскольку файл, с которым он сравнивается, может иметь дополнительный код в начале, он должен соответствовать начальной позиции того, какой файл длиннее.

Половина проблемы решена благодаря Гариону.

if &diff
   au BuffWinEnter * 1
endif

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

в концепции, что мне нужно сделать, это

1.) detect if vim is in diff mode
2.) scroll to the first line of the new file
3.) switch panes to the old code
4.) scroll to the top of hte changed file
5.) switch back to the new file

1 ответ1

1

Я не уверен, какую функцию вы имеете в виду, но я думаю, что вы имеете в виду автоматический переход к последней позиции курсора, описанной здесь:

:help last-position-jump

Автокоманда, которая реализует эту функцию, не является частью самого Vim, но часто добавляется в /etc /vimrc или /usr /share /vim /vimrc дистрибутивами Linux, такими как Fedora. Если это функция, которую вы хотите отключить, одним из подходов будет добавление дополнительных условий к этой автокоманде, возможно,

au BufReadPost *
\ if line("'\"") > 0 && line("'\::) <= line("$") && !&diff && (v:progname !~ "diff") |
\   exe "normal! g'\"" |
\ endif

Другой подход - добавить новую автокоманду в ~/.vimrc, чтобы перейти в начало файла, если вы находитесь в режиме diff, например,

au BufWinEnter * if &diff || (v:progname =~ "diff") | 1 | endif

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .