当我使用 vimdiff 时,我试图禁用 vim 中记住我所在位置的功能。这样做的原因很简单,我不想错过已经滚动出视图的更改。
我在 mkview 和 loadview 上找到了很多文档,但没有关于如何禁用它们的文档。有人知道如何禁用 loadview 吗?
其中有趣的一点是,由于被比较的文件在开头可能有额外的代码,因此它需要与较长的文件的起始位置相匹配。
感谢 garyjohn,我已经解决了一半的问题。
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
我不确定您指的是什么功能,但我认为您指的是这里描述的自动跳转到最后一个光标位置:
:help last-position-jump
实现此功能的自动命令不是 Vim 本身的一部分,但通常由 Linux 发行版(如 Fedora)添加到 /etc/vimrc 或 /usr/share/vim/vimrc。如果这是您想要禁用的功能,一种方法是向该自动命令添加更多条件,也许
au BufReadPost *
\ if line("'\"") > 0 && line("'\::) <= line("$") && !&diff && (v:progname !~ "diff") |
\ exe "normal! g'\"" |
\ endif
另一种方法是向你的 ~/.vimrc 添加一个新的自动命令,以便在差异模式下跳转到文件顶部,例如,
au BufWinEnter * if &diff || (v:progname =~ "diff") | 1 | endif