在 VIM 中滚动时如何保持光标水平位置?

kle*_*lew 6 vim

上下滚动窗口(或移动光标)时,是否可以将光标保持在恒定的水平位置(列)?

例如,如果我有这样几行的文件:

This.is.a.test
Short.one

This.is.a.longer.line
Run Code Online (Sandbox Code Playgroud)

(我把 . 放在有空间的地方)

当我在“测试”词的末尾有光标然后向下移动(或滚动窗口)时,光标将其水平位置更改为当前行的最后一个字符。当我编辑带有长行而不换行的文件时,这很烦人,因为如果我将窗口水平滚动到某个位置,然后想要向下移动一些行并且恰好有一条短行,那么我的整个窗口会自动水平滚动到这条短线的结尾,我必须手动将其滚动回之前的位置。

如何改变这种行为?

gar*_*ohn 7

我解决这个问题的方法是设置 'virtualedit' 选项:

:set virtualedit=all
Run Code Online (Sandbox Code Playgroud)

  • 使用此选项,“9j”保持光标列位置,但滚动“Cd”将光标移动到左侧。事实证明我还需要`nostartofline`。 (2认同)