我开始在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
命令。
如何解决或调试此问题?
答案 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
解决了这个问题。不清楚为什么突然出现这个问题,但是对于任何需要它的人来说都是解决方法。