diff options
Diffstat (limited to 'runtime/doc/scroll.txt')
-rw-r--r-- | runtime/doc/scroll.txt | 303 |
1 files changed, 303 insertions, 0 deletions
diff --git a/runtime/doc/scroll.txt b/runtime/doc/scroll.txt new file mode 100644 index 000000000..288552d5c --- /dev/null +++ b/runtime/doc/scroll.txt @@ -0,0 +1,303 @@ +*scroll.txt* For Vim version 7.0aa. Last change: 2004 Jun 08 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Scrolling *scrolling* + +These commands move the contents of the window. If the cursor position is +moved off of the window, the cursor is moved onto the window (with +'scrolloff' screen lines around it). A page is the number of lines in the +window minus two. The mnemonics for these commands may be a bit confusing. +Remember that the commands refer to moving the window (the part of the buffer +that you see) upwards or downwards in the buffer. When the window moves +upwards in the buffer, the text in the window moves downwards on your screen. + +See section |03.7| of the user manual for an introduction. + +1. Scrolling downwards |scroll-down| +2. Scrolling upwards |scroll-up| +3. Scrolling relative to cursor |scroll-cursor| +4. Scrolling horizontally |scroll-horizontal| +5. Scrolling synchronously |scroll-binding| +6. Scrolling with a mouse wheel |scroll-mouse-wheel| + +============================================================================== +1. Scrolling downwards *scroll-down* + +The following commands move the edit window (the part of the buffer that you +see) downwards (this means that more lines downwards in the text buffer can be +seen): + + *CTRL-E* +CTRL-E Scroll window [count] lines downwards in the buffer. + Mnemonic: Extra lines. + + *CTRL-D* +CTRL-D Scroll window Downwards in the buffer. The number of + lines comes from the 'scroll' option (default: half a + screen). If [count] given, first set 'scroll' option + to [count]. The cursor is moved the same number of + lines down in the file (if possible; when lines wrap + and when hitting the end of the file there may be a + difference). When the cursor is on the last line of + the buffer nothing happens and a beep is produced. + See also 'startofline' option. + {difference from vi: Vim scrolls 'scroll' screen + lines, instead of file lines; makes a difference when + lines wrap} + +<S-Down> or *<S-Down>* *<kPageDown>* +<PageDown> or *<PageDown>* *CTRL-F* +CTRL-F Scroll window [count] pages Forwards (downwards) in + the buffer. See also 'startofline' option. + + *z+* +z+ Without [count]: Redraw with the line just below the + window at the top of the window. Put the cursor in + that line, at the first non-blank in the line. + With [count]: just like "z<CR>". + +============================================================================== +2. Scrolling upwards *scroll-up* + +The following commands move the edit window (the part of the buffer that you +see) upwards (this means that more lines upwards in the text buffer can be +seen): + + *CTRL-Y* +CTRL-Y Scroll window [count] lines upwards in the buffer. + Note: When using the MS-Windows key bindings CTRL-Y is + remapped to redo. + + *CTRL-U* +CTRL-U Scroll window Upwards in the buffer. The number of + lines comes from the 'scroll' option (default: half a + screen). If [count] given, first set the 'scroll' + option to [count]. The cursor is moved the same + number of lines up in the file (if possible; when + lines wrap and when hitting the end of the file there + may be a difference). When the cursor is on the first + line of the buffer nothing happens and a beep is + produced. See also 'startofline' option. + {difference from vi: Vim scrolls 'scroll' screen + lines, instead of file lines; makes a difference when + lines wrap} + +<S-Up> or *<S-Up>* *<kPageUp>* +<PageUp> or *<PageUp>* *CTRL-B* +CTRL-B Scroll window [count] pages Backwards (upwards) in the + buffer. See also 'startofline' option. + + *z^* +z^ Without [count]: Redraw with the line just above the + window at the bottom of the window. Put the cursor in + that line, at the first non-blank in the line. + With [count]: First scroll the text to put the [count] + line at the bottom of the window, then redraw with the + line which is now at the top of the window at the + bottom of the window. Put the cursor in that line, at + the first non-blank in the line. + +============================================================================== +3. Scrolling relative to cursor *scroll-cursor* + +The following commands reposition the edit window (the part of the buffer that +you see) while keeping the cursor on the same line: + + *z<CR>* +z<CR> Redraw, line [count] at top of window (default + cursor line). Put cursor at first non-blank in the + line. + + *zt* +zt Like "z<CR>", but leave the cursor in the same + column. {not in Vi} + + *zN<CR>* +z{height}<CR> Redraw, make window {height} lines tall. This is + useful to make the number of lines small when screen + updating is very slow. Cannot make the height more + than the physical screen height. + + *z.* +z. Redraw, line [count] at center of window (default + cursor line). Put cursor at first non-blank in the + line. + + *zz* +zz Like "z.", but leave the cursor in the same column. + Careful: If caps-lock is on, this commands becomes + "ZZ": write buffer and exit! {not in Vi} + + *z-* +z- Redraw, line [count] at bottom of window (default + cursor line). Put cursor at first non-blank in the + line. + + *zb* +zb Like "z-", but leave the cursor in the same column. + {not in Vi} + +============================================================================== +4. Scrolling horizontally *scroll-horizontal* + +For the following four commands the cursor follows the screen. If the +character that the cursor is on is moved off the screen, the cursor is moved +to the closest character that is on the screen. The value of 'sidescroll' is +not used. + +z<Right> or *zl* *z<Right>* +zl Scroll the screen [count] characters to the left. + This only works when 'wrap' is off. {not in Vi} + +z<Left> or *zh* *z<Left>* +zh Scroll the screen [count] characters to the right. + This only works when 'wrap' is off. {not in Vi} + + *zL* +zL Scroll the screen half a screenwidth to the left. + This only works when 'wrap' is off. {not in Vi} + + *zH* +zH Scroll the screen half a screenwidth to the right. + This only works when 'wrap' is off. {not in Vi} + +For the following two commands the cursor is not moved in the text, only the +text scrolls on the screen. + + *zs* +zs Scroll the screen horizontally to position the cursor + at the start (left side) of the screen. This only + works when 'wrap' is off. {not in Vi} + + *ze* +ze Scroll the screen horizontally to position the cursor + at the end (right side) of the screen. This only + works when 'wrap' is off. {not in Vi} + +============================================================================== +5. Scrolling synchronously *scroll-binding* + +Occasionally, it is desirable to bind two or more windows together such that +when one window is scrolled, the other windows are scrolled also. In Vim, +windows can be given this behavior by setting the (window-specific) +'scrollbind' option. When a window that has 'scrollbind' set is scrolled, all +other 'scrollbind' windows are scrolled the same amount, if possible. The +behavior of 'scrollbind' can be modified by the 'scrollopt' option. + +When using the scrollbars, the binding only happens when scrolling the window +with focus (where the cursor is). You can use this to avoid scroll-binding +for a moment without resetting options. + +When a window also has the 'diff' option set, the scroll-binding uses the +differences between the two buffers to synchronize the position precisely. +Otherwise the following method is used. + + *scrollbind-relative* +Each 'scrollbind' window keeps track of its "relative offset," which can be +thought of as the difference between the current window's vertical scroll +position and the other window's vertical scroll position. When one of the +'scrollbind' windows is asked to vertically scroll past the beginning or end +limit of its text, the window no longer scrolls, but remembers how far past +the limit it wishes to be. The window keeps this information so that it can +maintain the same relative offset, regardless of its being asked to scroll +past its buffer's limits. + +However, if a 'scrollbind' window that has a relative offset that is past its +buffer's limits is given the cursor focus, the other 'scrollbind' windows must +jump to a location where the current window's relative offset is valid. This +behavior can be changed by clearing the 'jump' flag from the 'scrollopt' +option. + + *syncbind* *:syncbind* +:syncbind Force all 'scrollbind' windows to have the same + relative offset. I.e., when any of the 'scrollbind' + windows is scrolled to the top of its buffer, all of + the 'scrollbind' windows will also be at the top of + their buffers. + + *scrollbind-quickadj* +The 'scrollbind' flag is meaningful when using keyboard commands to vertically +scroll a window, and also meaningful when using the vertical scrollbar of the +window which has the cursor focus. However, when using the vertical scrollbar +of a window which doesn't have the cursor focus, 'scrollbind' is ignored. +This allows quick adjustment of the relative offset of 'scrollbind' windows. + +============================================================================== +6. Scrolling with a mouse wheel *scroll-mouse-wheel* + +When your mouse has a scroll wheel, it should work with Vim in the GUI. How +it works depends on your system. It might also work in an xterm +|xterm-mouse-wheel|. + +For the Win32 GUI the scroll action is hard coded. It works just like +dragging the scrollbar of the current window. How many lines are scrolled +depends on your mouse driver. If the scroll action causes input focus +problems, see |intellimouse-wheel-problems|. + +For the X11 GUIs (Motif, Athena and GTK) scrolling the wheel generates key +presses <MouseDown> and <MouseUp>. The default action for these keys are: + <MouseDown> scroll three lines down. *<MouseDown>* + <S-MouseDown> scroll a full page down. *<S-MouseDown>* + <C-MouseDown> scroll a full page down. *<C-MouseDown>* + <MouseUp> scroll three lines up. *<MouseUp>* + <S-MouseUp> scroll a full page up. *<S-MouseUp>* + <C-MouseUp> scroll a full page up. *<C-MouseUp>* +This should work in all modes, except when editing the command line. + +Note that <MouseDown> is used for scrolling the text down, this happens when +you turn the mouse wheel up! + +You can modify this behavior by mapping the keys. For example, to make the +scroll wheel move one line or half a page in Normal mode: > + :map <MouseDown> <C-Y> + :map <S-MouseDown> <C-U> + :map <MouseUp> <C-E> + :map <S-MouseUp> <C-D> +You can also use Alt and Ctrl modifiers. + +This only works when Vim gets the scroll wheel events, of course. You can +check if this works with the "xev" program. + +When using Xfree86, the /etc/XF86Config file should have the correct entry for +your mouse. For FreeBSD, this entry works for a Logitech scrollmouse: > + Protocol "MouseMan" + Device "/dev/psm0" + ZAxisMapping 4 5 +See the Xfree86 documentation for information. + + *xterm-mouse-wheel* +To use the mouse wheel in a new xterm you only have to make the scroll wheel +work in your Xserver, as mentioned above. + +To use the mouse wheel in an older xterm you must do this: +1. Make it work in your Xserver, as mentioned above. +2. Add translations for the xterm, so that the xterm will pass a scroll event + to Vim as an escape sequence. +3. Add mappings in Vim, to interpret the escape sequences as <MouseUp> or + <MouseDown> keys. + +You can do the translations by adding this to your ~.Xdefaults file (or other +file where your X resources are kept): > + + 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>: + +Add these mappings to your vimrc file: > + :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! <M-Esc>[65~ <S-MouseUp> +< + vim:tw=78:ts=8:ft=help:norl: |