我最近发现了 Vim 的Ctrl+E和Ctrl+Y快捷方式,它们分别以一行的步长向上和向下移动屏幕,而不移动光标。
您是否知道任何将光标留在原处但移动屏幕以使具有光标的行成为第一行的命令?(在最后一行有一个命令将是一个不错的奖励)。
我可以通过手动按Ctrl+ E(或Ctrl+ Y)适当的次数来实现这一点,但是有一个以某种方式直接执行此操作的命令会很好。
有任何想法吗?
我最近发现了 Vim 的Ctrl+E和Ctrl+Y快捷方式,它们分别以一行的步长向上和向下移动屏幕,而不移动光标。
您是否知道任何将光标留在原处但移动屏幕以使具有光标的行成为第一行的命令?(在最后一行有一个命令将是一个不错的奖励)。
我可以通过手动按Ctrl+ E(或Ctrl+ Y)适当的次数来实现这一点,但是有一个以某种方式直接执行此操作的命令会很好。
有任何想法吗?
vim
!)此外:
Ctrl-y并且Ctrl-e仅在光标移出屏幕时才更改光标位置。
Vim 要求光标始终在当前屏幕上,但是,您可以将当前位置标记为书签,然后滚动然后返回到您所在的位置。
mg # This book marks the current position as g (this can be any letter)
<scroll around>
`g # return to g
这是我在 vimrc 中的解决方案:
"keep cursor in the middle all the time :)
nnoremap k kzz
nnoremap j jzz
nnoremap p pzz
nnoremap P Pzz
nnoremap G Gzz
nnoremap x xzz
inoremap <ESC> <ESC>zz
nnoremap <ENTER> <ENTER>zz
inoremap <ENTER> <ENTER><ESC>zzi
nnoremap o o<ESC>zza
nnoremap O O<ESC>zza
nnoremap a a<ESC>zza
使光标停留在屏幕中间,屏幕上下移动。
Ctrl使用+ D, Ctrl+ F, Ctrl+ B, Ctrl+ U, G, H, M, L,时将光标留在同一列gg
您应该定义以下选项:
:set nostartofline
我过去使用过这些快捷键(注意: 单独的击键,即点击z,松开,点击后续键):
z t...或... z enter --> 将当前行移动到屏幕顶部
z z...或... z . --> 将当前行移动到屏幕中心
z b...或... z - --> 将当前行移至底部
如果不明显:
enter表示ReturnorEnter键。
.表示 DOT 或“句号”键 ( .
)。
-表示连字符键 ( -
)
值得一提的是,如果大写锁定打开,则z.可以避免因意外键入而保存和关闭 Vi 的危险。ZZ
更多信息::help scroll-cursor
我的滚动记忆...
添加到其他答案还要注意ze
and 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
andl
和t
and b
and (使用 qwertz 键盘)c-e
和c-y
(还有“y”以某种方式指向底部)的位置,以记住屏幕移动的位置。
您可以在光标移动命令前加上一个数字,这将多次重复该命令
10Ctrl+E会做Ctrl+ E10 次而不是 1 次。
输入 vim 并键入:
:help z
z是用于重绘的 vim 命令,因此它将相对于您放置光标的位置重绘文件。您拥有的选项如下:
z+- 重新绘制文件,光标位于窗口顶部,并在您的行的第一个非空白字符处。
z-- 用光标在窗口底部和行的第一个非空白字符重绘文件。
z.- 用光标在窗口中心重绘文件,并在您的行的第一个非空白字符。
zt- 用光标在窗口顶部重绘文件。
zb- 用光标在窗口底部重绘文件。
zz- 用光标在窗口中心重绘文件。
您可能会发现“相对于光标滚动 Vim,自定义映射”的答案很有用。
您可以使用ScrollToPercent(0)
from that question 来执行此操作。
zEnter正是这个问题所要求的。
它可以在奇怪地不起作用的地方zz工作(Ubuntu 2016.04 LTS 上的 vim 7.4.1689,没有特殊的 .vimrc)
K有时使用和键滚动文本很有用J,所以我的 .vimrc 中有这个“滚动模式”功能(也绑定到zs)。
我写了一个插件,它使我能够在不移动光标位置的情况下导航文件。它基于折叠您的位置和目标位置之间的线,然后跳过折叠,或者中止它并且根本不移动。
在第一行光标、最后一行光标和中间光标之间快速切换也很容易,只需单击j,k或者l在您处于插件模式时。
我想这里会很合适。