保存后,光标在Vim中跳转

时间:2016-02-14 09:49:29

标签: vim cursor syntastic page-jump

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

我的.vimrc很长,现在我只尝试Sub Test() Dim CL As Range, CLv As String, a As Long For Each CL In ActiveSheet.UsedRange CLv = CL.Value On Error Resume Next a = WorksheetFunction.Search("/", CLv) On Error GoTo 0 If a <> 0 Then CL.Value = Right(CLv, Len(CLv) - a) a = 0 End If Next End Sub 命令。

如何解决或调试此问题?

2 个答案:

答案 0 :(得分:16)

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

autocmd FileType * autocmd BufWritePre <buffer> :%s/\s\+$//e

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

P.S。:可以通过使用恢复光标的函数来修复尾部空格,如下所示(取自here

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

autocmd BufWritePre * :call <SID>StripTrailingWhitespaces()

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

答案 1 :(得分:1)

来自Syntastic的文档:

  

设置为0时,光标不会自动跳转。 &GT;       设g:syntastic_auto_jump = 0&lt;设置为1时,无论何种类型,光标都将始终跳转到检测到的第一个问题。 &GT;       设g:syntastic_auto_jump = 1&lt;设置为2时,光标将跳转到检测到的第一个问题,但仅当此问题是错误时才会跳转。 &GT;       设g:syntastic_auto_jump = 2&lt;设置为3时,光标将跳转到检测到的第一个错误(如果有)。如果检测到所有问题   警告,光标不会跳转。 &GT;       让g:syntastic_auto_jump = 3

所以添加

let g:syntastic_auto_jump = 0

解决了这个问题。不清楚为什么突然出现这个问题,但是对于任何需要它的人来说都是解决方法。