vim

时间:2017-03-10 09:31:22

标签: linux ubuntu vim

当我使用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

1 个答案:

答案 0 :(得分:1)

通常,如果要保存和恢复光标位置,最好使用winsaveview(),因为它有一些其他有用的功能。

您的代码可以重写为

function! F()
    let view = winsaveview()
    silent normal! gg
    call winrestview(view)
endfunction

autocmd InsertLeave * call F()

此外,函数内部的变量会自动在本地作用域,因此您无需在l:前添加前缀。