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

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

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

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

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

我的简短.vimrc:

set tabstop=4
set softtabstop=4
set shiftwidth=4
set smartindent
set mouse=a
set number
set ai
set nowrap
set viminfo='100,<5000,s1000

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

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

这解决了这个问题.

点赞