当我使用 vim -u NONE
打开文件并获取此代码时:
function! F()
let l:savePos=getpos('.')
silent normal! gg
call setpos('.',l:savePos)
endfunction
autocmd InsertLeave * call F()
当我离开插入模式时,我遇到了奇怪的行为。设置位置有时会发生变化,并且会执行类似 z-
的操作。
您可以看到文件是否大于您的窗口。
你能确认这种行为吗?
我的 vim 是 7.4
最佳答案
通常,如果您想保存和恢复光标位置,最好使用 winsaveview()
,因为它还有一些其他有用的功能。
您的代码可以重写为
function! F()
let view = winsaveview()
silent normal! gg
call winrestview(view)
endfunction
autocmd InsertLeave * call F()
此外,函数内的变量自动具有本地作用域,因此您无需在它们前面添加 l:
前缀。
关于linux - vim 中 setpos 和 getpos 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42714836/