Vim autoread不改变光标位置

时间:2018-05-22 19:46:47

标签: vim

我通过我的.vimrc工作自动回复:

set autoread
au CursorHold,FocusGained,BufEnter * checktime

当vim由于它已经改变而重新加载缓冲区时,它都会滚动缓冲区并将当前光标位置更改为文件中看似随机的点,尽管它偶尔会停留在同一个位置。我已经尝试过它,但没有明显的模式。

有没有办法防止这种情况,或者在重新加载时保存和恢复光标位置?

2 个答案:

答案 0 :(得分:4)

您可以尝试保存视图,然后将其恢复:

function! Checktime() abort
    let l:winview = winsaveview()
    checktime
    call winrestview(l:winview)
endfunction

augroup Autoread
    autocmd!
    autocmd CursorHold,FocusGained,BufEnter * call Checktime()
augroup END

(未测试的)

答案 1 :(得分:1)

参考this回答:为防止光标离开当前位置,您可以调用feedkeys [" lh"](它将光标向右移动并向后移动,在查看文件时,这通常不会造成伤害)

:set autoread | au CursorHold * checktime | call feedkeys("lh")
分别

:set autoread | au CursorHold,FocusGained,BufEnter * checktime | call feedkeys("lh")

(它适用于我的环境)