保存后,光标在Vim中跳转

val*_*alk 2 vim cursor page-jump syntastic

我开始在Vim中遇到一种奇怪的行为 - 当保存文件(:w)时,光标会跳转到文件中的特定位置.位置是恒定的,并且对于不同的文件是不同的,也就是说,它可以是函数的开始等,但是如果我向上或向下移动线,则保存后的位置仍然存在.

我的.vimrc很长,现在我只尝试:noautocmd命令.

我该如何修复或调试这个?

net*_*ino 16

我有同样的问题,不是因为syntastic_auto_jump设置,而是由于我为尾随空格放置的命令:

autocmd FileType * autocmd BufWritePre <buffer> :%s/\s\+$//e
Run Code Online (Sandbox Code Playgroud)

这是将光标移动到替换空格的最后一行.实质上,任何类型的命令都会对文档进行更改并更改游标而不进行恢复,这可能会导致类似的行为.

PS:尾随空格可以通过使用恢复光标的函数来修复,如下所示(取自此处)

function! <SID>StripTrailingWhitespaces()
    let l = line(".")
    let c = col(".")
    %s/\s\+$//e
    call cursor(l, c)
endfun

autocmd BufWritePre * :call <SID>StripTrailingWhitespaces()
Run Code Online (Sandbox Code Playgroud)

或使用替换尾随空格的插件并为您恢复光标


val*_*alk 2

来自 Syntastic 的文档:

设置为0光标不会自动跳转。(let g:syntastic_auto_jump = 0 )

当设置为1光标时,无论类型如何,光标将始终跳转到检测到的第一个问题。(let g:syntastic_auto_jump = 1 )

当设置为光标时2,光标将跳转到检测到的第一个问题,但前提是该问题是错误。(let g:syntastic_auto_jump = 2 )

设置为3光标时,将跳转到检测到的第一个错误(如果有)。如果检测到的所有问题都是警告,则光标不会跳转。( let g:syntastic_auto_jump = 3)

所以添加

let g:syntastic_auto_jump = 0
Run Code Online (Sandbox Code Playgroud)

已经解决了问题。不清楚为什么问题突然出现,但这里是为需要它的人提供的解决方案。