我在使用Vim时遇到了一个奇怪的行为 - 当我保存文件(:w)时,光标会跳转到文件中的特定位置。这个位置是固定的,对于不同的文件是不同的,也就是说它可以是函数的开头等等,但如果我将行向上或向下移动,保存后的位置仍然保持不变。
我的.vimrc文件相当长,目前我只尝试了:noautocmd命令。
我该如何修复或调试这个问题?
我的.vimrc文件相当长,目前我只尝试了:noautocmd命令。
我该如何修复或调试这个问题?
我遇到了相同的问题,但不是由于 syntastic_auto_jump
设置引起的,而是由于我放置了一个用于删除行末空白的命令:
我遇到了类似的问题,不是因为 syntastic_auto_jump
的设置,而是因为我添加了一个去除行尾空格的命令:
autocmd FileType * autocmd BufWritePre <buffer> :%s/\s\+$//e
将光标移动到最后一个被替换的空格所在的行。基本上,任何改变文档并在不恢复光标的情况下更改光标的命令都可能导致类似的行为。
附:可以通过使用恢复光标的函数来修复尾随的空格,例如以下代码(取自此处)。
function! <SID>StripTrailingWhitespaces()
let l = line(".")
let c = col(".")
%s/\s\+$//e
call cursor(l, c)
endfun
autocmd BufWritePre * :call <SID>StripTrailingWhitespaces()
或者使用一个插件,可以替换尾部空格并为您恢复光标
从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
问题已经解决。不清楚为什么问题突然出现,但是以下是解决方法,供需要的人参考。