我最近发现,Vim的Ctrl+E和Ctrl+Y快捷键可以分别用一行步骤上下移动屏幕,而不需要移动光标。

你知道有什么命令可以让光标留在原地,但会移动屏幕,让光标所在的行变成第一行吗?(最后一行有一个命令将是一个很好的奖励)。

我可以通过手动按下适当次数的Ctrl+E(或Ctrl+Y)来实现这一点,但有一个命令可以以某种方式直接做到这一点会更好。

什么好主意吗?


当前回答

我在过去使用过这些快捷键(注意:分开的键击,即点击z,放手,点击后续键):

Z t…或者…Z输入——>移动当前行到屏幕顶部

Z Z…或者…z。——>将当前行移动到屏幕中央

Z b…或…Z -——>将当前行移动到底部

如果不是很明显:

“enter”表示“返回”或“enter”键。

. 表示DOT或“句号”键(.)。

-表示连字符键(-)

无论如何,z避免了保存和关闭Vi的危险,因为如果打开了大写锁,则不小心键入ZZ。

更多信息::help scroll-cursor

其他回答

另外:

Ctrl-y将屏幕向上移动一行 Ctrl-e将屏幕向下移动一行 Ctrl-u移动光标和屏幕向上½页 Ctrl-d移动光标和屏幕下移½页 Ctrl-b将屏幕上移一页,光标移到最后一行 Ctrl-f向下移动屏幕一页,光标到第一行

Ctrl-y和Ctrl-e仅在光标要移出屏幕时才更改光标位置。

由www.lagmonster.org/docs/vi2.html提供

Zz -移动电流线到中间 屏幕上的 (小心zz,如果你不小心打开了Caps Lock,你会保存并退出vim!) Zt——移动电流线 到屏幕的顶部 Zb -移动 当前行到底部 屏幕

有时用K和J键滚动文本是有用的,所以我在.vimrc中有这个“滚动模式”函数(也绑定到zs)。

看到scroll_mode.vim。

我写了一个插件,它可以让我在不移动光标位置的情况下导航文件。它是基于折叠你的位置和目标位置之间的线,然后跳过折叠,或者中止它,根本不移动。

当您处于插件模式时,只需单击j、k或l,就可以轻松地在第一行、最后一行和中间的光标之间快速切换。

我想它会很适合这里。

我的滚动记忆法…

添加到其他答案也要注意ze和zs,意思是:将屏幕光标向左/向右移动(不移动光标)

+-------------------------------+
^                               |
|c-e (keep cursor)              |
|H(igh)             zt (top)    |
|                   ^           |
|           ze      |      zs   |
|M(iddle)  zh/zH <--zz--> zl/zL |
|                   |           |
|                   v           |
|L(ow)              zb (bottom) |
|c-y (keep cursor)              |
v                               |
+-------------------------------+

还可以观察h、l、t和b以及(用qwertz键盘)c-e和c-y(也就是“y”以某种方式指向底部)在键盘上的位置,以记住屏幕的移动位置。