Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
保存后Vim中的光标跳转_Vim_Cursor_Syntastic_Page Jump - Fatal编程技术网

保存后Vim中的光标跳转

保存后Vim中的光标跳转,vim,cursor,syntastic,page-jump,Vim,Cursor,Syntastic,Page Jump,我开始在Vim中体验到一种奇怪的行为-当保存文件时(:w),光标会跳到文件中的特定位置。位置是恒定的,对于不同的文件是不同的,也就是说,它可以是函数等的开始,但是如果我向上或向下移动该行,保存后的位置将保持不变 My.vimrc相当长,目前我只尝试了:noautocmd命令 如何修复或调试此问题?来自syntastic的文档: 当设置为0时,光标不会自动跳转。(设g:syntastic\u auto\u jump=0) 当设置为1时,无论类型如何,光标始终会跳转到检测到的第一个问题。(设g:sy

我开始在Vim中体验到一种奇怪的行为-当保存文件时(
:w
),光标会跳到文件中的特定位置。位置是恒定的,对于不同的文件是不同的,也就是说,它可以是函数等的开始,但是如果我向上或向下移动该行,保存后的位置将保持不变

My.vimrc相当长,目前我只尝试了
:noautocmd
命令


如何修复或调试此问题?

来自syntastic的文档:

当设置为
0
时,光标不会自动跳转。(
设g:syntastic\u auto\u jump=0

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

当设置为
2
时,光标将跳转到检测到的第一个问题,但仅当此问题为错误时。(
设g:syntastic_auto_jump=2

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

所以加上

let g:syntastic_auto_jump = 0

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

我也遇到了同样的问题,不是因为
syntastic\u auto\u jump
设置,而是因为我为尾部空白放置了一个命令:

autocmd FileType * autocmd BufWritePre <buffer> :%s/\s\+$//e
autocmd文件类型*autocmd BufWritePre:%s/\s\+$//e
这是将光标移动到要替换空白的最后一行。本质上,任何对文档进行更改并在不恢复光标的情况下更改光标的命令都可能导致类似的行为

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

函数!StripTrailingWhitespaces()
设l=直线(“.”)
设c=col(“.”)
%s/\s\+$//e
调用游标(l,c)
结束
autocmd BufWritePre*:调用StripTrailingWhitespaces()

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

也许您(或插件)重新映射了:w。“:cmap w”给了你什么?
:cmap w
没有给出映射结果我找到了原因。我查了一下:科本,它是空的。然后在:lopen我看到了syntastic的列表。光标跳跃的位置是列表中的第一个位置!现在只剩下看如何修复:)也许这与系统设置有关:
function! <SID>StripTrailingWhitespaces()
    let l = line(".")
    let c = col(".")
    %s/\s\+$//e
    call cursor(l, c)
endfun

autocmd BufWritePre * :call <SID>StripTrailingWhitespaces()