光标在vim中没有返回到水平位置

时间:2015-06-27 23:36:36

标签: vim

当我处于正常模式时,光标按预期工作 - 请考虑以下情况:

Initial

如果我按下4次,光标将移动到此位置:

Expected

但是,当我在插入模式下执行相同的操作时,光标会到达:

Unexpected

问题是:这种行为是否正确?如果是,那背后的原因是什么?如何更改它(如果可能的话)?

我的简短.vimrc:

?- ordered([1,3,7,11]).
yes                                  % succeeds deterministically
?- ordered([1,3,3,7]).
yes                                  % succeeds deterministically
?- ordered([1,7,3,9]).
no

1 个答案:

答案 0 :(得分:2)

这个问题一直困扰着我一段时间,今天我在同一主题上找到了这个回答的问题:

https://vi.stackexchange.com/questions/3021/vim-forgets-cursor-column-when-i-move-over-a-line-that-ends-with-a-brace-in-inse

答案并不完全准确(在运行期间确实在vim中产生了错误),但我设法修改它以使其正常工作。以下是我所做的改变:

在负责突出显示匹配括号/usr/share/vim/vim74/plugin/matchparen.vim的文件中,在第90-100行,有以下代码:

let has_getcurpos = exists("*getcurpos")
if has_getcurpos
  " getcurpos() is more efficient but doesn't exist before 7.4.313.
  let save_cursor = getcurpos()
else
  let save_cursor = winsaveview()
endif

问题在于getcurpos()功能 - 由于某种原因它似乎无法正常工作。因此,我在该代码的第一行之后添加了override:

let has_getcurpos = 0

这解决了这个问题。