滚动

Nvim :help 页面,从 源代码 使用 tree-sitter-vimdoc 解析器 生成


滚动
这些命令移动窗口的内容。如果光标位置移出窗口,光标将移到窗口上(使用 'scrolloff' 选项周围的屏幕行)。一页是窗口中的行数减去两行。这些命令的助记符可能有点令人困惑。请记住,这些命令指的是在缓冲区中向上或向下移动窗口(您看到的缓冲区的一部分)。当窗口在缓冲区中向上移动时,窗口中的文本会在屏幕上向下移动。
有关介绍,请参阅用户手册的 03.7 节。

1. 向下滚动 scroll-down

以下命令将编辑窗口(您看到的缓冲区的一部分)向下移动(这意味着可以查看文本缓冲区中更多向下的行)
CTRL-E
CTRL-E 在缓冲区中向下滚动窗口 [count] 行。文本在屏幕上向上移动。助记符:额外的行。
CTRL-D
CTRL-D 在缓冲区中向下滚动窗口。行数来自 'scroll' 选项(默认值:半个屏幕)。如果给出 [count],则首先将 'scroll' 选项设置为 [count]。光标在文件中向下移动相同数量的行(如果可能;当行换行并且到达文件末尾时,可能会有差异)。当光标在缓冲区的最后一行时,不会发生任何操作,并发出蜂鸣声。另请参见 'startofline' 选项。
<S-Down><S-Down> <kPageDown> <PageDown><PageDown> CTRL-F <S-CR><S-CR> <S-NL> <S-+>SHIFT-+ <S-Plus> CTRL-F 在缓冲区中向前(向下)滚动窗口 [count] 页。另请参见 'startofline' 选项。当只有一个窗口时,可能会使用 'window' 选项。
z+
z+ 不带 [count]:重新绘制,将窗口正下方的行放在窗口顶部。将光标置于该行,位于该行的第一个非空白字符处。带 [count]:与 "z<CR>" 相同。

2. 向上滚动 scroll-up

以下命令将编辑窗口(您看到的缓冲区的一部分)向上移动(这意味着可以查看文本缓冲区中更多向上的行)
CTRL-Y
CTRL-Y 在缓冲区中向上滚动窗口 [count] 行。文本在屏幕上向下移动。 注意: 当使用 MS-Windows 键绑定时,CTRL-Y 重新映射为重做。
CTRL-U
CTRL-U 在缓冲区中向上滚动窗口。行数来自 'scroll' 选项(默认值:半个屏幕)。如果给出 [count],则首先将 'scroll' 选项设置为 [count]。光标在文件中向上移动相同数量的行(如果可能;当行换行并且到达文件末尾时,可能会有差异)。当光标在缓冲区的首行时,不会发生任何操作,并发出蜂鸣声。另请参见 'startofline' 选项。
<S-Up><S-Up> <kPageUp> <PageUp><PageUp> CTRL-B <S--><S-Minus> SHIFT-MINUS CTRL-B 在缓冲区中向后(向上)滚动窗口 [count] 页。另请参见 'startofline' 选项。当只有一个窗口时,可能会使用 'window' 选项。
z^
z^ 不带 [count]:重新绘制,将窗口正上方的行放在窗口底部。将光标置于该行,位于该行的第一个非空白字符处。带 [count]:首先滚动文本以将 [count] 行放在窗口底部,然后重新绘制,将现在位于窗口顶部的行放在窗口底部。将光标置于该行,位于该行的第一个非空白字符处。

3. 相对于光标滚动 scroll-cursor

以下命令重新定位编辑窗口(您看到的缓冲区的一部分),同时将光标保持在同一行。请注意,'scrolloff' 选项可能会导致在光标上方和下方显示上下文行。
z<CR>
z<CR> 重新绘制,将 [count] 行放在窗口顶部(默认光标行)。将光标置于该行的第一个非空白字符处。
zt
zt 与 "z<CR>" 相同,但将光标保留在同一列。
zN<CR>
z{height}<CR> 重新绘制,使窗口 {height} 行高。这在屏幕更新非常慢时,用于将行数减少到较小值。不能使高度超过物理屏幕高度。
z.
z. 重新绘制,将 [count] 行放在窗口的中心(默认光标行)。将光标置于该行的第一个非空白字符处。
zz
zz 与 "z." 相同,但将光标保留在同一列。小心:如果大写锁定开启,此命令将变为 "ZZ":写入缓冲区并退出!
z-
z- 重新绘制,将 [count] 行放在窗口底部(默认光标行)。将光标置于该行的第一个非空白字符处。
zb
zb 与 "z-" 相同,但将光标保留在同一列。

4. 水平滚动 scroll-horizontal

对于以下四个命令,光标跟随屏幕。如果光标所在的字符移出屏幕,光标将移到屏幕上最接近的字符。'sidescroll' 的值未使用。
z<Right> 或 zl z<Right> zl 将文本上的视图向右移动 [count] 个字符,从而将文本向左滚动 [count] 个字符。这仅在 'wrap' 关闭时有效。
z<Left> 或 zh z<Left> zh 将文本上的视图向左移动 [count] 个字符,从而将文本向右滚动 [count] 个字符。这仅在 'wrap' 关闭时有效。
zL
zL 将文本上的视图向右移动半个屏幕宽度,从而将文本向左滚动半个屏幕宽度。这仅在 'wrap' 关闭时有效。
zH
zH 将文本上的视图向左移动半个屏幕宽度,从而将文本向右滚动半个屏幕宽度。这仅在 'wrap' 关闭时有效。
对于以下两个命令,光标不会在文本中移动,只有文本在屏幕上滚动。
zs
zs 水平滚动文本以将光标定位在屏幕的开头(左侧)。这仅在 'wrap' 关闭时有效。
ze
ze 水平滚动文本以将光标定位在屏幕的末尾(右侧)。这仅在 'wrap' 关闭时有效。

5. 同步滚动 scroll-binding

有时,需要将两个或多个窗口绑定在一起,以便当一个窗口滚动时,其他窗口也滚动。在 Vim 中,可以通过设置(窗口特定的)'scrollbind' 选项来使窗口具有这种行为。当一个设置了 'scrollbind' 的窗口滚动时,所有其他 'scrollbind' 窗口都会滚动相同的量,如果可能的话。可以通过 'scrollopt' 选项来修改 'scrollbind' 的行为。
当使用滚动条或鼠标滚轮时,绑定仅在滚动具有焦点的窗口(光标所在的窗口)时发生。您可以使用它来暂时避免滚动绑定,而无需重置选项。
当一个窗口也设置了 'diff' 选项时,滚动绑定使用两个缓冲区之间的差异来精确地同步位置。否则将使用以下方法。
scrollbind-relative
每个 'scrollbind' 窗口都会跟踪其“相对偏移量”,可以将其视为当前窗口的垂直滚动位置与其他窗口的垂直滚动位置之间的差异。当其中一个 'scrollbind' 窗口被要求垂直滚动到其文本的开始或结束限制之外时,该窗口不再滚动,而是记住它希望超出限制多少。窗口保留此信息,以便无论被要求滚动到其缓冲区的限制之外,它都可以保持相同的相对偏移量。
但是,如果一个具有超出其缓冲区限制的相对偏移量的 'scrollbind' 窗口获得了光标焦点,则其他 'scrollbind' 窗口必须跳转到当前窗口的相对偏移量有效的位置。可以通过从 'scrollopt' 选项中清除“跳跃”标志来更改这种行为。
syncbind :syncbind :sync :syncbind 强制所有 'scrollbind' 窗口具有相同的相对偏移量。也就是说,当任何一个 'scrollbind' 窗口滚动到其缓冲区的顶部时,所有 'scrollbind' 窗口也将位于其缓冲区的顶部。
scrollbind-quickadj
当使用键盘命令垂直滚动窗口时,'scrollbind' 标志是有意义的,当在具有光标焦点的窗口中使用垂直滚动条或鼠标滚轮时,它也是有意义的。但是,当在没有光标焦点的窗口中使用垂直滚动条或鼠标滚轮时,会忽略 'scrollbind'。这允许快速调整 'scrollbind' 窗口的相对偏移量。

6. 使用鼠标滚轮滚动 scroll-mouse-wheel

当您的鼠标有滚轮时,它应该在 GUI 和任何具有鼠标支持的终端中与 Nvim 一起使用。默认情况下,只支持垂直滚动滚轮,但一些 GUI 也支持水平滚动滚轮。
请注意,水平滚动仅在设置了 'nowrap' 时才有效。此外,除非在 'guioptions' 中设置了 "h" 标志,否则如果光标行即将从屏幕上滚动,光标将移动到最长的可见行(类似于水平滚动条的工作方式)。
您可以使用 'mousescroll' 选项来控制要滚动的行/列数。您还可以通过映射键来修改默认行为。例如,要在正常模式下每次滚动一页
:map <ScrollWheelUp> <C-B>
:map <ScrollWheelDown> <C-F>
滚动键也可以与 Shift、Ctrl 和 Alt 等修饰符组合使用。
使用鼠标滚动时,光标所在的窗口将滚动。这允许您滚动非活动窗口。请注意,当滚动键被重新映射到键盘键时,无论当前光标位置如何,都会影响活动窗口。
主要
命令索引
快速参考