*scroll.txt* For Vim version 6.4. 最近更新: 2005年3月 Vim 参考手册 作者:Bram Moolenaar译者
: iCrazy<icrazy@ustc.edu>
http://vimcdoc.sf.net 滚屏 *scrolling* 这些命令是用来移动窗口中的内容的。如果光标的位置移出了窗口,那么它会带动窗口 的内容移动几行(行数由 'scrolloff' 选项指定)。我们定义一页比一个窗口少2行文 字。记住这些可能会把您给弄晕了。请记住这些涉及使窗口(缓冲中您可以看到的那一 部分)上下移动的命令。当窗口在缓冲中向上移动的时候,窗口中的文字朝您屏幕的下 方移动。 请参阅用户手册的第 |03.7| 节,那里有一些介绍。 1. 向下滚屏 |scroll-down| 2. 向上滚屏 |scroll-up| 3. 相对于光标滚屏 |scroll-cursor| 4. 水平滚屏 |scroll-horizontal| 5. 同步滚屏 |scroll-binding| 6. 用鼠标滚轮滚屏 |scroll-mouse-wheel|
1. 向下滚屏 *scroll-down*
下面的这些命令使窗口(缓冲中您可以看到的那一部分)向下移动(这样您就可以往下 看到更多的缓冲中的文字): *CTRL-E*CTRL-E
使窗口在缓冲中向下移动[count]
行。助记法:额外( Extra)的行。 *CTRL-D*CTRL-D
使窗口在缓冲中向下移动。移动的行数由 'scroll' 选项指 定(默认设置为半个屏幕)。如果指定了[count]
,则会先 把 'scroll' 选项设为[count]
。如果可能的话,光标会在 文件中向下移动相同的行数(当一些行折行或者碰到文件结 束符的时候会有些差异)。当光标处于缓冲最后一行时,这 个命令无效,并且系统会发出一声蜂鸣。参看 'startofline' 选项。 {和 vi 的不同之处:Vim 滚屏时计算的是屏幕上的行数,而 不是文件中的行数;当有些行折行时,这2者会有些差异}<S-Down>
或 *<S-Down>* *<kPageDown>*<PageDown>
或 *<PageDown>* *CTRL-F*CTRL-F
使窗口在缓冲中向前(下)移动[count]
行。参看 'startofline' 选项。 *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' 选项。 {和 vi 的不同之处:Vim 滚屏时计算的是屏幕上的行数,而 不是文件中的行数;当有些行折行时,这2者会有些差异}<S-Up>
或 *<S-Up>* *<kPageUp>*<PageUp>
或 *<PageUp>* *CTRL-B*CTRL-B
使窗口在缓冲中向后(上)移动[count]
行。参看 'startofline' 选项。 *z^* z^ 不指定[count]
: 刷新屏幕,在窗口中显示上一页的内容( 使当前窗口上面的一行显示在屏幕最下方)。光标停留在那 一行第一个非空白字符上。 指定[count]
: 先滚动文本,使得[count]
行显示在窗口底 部,然后刷新屏幕,使得当时处于窗口顶端的文本显示在屏 幕的底部。光标停留在那一行第一个非空白字符上。
3. 相对于光标滚屏 *scroll-cursor*
以下的命令重置编辑窗口(缓冲中您可以看到的那一部分),但是使得鼠标仍停留在当 前行。 *z<CR>* z<CR>
使第[count]
行显示在窗口顶端(默认为光标所在的行)。 光标停留在那一行第一个非空白字符上。 *zt* zt 类似 "z<CR>
",不过光标停留在相同的列上。{Vi 中无此功能}
*zN<CR>* z{height}
<CR>
刷新屏幕,使得窗口有{height}
行高。当屏幕刷新速度很 慢的时候,这个对于将屏幕上的行数减少是很有用的。不能 是窗口的高度超过屏幕的实际高度。 *z.* z. 刷新屏幕,使第[count]
行显示在窗口中部(默认为光标所 在的行)。光标停留在那一行第一个非空白字符上。 *zz* zz 类似 "z.",不过光标停留在相同的列上。注意
:如果 caps-lock 是打开的,这个命令就变成了 "ZZ":写缓冲并退 出!{Vi 中无此功能}
*z-* z- 刷新屏幕,使第[count]
行显示在窗口底部(默认为光标所 在的行)。光标停留在那一行第一个非空白字符上。 *zb* zb 类似 "z-",不过光标停留在相同的列上。{Vi 中无此功能}
4. 水平滚屏 *scroll-horizontal*
使用以下的4个命令时,鼠标会跟随屏幕而移动。如果光标移出了屏幕,它就会落在屏幕 中距它最近的那个字符上。'sidescroll' 选项的值会被忽略。 z<Right>
或 *zl* *z<Right>* zl 使屏幕向左滚动[count]
个字符。仅当 'wrap' 为关时有效{Vi 中无此功能}
z<Left>
或 *zh* *z<Left>* zh 使屏幕向右滚动[count]
个字符。仅当 'wrap' 为关时有效{Vi 中无此功能}
*zL* zL 使屏幕向左滚动半个屏幕宽度。仅当 'wrap' 为关时有效。{Vi 中无此功能}
*zH* zH 使屏幕向右滚动半个屏幕宽度。仅当 'wrap' 为关时有效。{Vi 中无此功能}
以下两个命令仅仅在屏幕上滚动文本,光标不会移动。 *zs* zs 水平滚屏,使光标置于屏幕的开始处(左侧)。仅当 'wrap' 为关时有效。{Vi 中无此功能}
*ze* ze 水平滚屏,使光标置于屏幕的结束处(右侧)。仅当 'wrap' 为关时有效。{Vi 中无此功能}
5. 同步滚屏 *scroll-binding*
有时候,将2个或多个窗口绑在一起是必要的,这样,在一个窗口滚屏时,其他的窗口都 会跟着一起滚屏。在 Vim 中,可以通过设置针对不同窗口的 'scrollbind' 选项来达到 这个目的。当一个设置了 'scrollbind' 选项的窗口滚屏时,其他的设置了 'scrollbind' 选项的窗口会同步滚屏(如果可能的话)。选项 'scrollbind' 的行为可 以通过 'scrollopt' 选项来修改。 如果一个窗口还设置了 'diff' 选项,则滚屏绑定利用2个缓冲中的差异来精确同步它们 的位置。否则,将会使用下面的方式: *scrollbind-relative* 每一个设置了 'scrollbind' 的窗口都会记录它的"相对偏移",这个可以被看作是当 前窗口和其他窗口垂直滚屏位置上的差异。当一个设置了 'scrollbind' 的窗口需要进 行超过其极限的滚屏时,这个窗口停止滚屏,但是它会记住超过极限的数量。这个窗口 记住了这些信息,一边可以保持同样的相对偏移,而不管它是否需要进行超过其极限的 滚屏。 但是,当一个设置了 'scrollbind' 且具有一个超过其缓冲极限的相对偏移的窗口获得 了焦点的时候,其他设置了 'scrollbind' 的窗口就必须跳转到使当前窗口的相对偏移 合法的位置上。这种行为可以通过清除 'scrollopt' 选项中的 'jump' 标志来改变。 *syncbind* *:syncbind* :syncbind 强制所有 'scrollbind' 窗口具有相同的相对偏移。即:当 一个窗口滚屏到了它缓冲的顶部时,所有的 'scrollbind' 窗口都会滚屏到它们缓冲的顶部。 *scrollbind-quickadj* 当使用键盘命令来垂直的滚动一个窗口,或用垂直滚动条来滚动一个具有焦点的窗口 时, 'scrollbind' 标志是起作用的。但是,当用垂直滚动条来滚动一个不具有焦点的窗 口时,'scrollbind' 标志会被忽略掉。这就使得 'scrollbind' 窗口的相对偏移可以得 到快速的调整。
6. 用鼠标滚轮滚屏 *scroll-mouse-wheel*
当您的鼠标有一个滚轮时,它在 GUI 方式下的 Vim 中应该可以正常工作。它怎么工作 取决于您的系统。它在 xterm 中也可以工作,参见:|xterm-mouse-wheel|。 针对 Win32 GUI ,滚屏功能被辛苦的开发出来了。它的效果就像在当前窗口中拖曳滚动 条。如果滚屏功能造成了输入焦点的问题,请看:|intellimouse-wheel-problems|。 针对 X11 GUI (Motif, Athena 和 GTK),滚动滚轮产生<MouseDown>
和<MouseUp>
的 按键动作。这些键的默认行为如下:<MouseDown>
向下滚动3行。 *<MouseDown>*<S-MouseDown>
向下滚动一整页。 *<S-MouseDown>*<C-MouseDown>
向下滚动一整页。 *<C-MouseDown>*<MouseUp>
向上滚动3行。 *<MouseUp>*<S-MouseUp>
向上滚动一整页。 *<S-MouseUp>*<C-MouseUp>
向上滚动一整页。 *<C-MouseUp>* 这些除了在编辑命令行时都应该起作用。注意
<MouseDown>
是用来是文本向下滚动的,但是这要求您向上滚动您的鼠标滚轮! 您可以通过键盘映射来改变这种行为。例如,要使得在一般模式下滚轮一次滚动一行或 一页::map
<MouseDown>
<C-Y>
:map
<S-MouseDown>
<C-U>
:map
<MouseUp>
<C-E>
:map
您也可以使用 Alt 和 Ctrl 这些键。 自然,这些功能仅在 Vim 可以获取滚动事件时才可以使用。您可以使用 "xev" 来确定 这些是否功能有效。 当您使用 Xfree86时,文件 /etc/XF86Config 中必须有正确的关于鼠标的条目。就 FreeBSD 来说,这个条目适用于一款罗技滚轮鼠标:<S-MouseUp>
<C-D>
Protocol "MouseMan"
Device "/dev/psm0"
ZAxisMapping 4 5
欲了解更多的信息,请看 Xfree86 的文档。 *xterm-mouse-wheel* 如前所述,您仅需要使滚轮鼠标在您的 Xserver 上工作正常,它就可以在一个新的 xterm 中工作。 为了在一个老的 xterm 中使用您的滚轮,您需要做以下工作: 1. 如前所述,使它在您的 Xserver 上工作正常。 2. 给 xterm 添加转换,使得 xterm 可以用换码序列(escape sequence)来传递一个 滚屏事件。 3. 给 Vim 添加 mapping,来解释<MouseUp>
、<MouseDown>
这些换码序列。 您可以把这些添加到您的 ~.Xdefaults 文件(或者其他保存您 X 资源的文件)中来添 加转换:
XTerm*VT100.Translations: #override \n\
s
<Btn4Down>
: string("0x9b") string("[64~") \n\s
<Btn5Down>
: string("0x9b") string("[65~") \n\
<Btn4Down>
: string("0x9b") string("[62~") \n\
<Btn5Down>
: string("0x9b") string("[63~") \n\
<Btn4Up>
: \n\
<Btn5Up>
:把这些 mapping 加到您的 vimrc 文件里:
:map
<M-Esc>
[62~<MouseDown>
:map!
<M-Esc>
[62~<MouseDown>
:map
<M-Esc>
[63~<MouseUp>
:map!
<M-Esc>
[63~<MouseUp>
:map
<M-Esc>
[64~<S-MouseDown>
:map!
<M-Esc>
[64~<S-MouseDown>
:map
<M-Esc>
[65~<S-MouseUp>
:map!
vim:tw=78:ts=8:ft=help:norl:<M-Esc>
[65~<S-MouseUp>
Generated by vim2html on 2006年 06月 24日 星期六 00:27:59 UTC