当我使用vim -u NONE
打开文件并获取此代码时:
function! F()
let l:savePos=getpos('.')
silent normal! gg
call setpos('.',l:savePos)
endfunction
autocmd InsertLeave * call F()
当我离开插入模式时,我有一个奇怪的行为。 setposition有时会改变,就像执行z-
一样。
如果文件大于窗口,您可以看到。
你能证实这种行为吗?
我的vim是7.4
答案 0 :(得分:1)
通常,如果要保存和恢复光标位置,最好使用winsaveview()
,因为它有一些其他有用的功能。
您的代码可以重写为
function! F()
let view = winsaveview()
silent normal! gg
call winrestview(view)
endfunction
autocmd InsertLeave * call F()
此外,函数内部的变量会自动在本地作用域,因此您无需在l:
前添加前缀。