как отключить loadview в vimdiff

526
Fire Crow

Я пытаюсь отключить функцию в 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
garyjohn

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

: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 
спасибо за понимание, к сожалению, пример кода со строкой if выдавал ошибки при загрузке vim, и я не заметил, что второй отсканированный код что-то сделал. Fire Crow 12 лет назад 0
Я получил что-то на работу см обновленное сообщение Fire Crow 12 лет назад 0