Vim滚动而不更改光标在屏幕上的位置

Her*_*son 35 vim scroll cursor

当光标位于屏幕中间并向下滚动时,光标在屏幕上向上移动.我不希望它那样做.

如何滚动而不更改光标在屏幕上的位置?

解决方案,回答后补充:

noremap <C-k> 14j14<C-e>
noremap <C-l> 14k14<C-y>
Run Code Online (Sandbox Code Playgroud)

Alo*_*hal 44

我可以通过两种方式来思考:ctrl- Ectrl- Y滚动缓冲区而不移动光标相对于窗口的位置.我想这就是你想要的.此外,如果设置scrolloff为较大的数字,您将获得与ctrl- Ectrl- 相同的效果Y与移动键. scrolloff设置将使光标难以相对于窗口垂直移动.(使用类似的东西:set so=999,so是缩写scrolloff.)

:help 'scrolloff'
:help scrolling
Run Code Online (Sandbox Code Playgroud)

  • `ctrl-E`**确实**相对于窗口移动光标的位置,光标跟随文本; 如果光标位于窗口/屏幕的中间并且反复按"ctrl-E",则光标移动到第一行; 这正是提问者不想要的; 他想做`14j14 <Ce>`只是用14替换了一个数字取决于他的屏幕大小 (2认同)
  • 你的第二个建议,设置scrolloff,做op所要求的,但****不会给出与`ctrl-E`相同的效果; 只有滚动的问题是它在某种意义上是永久性的,现在它不可能在没有滚动的情况下移动; 如果让一个键移动而一个移动而不滚动会很好 (2认同)

Mat*_*009 11

ctrl- D而且ctrl- U就是你想要的.

ctrl- D具有相同的效果14j14<C-e>(只是数字14不是硬编码的,移动量取决于屏幕的实际大小):在文本中将光标向下移动几行但光标停留在文本的中间屏幕.

同样ctrl- U工作就像14k14<C-y>.

附录:如果您的屏幕有30行,那么两者完全相同.

  • 更准确地说:[count] <Cd>和[count] <Cu>是他想要的. (2认同)

wds*_*wds 6

如果你想用光标在屏幕的任何地方移动光标和视口,也许你应该设置一些自定义键绑定来同时执行这两个操作.

如:

:nnoremap <C-M-u> j<C-e>
Run Code Online (Sandbox Code Playgroud)

每按一次(仅在正常模式下),这将向下移动光标(j)并移动视口().Ctrl-eCtrl-Alt-u