blob: f95b2da84c06bca10e893d49c491e4ae441b529b [file] [log] [blame]
Bram Moolenaar01685602007-05-12 14:42:48 +00001*windows.txt* For Vim version 7.1. Last change: 2007 Mar 17
Bram Moolenaar071d4272004-06-13 20:20:40 +00002
3
4 VIM REFERENCE MANUAL by Bram Moolenaar
5
6
7Editing with multiple windows and buffers. *windows* *buffers*
8
9The commands which have been added to use multiple windows and buffers are
10explained here. Additionally, there are explanations for commands that work
11differently when used in combination with more than one window.
12
13The basics are explained in chapter 7 and 8 of the user manual |usr_07.txt|
14|usr_08.txt|.
15
161. Introduction |windows-intro|
172. Starting Vim |windows-starting|
183. Opening and closing a window |opening-window|
194. Moving cursor to other windows |window-move-cursor|
205. Moving windows around |window-moving|
216. Window resizing |window-resize|
227. Argument and buffer list commands |buffer-list|
238. Do a command in all buffers or windows |list-repeat|
249. Tag or file name under the cursor |window-tag|
2510. The preview window |preview-window|
2611. Using hidden buffers |buffer-hidden|
2712. Special kinds of buffers |special-buffers|
28
29{Vi does not have any of these commands}
30{not able to use multiple windows when the |+windows| feature was disabled at
31compile time}
32{not able to use vertically split windows when the |+vertsplit| feature was
33disabled at compile time}
34
35==============================================================================
Bram Moolenaar910f66f2006-04-05 20:41:53 +0000361. Introduction *windows-intro* *window*
Bram Moolenaar071d4272004-06-13 20:20:40 +000037
38A window is a viewport onto a buffer. You can use multiple windows on one
39buffer, or several windows on different buffers.
40
41A buffer is a file loaded into memory for editing. The original file remains
42unchanged until you write the buffer to the file.
43
44A buffer can be in one of three states:
45
46 *active-buffer*
47active: The buffer is displayed in a window. If there is a file for this
48 buffer, it has been read into the buffer. The buffer may have been
49 modified since then and thus be different from the file.
50 *hidden-buffer*
51hidden: The buffer is not displayed. If there is a file for this buffer, it
52 has been read into the buffer. Otherwise it's the same as an active
53 buffer, you just can't see it.
54 *inactive-buffer*
55inactive: The buffer is not displayed and does not contain anything. Options
56 for the buffer are remembered if the file was once loaded. It can
57 contain marks from the |viminfo| file. But the buffer doesn't
58 contain text.
59
60In a table:
61
62state displayed loaded ":buffers" ~
63 in window shows ~
64active yes yes 'a'
65hidden no yes 'h'
66inactive no no ' '
67
68Note: All CTRL-W commands can also be executed with |:wincmd|, for those
69places where a Normal mode command can't be used or is inconvenient.
70
Bram Moolenaar7e8fd632006-02-18 22:14:51 +000071The main Vim window can hold several split windows. There are also tab pages
72|tab-page|, each of which can hold multiple windows.
73
Bram Moolenaar071d4272004-06-13 20:20:40 +000074==============================================================================
752. Starting Vim *windows-starting*
76
77By default, Vim starts with one window, just like Vi.
78
79The "-o" and "-O" arguments to Vim can be used to open a window for each file
80in the argument list. The "-o" argument will split the windows horizontally;
81the "-O" argument will split the windows vertically. If both "-o" and "-O"
82are given, the last one encountered will be used to determine the split
83orientation. For example, this will open three windows, split horizontally: >
84 vim -o file1 file2 file3
85
86"-oN", where N is a decimal number, opens N windows split horizontally. If
87there are more file names than windows, only N windows are opened and some
88files do not get a window. If there are more windows than file names, the
89last few windows will be editing empty buffers. Similarly, "-ON" opens N
90windows split vertically, with the same restrictions.
91
92If there are many file names, the windows will become very small. You might
93want to set the 'winheight' and/or 'winwidth' options to create a workable
94situation.
95
96Buf/Win Enter/Leave |autocommand|s are not executed when opening the new
97windows and reading the files, that's only done when they are really entered.
98
99 *status-line*
100A status line will be used to separate windows. The 'laststatus' option tells
101when the last window also has a status line:
102 'laststatus' = 0 never a status line
103 'laststatus' = 1 status line if there is more than one window
104 'laststatus' = 2 always a status line
105
106You can change the contents of the status line with the 'statusline' option.
Bram Moolenaarb5bf5b82004-12-24 14:35:23 +0000107This option can be local to the window, so that you can have a different
108status line in each window.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000109
110Normally, inversion is used to display the status line. This can be changed
111with the 's' character in the 'highlight' option. For example, "sb" sets it to
112bold characters. If no highlighting is used for the status line ("sn"), the
113'^' character is used for the current window, and '=' for other windows. If
114the mouse is supported and enabled with the 'mouse' option, a status line can
115be dragged to resize windows.
116
117Note: If you expect your status line to be in reverse video and it isn't,
118check if the 'highlight' option contains "si". In version 3.0, this meant to
119invert the status line. Now it should be "sr", reverse the status line, as
120"si" now stands for italic! If italic is not available on your terminal, the
121status line is inverted anyway; you will only see this problem on terminals
122that have termcap codes for italics.
123
124==============================================================================
1253. Opening and closing a window *opening-window* *E36*
126
127CTRL-W s *CTRL-W_s*
128CTRL-W S *CTRL-W_S*
129CTRL-W CTRL-S *CTRL-W_CTRL-S*
130:[N]sp[lit] [++opt] [+cmd] *:sp* *:split*
131 Split current window in two. The result is two viewports on
132 the same file. Make new window N high (default is to use half
133 the height of the current window). Reduces the current window
134 height to create room (and others, if the 'equalalways' option
Bram Moolenaar67f71312007-08-12 14:55:56 +0000135 is set, 'eadirection' isn't "hor", and one of them is higher
136 than the current or the new window).
Bram Moolenaar071d4272004-06-13 20:20:40 +0000137 Note: CTRL-S does not work on all terminals and might block
138 further input, use CTRL-Q to get going again.
139 Also see |++opt| and |+cmd|.
140
141CTRL-W CTRL-V *CTRL-W_CTRL-V*
142CTRL-W v *CTRL-W_v*
143:[N]vs[plit] [++opt] [+cmd] [file] *:vs* *:vsplit*
Bram Moolenaar67f71312007-08-12 14:55:56 +0000144 Like |:split|, but split vertically. The windows will be
145 spread out horizontally if
146 1. a width was not specified,
147 2. 'equalalways' is set,
148 3. 'eadirection' isn't "ver", and
149 4. one of the other windows are wider than the current or new
150 window.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000151 Note: In other places CTRL-Q does the same as CTRL-V, but here
152 it doesn't!
153
154CTRL-W n *CTRL-W_n*
155CTRL-W CTRL_N *CTRL-W_CTRL-N*
156:[N]new [++opt] [+cmd] *:new*
157 Create a new window and start editing an empty file in it.
158 Make new window N high (default is to use half the existing
159 height). Reduces the current window height to create room (and
160 others, if the 'equalalways' option is set and 'eadirection'
161 isn't "hor").
162 Also see |++opt| and |+cmd|.
163 If 'fileformats' is not empty, the first format given will be
164 used for the new buffer. If 'fileformats' is empty, the
165 'fileformat' of the current buffer is used. This can be
166 overridden with the |++opt| argument.
167 Autocommands are executed in this order:
168 1. WinLeave for the current window
169 2. WinEnter for the new window
170 3. BufLeave for the current buffer
171 4. BufEnter for the new buffer
172 This behaves like a ":split" first, and then a ":e" command.
173
174:[N]vne[w] [++opt] [+cmd] [file] *:vne* *:vnew*
175 Like |:new|, but split vertically. If 'equalalways' is set
176 and 'eadirection' isn't "ver" the windows will be spread out
177 horizontally, unless a width was specified.
178
179:[N]new [++opt] [+cmd] {file}
180:[N]sp[lit] [++opt] [+cmd] {file} *:split_f*
181 Create a new window and start editing file {file} in it.
182 If [+cmd] is given, execute the command when the file has been
183 loaded |+cmd|.
184 Also see |++opt|.
185 Make new window N high (default is to use half the existing
186 height). Reduces the current window height to create room
187 (and others, if the 'equalalways' option is set).
188
189:[N]sv[iew] [++opt] [+cmd] {file} *:sv* *:sview* *splitview*
190 Same as ":split", but set 'readonly' option for this buffer.
191
192:[N]sf[ind] [++opt] [+cmd] {file} *:sf* *:sfind* *splitfind*
193 Same as ":split", but search for {file} in 'path'. Doesn't
194 split if {file} is not found.
195
196CTRL-W CTRL-^ *CTRL-W_CTRL-^* *CTRL-W_^*
197CTRL-W ^ Does ":split #", split window in two and edit alternate file.
198 When a count is given, it becomes ":split #N", split window
199 and edit buffer N.
200
201Note that the 'splitbelow' and 'splitright' options influence where a new
202window will appear.
203
204 *:vert* *:vertical*
205:vert[ical] {cmd}
206 Execute {cmd}. If it contains a command that splits a window,
207 it will be split vertically.
Bram Moolenaar756ec0f2007-05-05 17:59:48 +0000208 Doesn't work for |:execute| and |:normal|.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000209
210:lefta[bove] {cmd} *:lefta* *:leftabove*
211:abo[veleft] {cmd} *:abo* *:aboveleft*
212 Execute {cmd}. If it contains a command that splits a window,
213 it will be opened left (vertical split) or above (horizontal
214 split) the current window. Overrules 'splitbelow' and
215 'splitright'.
Bram Moolenaar756ec0f2007-05-05 17:59:48 +0000216 Doesn't work for |:execute| and |:normal|.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000217
218:rightb[elow] {cmd} *:rightb* *:rightbelow*
219:bel[owright] {cmd} *:bel* *:belowright*
220 Execute {cmd}. If it contains a command that splits a window,
221 it will be opened right (vertical split) or below (horizontal
222 split) the current window. Overrules 'splitbelow' and
223 'splitright'.
Bram Moolenaar756ec0f2007-05-05 17:59:48 +0000224 Doesn't work for |:execute| and |:normal|.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000225
226 *:topleft* *E442*
227:to[pleft] {cmd}
228 Execute {cmd}. If it contains a command that splits a window,
229 it will appear at the top and occupy the full width of the Vim
230 window. When the split is vertical the window appears at the
231 far left and occupies the full height of the Vim window.
Bram Moolenaar756ec0f2007-05-05 17:59:48 +0000232 Doesn't work for |:execute| and |:normal|.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000233
234 *:botright*
235:bo[tright] {cmd}
236 Execute {cmd}. If it contains a command that splits a window,
237 it will appear at the bottom and occupy the full width of the
238 Vim window. When the split is vertical the window appears at
239 the far right and occupies the full height of the Vim window.
Bram Moolenaar756ec0f2007-05-05 17:59:48 +0000240 Doesn't work for |:execute| and |:normal|.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000241
242These command modifiers can be combined to make a vertically split window
243occupy the full height. Example: >
244 :vertical topleft edit tags
245Opens a vertically split, full-height window on the "tags" file at the far
246left of the Vim window.
247
248
249Closing a window
250----------------
251
252CTRL-W q *CTRL-W_q*
253CTRL-W CTRL-Q *CTRL-W_CTRL-Q*
254:q[uit] Quit current window. When quitting the last window (not
255 counting a help window), exit Vim.
256 When 'hidden' is set, and there is only one window for the
257 current buffer, it becomes hidden.
258 When 'hidden' is not set, and there is only one window for the
259 current buffer, and the buffer was changed, the command fails.
260 (Note: CTRL-Q does not work on all terminals)
261
262:q[uit]! Quit current window. If this was the last window for a buffer,
263 any changes to that buffer are lost. When quitting the last
264 window (not counting help windows), exit Vim. The contents of
265 the buffer are lost, even when 'hidden' is set.
266
267CTRL-W c *CTRL-W_c* *:clo* *:close*
268:clo[se][!] Close current window. When the 'hidden' option is set, or
269 when the buffer was changed and the [!] is used, the buffer
270 becomes hidden (unless there is another window editing it).
Bram Moolenaar7e8fd632006-02-18 22:14:51 +0000271 When there is only one window in the current tab page and
272 there is another tab page, this closes the current tab page.
273 |tab-page|.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000274 This command fails when: *E444*
275 - There is only one window on the screen.
276 - When 'hidden' is not set, [!] is not used, the buffer has
277 changes, and there is no other window on this buffer.
278 Changes to the buffer are not written and won't get lost, so
279 this is a "safe" command.
280
281CTRL-W CTRL-C *CTRL-W_CTRL-C*
282 You might have expected that CTRL-W CTRL-C closes the current
283 window, but that does not work, because the CTRL-C cancels the
284 command.
285
286 *:hide*
287:hid[e] Quit current window, unless it is the last window on the
288 screen. The buffer becomes hidden (unless there is another
289 window editing it or 'bufhidden' is "unload" or "delete").
Bram Moolenaar7e8fd632006-02-18 22:14:51 +0000290 If the window is the last one in the current tab page the tab
291 page is closed. |tab-page|
Bram Moolenaar071d4272004-06-13 20:20:40 +0000292 The value of 'hidden' is irrelevant for this command.
293 Changes to the buffer are not written and won't get lost, so
294 this is a "safe" command.
295
296:hid[e] {cmd} Execute {cmd} with 'hidden' is set. The previous value of
297 'hidden' is restored after {cmd} has been executed.
298 Example: >
299 :hide edit Makefile
300< This will edit "Makefile", and hide the current buffer if it
301 has any changes.
302
303CTRL-W o *CTRL-W_o* *E445*
304CTRL-W CTRL-O *CTRL-W_CTRL-O* *:on* *:only*
305:on[ly][!] Make the current window the only one on the screen. All other
306 windows are closed.
307 When the 'hidden' option is set, all buffers in closed windows
308 become hidden.
309 When 'hidden' is not set, and the 'autowrite' option is set,
310 modified buffers are written. Otherwise, windows that have
311 buffers that are modified are not removed, unless the [!] is
312 given, then they become hidden. But modified buffers are
313 never abandoned, so changes cannot get lost.
314
315==============================================================================
3164. Moving cursor to other windows *window-move-cursor*
317
318CTRL-W <Down> *CTRL-W_<Down>*
319CTRL-W CTRL-J *CTRL-W_CTRL-J* *CTRL-W_j*
320CTRL-W j Move cursor to Nth window below current one. Uses the cursor
321 position to select between alternatives.
322
323CTRL-W <Up> *CTRL-W_<Up>*
324CTRL-W CTRL-K *CTRL-W_CTRL-K* *CTRL-W_k*
325CTRL-W k Move cursor to Nth window above current one. Uses the cursor
326 position to select between alternatives.
327
328CTRL-W <Left> *CTRL-W_<Left>*
329CTRL-W CTRL-H *CTRL-W_CTRL-H*
330CTRL-W <BS> *CTRL-W_<BS>* *CTRL-W_h*
331CTRL-W h Move cursor to Nth window left of current one. Uses the
332 cursor position to select between alternatives.
333
334CTRL-W <Right> *CTRL-W_<Right>*
335CTRL-W CTRL-L *CTRL-W_CTRL-L* *CTRL-W_l*
336CTRL-W l Move cursor to Nth window right of current one. Uses the
337 cursor position to select between alternatives.
338
339CTRL-W w *CTRL-W_w* *CTRL-W_CTRL-W*
340CTRL-W CTRL-W Without count: move cursor to window below/right of the
341 current one. If there is no window below or right, go to
342 top-left window.
343 With count: go to Nth window (windows are numbered from
344 top-left to bottom-right). To obtain the window number see
345 |bufwinnr()| and |winnr()|.
346
347 *CTRL-W_W*
348CTRL-W W Without count: move cursor to window above/left of current
349 one. If there is no window above or left, go to bottom-right
350 window. With count: go to Nth window (windows are numbered
351 from top-left to bottom-right).
352
353CTRL-W t *CTRL-W_t* *CTRL-W_CTRL-T*
354CTRL-W CTRL-T Move cursor to top-left window.
355
356CTRL-W b *CTRL-W_b* *CTRL-W_CTRL-B*
357CTRL-W CTRL-B Move cursor to bottom-right window.
358
359CTRL-W p *CTRL-W_p* *CTRL-W_CTRL-P*
360CTRL-W CTRL-P Go to previous (last accessed) window.
361
362 *CTRL-W_P* *E441*
363CTRL-W P Go to preview window. When there is no preview window this is
364 an error.
365 {not available when compiled without the |+quickfix| feature}
366
367If Visual mode is active and the new window is not for the same buffer, the
368Visual mode is ended. If the window is on the same buffer, the cursor
369position is set to keep the same Visual area selected.
370
371 *:winc* *:wincmd*
372These commands can also be executed with ":wincmd":
373
374:[count]winc[md] {arg}
375 Like executing CTRL-W [count] {arg}. Example: >
376 :wincmd j
377< Moves to the window below the current one.
378 This command is useful when a Normal mode cannot be used (for
379 the |CursorHold| autocommand event). Or when a Normal mode
380 command is inconvenient.
381 The count can also be a window number. Example: >
382 :exe nr . "wincmd w"
383< This goes to window "nr".
384
385==============================================================================
3865. Moving windows around *window-moving*
387
388CTRL-W r *CTRL-W_r* *CTRL-W_CTRL-R* *E443*
389CTRL-W CTRL-R Rotate windows downwards/rightwards. The first window becomes
390 the second one, the second one becomes the third one, etc.
391 The last window becomes the first window. The cursor remains
392 in the same window.
393 This only works within the row or column of windows that the
394 current window is in.
395
396 *CTRL-W_R*
397CTRL-W R Rotate windows upwards/leftwards. The second window becomes
398 the first one, the third one becomes the second one, etc. The
399 first window becomes the last window. The cursor remains in
400 the same window.
401 This only works within the row or column of windows that the
402 current window is in.
403
404CTRL-W x *CTRL-W_x* *CTRL-W_CTRL-X*
405CTRL-W CTRL-X Without count: Exchange current window with next one. If there
406 is no next window, exchange with previous window.
407 With count: Exchange current window with Nth window (first
408 window is 1). The cursor is put in the other window.
409 When vertical and horizontal window splits are mixed, the
410 exchange is only done in the row or column of windows that the
411 current window is in.
412
413The following commands can be used to change the window layout. For example,
414when there are two vertically split windows, CTRL-W K will change that in
415horizontally split windows. CTRL-W H does it the other way around.
416
417 *CTRL-W_K*
418CTRL-W K Move the current window to be at the very top, using the full
419 width of the screen. This works like closing the current
420 window and then creating another one with ":topleft split",
421 except that the current window contents is used for the new
422 window.
423
424 *CTRL-W_J*
425CTRL-W J Move the current window to be at the very bottom, using the
426 full width of the screen. This works like closing the current
427 window and then creating another one with ":botright split",
428 except that the current window contents is used for the new
429 window.
430
431 *CTRL-W_H*
432CTRL-W H Move the current window to be at the far left, using the
433 full height of the screen. This works like closing the
434 current window and then creating another one with
435 ":vert topleft split", except that the current window contents
436 is used for the new window.
437 {not available when compiled without the +vertsplit feature}
438
439 *CTRL-W_L*
440CTRL-W L Move the current window to be at the far right, using the full
441 height of the screen. This works like closing the
442 current window and then creating another one with
443 ":vert botright split", except that the current window
444 contents is used for the new window.
445 {not available when compiled without the +vertsplit feature}
446
Bram Moolenaar4c3f5362006-04-11 21:38:50 +0000447 *CTRL-W_T*
448CTRL-W T Move the current window to a new tab page. This fails if
449 there is only one window in the current tab page.
450 When a count is specified the new tab page will be opened
451 before the tab page with this index. Otherwise it comes after
452 the current tab page.
453
Bram Moolenaar071d4272004-06-13 20:20:40 +0000454==============================================================================
4556. Window resizing *window-resize*
456
457 *CTRL-W_=*
458CTRL-W = Make all windows (almost) equally high and wide, but use
459 'winheight' and 'winwidth' for the current window.
Bram Moolenaar756ec0f2007-05-05 17:59:48 +0000460 Windows with 'winfixheight' set keep their height and windows
461 with 'winfixwidth' set keep their width.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000462
463:res[ize] -N *:res* *:resize* *CTRL-W_-*
464CTRL-W - Decrease current window height by N (default 1).
465 If used after 'vertical': decrease width by N.
466
467:res[ize] +N *CTRL-W_+*
468CTRL-W + Increase current window height by N (default 1).
469 If used after 'vertical': increase width by N.
470
471:res[ize] [N]
472CTRL-W CTRL-_ *CTRL-W_CTRL-_* *CTRL-W__*
473CTRL-W _ Set current window height to N (default: highest possible).
474
475z{nr}<CR> Set current window height to {nr}.
476
477 *CTRL-W_<*
478CTRL-W < Decrease current window width by N (default 1).
479
480 *CTRL-W_>*
481CTRL-W > Increase current window width by N (default 1).
482
483:vertical res[ize] [N] *:vertical-resize* *CTRL-W_bar*
484CTRL-W | Set current window width to N (default: widest possible).
485
486You can also resize a window by dragging a status line up or down with the
487mouse. Or by dragging a vertical separator line left or right. This only
488works if the version of Vim that is being used supports the mouse and the
489'mouse' option has been set to enable it.
490
491The option 'winheight' ('wh') is used to set the minimal window height of the
492current window. This option is used each time another window becomes the
493current window. If the option is '0', it is disabled. Set 'winheight' to a
494very large value, e.g., '9999', to make the current window always fill all
495available space. Set it to a reasonable value, e.g., '10', to make editing in
496the current window comfortable.
497
498The equivalent 'winwidth' ('wiw') option is used to set the minimal width of
499the current window.
500
501When the option 'equalalways' ('ea') is set, all the windows are automatically
502made the same size after splitting or closing a window. If you don't set this
503option, splitting a window will reduce the size of the current window and
504leave the other windows the same. When closing a window, the extra lines are
505given to the window above it.
506
507The 'eadirection' option limits the direction in which the 'equalalways'
508option is applied. The default "both" resizes in both directions. When the
509value is "ver" only the heights of windows are equalized. Use this when you
510have manually resized a vertically split window and want to keep this width.
511Likewise, "hor" causes only the widths of windows to be equalized.
512
513The option 'cmdheight' ('ch') is used to set the height of the command-line.
514If you are annoyed by the |hit-enter| prompt for long messages, set this
515option to 2 or 3.
516
517If there is only one window, resizing that window will also change the command
518line height. If there are several windows, resizing the current window will
519also change the height of the window below it (and sometimes the window above
520it).
521
522The minimal height and width of a window is set with 'winminheight' and
523'winminwidth'. These are hard values, a window will never become smaller.
524
525==============================================================================
5267. Argument and buffer list commands *buffer-list*
527
528 args list buffer list meaning ~
5291. :[N]argument [N] 11. :[N]buffer [N] to arg/buf N
5302. :[N]next [file ..] 12. :[N]bnext [N] to Nth next arg/buf
5313. :[N]Next [N] 13. :[N]bNext [N] to Nth previous arg/buf
5324. :[N]previous [N] 14. :[N]bprevious [N] to Nth previous arg/buf
5335. :rewind / :first 15. :brewind / :bfirst to first arg/buf
5346. :last 16. :blast to last arg/buf
5357. :all 17. :ball edit all args/buffers
536 18. :unhide edit all loaded buffers
537 19. :[N]bmod [N] to Nth modified buf
538
539 split & args list split & buffer list meaning ~
54021. :[N]sargument [N] 31. :[N]sbuffer [N] split + to arg/buf N
54122. :[N]snext [file ..] 32. :[N]sbnext [N] split + to Nth next arg/buf
54223. :[N]sNext [N] 33. :[N]sbNext [N] split + to Nth previous arg/buf
54324. :[N]sprevious [N] 34. :[N]sbprevious [N] split + to Nth previous arg/buf
54425. :srewind / :sfirst 35. :sbrewind / :sbfirst split + to first arg/buf
54526. :slast 36. :sblast split + to last arg/buf
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +000054627. :sall 37. :sball edit all args/buffers
Bram Moolenaar071d4272004-06-13 20:20:40 +0000547 38. :sunhide edit all loaded buffers
548 39. :[N]sbmod [N] split + to Nth modified buf
549
55040. :args list of arguments
55141. :buffers list of buffers
552
553The meaning of [N] depends on the command:
554 [N] is number of buffers to go forward/backward on ?2, ?3, and ?4
555 [N] is an argument number, defaulting to current argument, for 1 and 21
556 [N] is a buffer number, defaulting to current buffer, for 11 and 31
557 [N] is a count for 19 and 39
558
559Note: ":next" is an exception, because it must accept a list of file names
560for compatibility with Vi.
561
562
563The argument list and multiple windows
564--------------------------------------
565
566The current position in the argument list can be different for each window.
567Remember that when doing ":e file", the position in the argument list stays
568the same, but you are not editing the file at that position. To indicate
569this, the file message (and the title, if you have one) shows
570"(file (N) of M)", where "(N)" is the current position in the file list, and
571"M" the number of files in the file list.
572
573All the entries in the argument list are added to the buffer list. Thus, you
574can also get to them with the buffer list commands, like ":bnext".
575
576:[N]al[l][!] [N] *:al* *:all* *:sal* *:sall*
577:[N]sal[l][!] [N]
578 Rearrange the screen to open one window for each argument.
579 All other windows are closed. When a count is given, this is
580 the maximum number of windows to open.
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000581 With the |:tab| modifier open a tab page for each argument.
582 When there are more arguments than 'tabpagemax' further ones
583 become split windows in the last tab page.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000584 When the 'hidden' option is set, all buffers in closed windows
585 become hidden.
586 When 'hidden' is not set, and the 'autowrite' option is set,
587 modified buffers are written. Otherwise, windows that have
588 buffers that are modified are not removed, unless the [!] is
589 given, then they become hidden. But modified buffers are
590 never abandoned, so changes cannot get lost.
591 [N] is the maximum number of windows to open. 'winheight'
592 also limits the number of windows opened ('winwidth' if
593 |:vertical| was prepended).
594 Buf/Win Enter/Leave autocommands are not executed for the new
595 windows here, that's only done when they are really entered.
596
597:[N]sa[rgument][!] [++opt] [+cmd] [N] *:sa* *:sargument*
598 Short for ":split | argument [N]": split window and go to Nth
599 argument. But when there is no such argument, the window is
600 not split. Also see |++opt| and |+cmd|.
601
602:[N]sn[ext][!] [++opt] [+cmd] [file ..] *:sn* *:snext*
603 Short for ":split | [N]next": split window and go to Nth next
604 argument. But when there is no next file, the window is not
605 split. Also see |++opt| and |+cmd|.
606
607:[N]spr[evious][!] [++opt] [+cmd] [N] *:spr* *:sprevious*
608:[N]sN[ext][!] [++opt] [+cmd] [N] *:sN* *:sNext*
609 Short for ":split | [N]Next": split window and go to Nth
610 previous argument. But when there is no previous file, the
611 window is not split. Also see |++opt| and |+cmd|.
612
613 *:sre* *:srewind*
614:sre[wind][!] [++opt] [+cmd]
615 Short for ":split | rewind": split window and go to first
616 argument. But when there is no argument list, the window is
617 not split. Also see |++opt| and |+cmd|.
618
619 *:sfir* *:sfirst*
Bram Moolenaar26a60b42005-02-22 08:49:11 +0000620:sfir[st] [++opt] [+cmd]
Bram Moolenaar071d4272004-06-13 20:20:40 +0000621 Same as ":srewind".
622
623 *:sla* *:slast*
624:sla[st][!] [++opt] [+cmd]
625 Short for ":split | last": split window and go to last
626 argument. But when there is no argument list, the window is
627 not split. Also see |++opt| and |+cmd|.
628
629 *:dr* *:drop*
630:dr[op] {file} ..
631 Edit the first {file} in a window.
632 - If the file is already open in a window change to that
633 window.
634 - If the file is not open in a window edit the file in the
635 current window. If the current buffer can't be |abandon|ed,
636 the window is split first.
637 The |argument-list| is set, like with the |:next| command.
638 The purpose of this command is that it can be used from a
639 program that wants Vim to edit another file, e.g., a debugger.
Bram Moolenaar910f66f2006-04-05 20:41:53 +0000640 When using the |:tab| modifier each argument is opened in a
641 tab page. The last window is used if it's empty.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000642 {only available when compiled with the +gui feature}
643
644==============================================================================
6458. Do a command in all buffers or windows *list-repeat*
646
647 *:windo*
Bram Moolenaar910f66f2006-04-05 20:41:53 +0000648:windo {cmd} Execute {cmd} in each window.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000649 It works like doing this: >
650 CTRL-W t
651 :{cmd}
652 CTRL-W w
653 :{cmd}
654 etc.
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000655< This only operates in the current tab page.
Bram Moolenaar7e8fd632006-02-18 22:14:51 +0000656 When an error is detected on one window, further
Bram Moolenaar071d4272004-06-13 20:20:40 +0000657 windows will not be visited.
658 The last window (or where an error occurred) becomes
659 the current window.
660 {cmd} can contain '|' to concatenate several commands.
661 {cmd} must not open or close windows or reorder them.
662 {not in Vi} {not available when compiled without the
663 |+listcmds| feature}
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000664 Also see |:tabdo|, |:argdo| and |:bufdo|.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000665
666 *:bufdo*
667:bufdo[!] {cmd} Execute {cmd} in each buffer in the buffer list.
668 It works like doing this: >
669 :bfirst
670 :{cmd}
671 :bnext
672 :{cmd}
673 etc.
674< When the current file can't be |abandon|ed and the [!]
675 is not present, the command fails.
676 When an error is detected on one buffer, further
677 buffers will not be visited.
678 Unlisted buffers are skipped.
679 The last buffer (or where an error occurred) becomes
680 the current buffer.
681 {cmd} can contain '|' to concatenate several commands.
682 {cmd} must not delete buffers or add buffers to the
683 buffer list.
684 Note: While this command is executing, the Syntax
685 autocommand event is disabled by adding it to
686 'eventignore'. This considerably speeds up editing
687 each buffer.
688 {not in Vi} {not available when compiled without the
689 |+listcmds| feature}
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000690 Also see |:tabdo|, |:argdo| and |:windo|.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000691
692Examples: >
693
694 :windo set nolist nofoldcolumn | normal zn
695
696This resets the 'list' option and disables folding in all windows. >
697
698 :bufdo set fileencoding= | update
699
700This resets the 'fileencoding' in each buffer and writes it if this changed
701the buffer. The result is that all buffers will use the 'encoding' encoding
702(if conversion works properly).
703
704==============================================================================
7059. Tag or file name under the cursor *window-tag*
706
707 *:sta* *:stag*
708:sta[g][!] [tagname]
709 Does ":tag[!] [tagname]" and splits the window for the found
710 tag. See also |:tag|.
711
712CTRL-W ] *CTRL-W_]* *CTRL-W_CTRL-]*
713CTRL-W CTRL-] Split current window in two. Use identifier under cursor as a
714 tag and jump to it in the new upper window. Make new window N
715 high.
716
717 *CTRL-W_g]*
718CTRL-W g ] Split current window in two. Use identifier under cursor as a
719 tag and perform ":tselect" on it in the new upper window.
720 Make new window N high.
721
722 *CTRL-W_g_CTRL-]*
723CTRL-W g CTRL-] Split current window in two. Use identifier under cursor as a
724 tag and perform ":tjump" on it in the new upper window. Make
725 new window N high.
726
727CTRL-W f *CTRL-W_f* *CTRL-W_CTRL-F*
728CTRL-W CTRL-F Split current window in two. Edit file name under cursor.
Bram Moolenaar8dff8182006-04-06 20:18:50 +0000729 Like ":split gf", but window isn't split if the file does not
Bram Moolenaar071d4272004-06-13 20:20:40 +0000730 exist.
731 Uses the 'path' variable as a list of directory names where to
732 look for the file. Also the path for current file is
733 used to search for the file name.
734 If the name is a hypertext link that looks like
735 "type://machine/path", only "/path" is used.
736 If a count is given, the count'th matching file is edited.
737 {not available when the |+file_in_path| feature was disabled
738 at compile time}
739
Bram Moolenaard1f56e62006-02-22 21:25:37 +0000740CTRL-W F *CTRL-W_F*
741 Split current window in two. Edit file name under cursor and
742 jump to the line number following the file name. See |gF| for
743 details on how the line number is obtained.
Bram Moolenaar57657d82006-04-21 22:12:41 +0000744 {not available when the |+file_in_path| feature was disabled
745 at compile time}
Bram Moolenaard1f56e62006-02-22 21:25:37 +0000746
Bram Moolenaar8dff8182006-04-06 20:18:50 +0000747CTRL-W gf *CTRL-W_gf*
748 Open a new tab page and edit the file name under the cursor.
749 Like "tab split" and "gf", but the new tab page isn't created
750 if the file does not exist.
751 {not available when the |+file_in_path| feature was disabled
752 at compile time}
753
Bram Moolenaar57657d82006-04-21 22:12:41 +0000754CTRL-W gF *CTRL-W_gF*
755 Open a new tab page and edit the file name under the cursor
756 and jump to the line number following the file name. Like
757 "tab split" and "gF", but the new tab page isn't created if
758 the file does not exist.
759 {not available when the |+file_in_path| feature was disabled
760 at compile time}
761
Bram Moolenaar071d4272004-06-13 20:20:40 +0000762Also see |CTRL-W_CTRL-I|: open window for an included file that includes
763the keyword under the cursor.
764
765==============================================================================
76610. The preview window *preview-window*
767
768The preview window is a special window to show (preview) another file. It is
769normally a small window used to show an include file or definition of a
770function.
771{not available when compiled without the |+quickfix| feature}
772
Bram Moolenaarc270d802006-03-11 21:29:41 +0000773There can be only one preview window (per tab page). It is created with one
774of the commands below. The 'previewheight' option can be set to specify the
775height of the preview window when it's opened. The 'previewwindow' option is
776set in the preview window to be able to recognize it. The 'winfixheight'
777option is set to have it keep the same height when opening/closing other
778windows.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000779
780 *:pta* *:ptag*
781:pta[g][!] [tagname]
782 Does ":tag[!] [tagname]" and shows the found tag in a
783 "Preview" window without changing the current buffer or cursor
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000784 position. If a "Preview" window already exists, it is re-used
Bram Moolenaar071d4272004-06-13 20:20:40 +0000785 (like a help window is). If a new one is opened,
786 'previewheight' is used for the height of the window. See
787 also |:tag|.
788 See below for an example. |CursorHold-example|
789 Small difference from |:tag|: When [tagname] is equal to the
790 already displayed tag, the position in the matching tag list
791 is not reset. This makes the CursorHold example work after a
792 |:ptnext|.
793
794CTRL-W z *CTRL-W_z*
795CTRL-W CTRL-Z *CTRL-W_CTRL-Z* *:pc* *:pclose*
796:pc[lose][!] Close any "Preview" window currently open. When the 'hidden'
797 option is set, or when the buffer was changed and the [!] is
798 used, the buffer becomes hidden (unless there is another
799 window editing it). The command fails if any "Preview" buffer
800 cannot be closed. See also |:close|.
801
802 *:pp* *:ppop*
803:[count]pp[op][!]
804 Does ":[count]pop[!]" in the preview window. See |:pop| and
805 |:ptag|. {not in Vi}
806
807CTRL-W } *CTRL-W_}*
808 Use identifier under cursor as a tag and perform a :ptag on
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000809 it. Make the new Preview window (if required) N high. If N is
Bram Moolenaar071d4272004-06-13 20:20:40 +0000810 not given, 'previewheight' is used.
811
812CTRL-W g } *CTRL-W_g}*
813 Use identifier under cursor as a tag and perform a :ptjump on
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000814 it. Make the new Preview window (if required) N high. If N is
Bram Moolenaar071d4272004-06-13 20:20:40 +0000815 not given, 'previewheight' is used.
816
817 *:ped* *:pedit*
818:ped[it][!] [++opt] [+cmd] {file}
819 Edit {file} in the preview window. The preview window is
820 opened like with |:ptag|. The current window and cursor
821 position isn't changed. Useful example: >
822 :pedit +/fputc /usr/include/stdio.h
823<
824 *:ps* *:psearch*
825:[range]ps[earch][!] [count] [/]pattern[/]
826 Works like |:ijump| but shows the found match in the preview
827 window. The preview window is opened like with |:ptag|. The
828 current window and cursor position isn't changed. Useful
829 example: >
830 :psearch popen
831< Like with the |:ptag| command, you can use this to
832 automatically show information about the word under the
833 cursor. This is less clever than using |:ptag|, but you don't
834 need a tags file and it will also find matches in system
835 include files. Example: >
836 :au! CursorHold *.[ch] nested exe "silent! psearch " . expand("<cword>")
837< Warning: This can be slow.
838
839Example *CursorHold-example* >
840
841 :au! CursorHold *.[ch] nested exe "silent! ptag " . expand("<cword>")
842
843This will cause a ":ptag" to be executed for the keyword under the cursor,
844when the cursor hasn't moved for the time set with 'updatetime'. The "nested"
845makes other autocommands be executed, so that syntax highlighting works in the
846preview window. The "silent!" avoids an error message when the tag could not
847be found. Also see |CursorHold|. To disable this again: >
848
849 :au! CursorHold
850
851A nice addition is to highlight the found tag, avoid the ":ptag" when there
852is no word under the cursor, and a few other things: >
853
854 :au! CursorHold *.[ch] nested call PreviewWord()
855 :func PreviewWord()
856 : if &previewwindow " don't do this in the preview window
857 : return
858 : endif
859 : let w = expand("<cword>") " get the word under cursor
860 : if w =~ '\a' " if the word contains a letter
861 :
862 : " Delete any existing highlight before showing another tag
863 : silent! wincmd P " jump to preview window
864 : if &previewwindow " if we really get there...
865 : match none " delete existing highlight
866 : wincmd p " back to old window
867 : endif
868 :
869 : " Try displaying a matching tag for the word under the cursor
870 : try
871 : exe "ptag " . w
872 : catch
873 : return
874 : endtry
875 :
876 : silent! wincmd P " jump to preview window
877 : if &previewwindow " if we really get there...
878 : if has("folding")
879 : silent! .foldopen " don't want a closed fold
880 : endif
881 : call search("$", "b") " to end of previous line
882 : let w = substitute(w, '\\', '\\\\', "")
883 : call search('\<\V' . w . '\>') " position cursor on match
884 : " Add a match highlight to the word at this position
885 : hi previewWord term=bold ctermbg=green guibg=green
886 : exe 'match previewWord "\%' . line(".") . 'l\%' . col(".") . 'c\k*"'
887 : wincmd p " back to old window
888 : endif
889 : endif
890 :endfun
891
892==============================================================================
89311. Using hidden buffers *buffer-hidden*
894
895A hidden buffer is not displayed in a window, but is still loaded into memory.
896This makes it possible to jump from file to file, without the need to read or
897write the file every time you get another buffer in a window.
898{not available when compiled without the |+listcmds| feature}
899
900 *:buffer-!*
901If the option 'hidden' ('hid') is set, abandoned buffers are kept for all
902commands that start editing another file: ":edit", ":next", ":tag", etc. The
903commands that move through the buffer list sometimes make the current buffer
904hidden although the 'hidden' option is not set. This happens when a buffer is
905modified, but is forced (with '!') to be removed from a window, and
906'autowrite' is off or the buffer can't be written.
907
908You can make a hidden buffer not hidden by starting to edit it with any
909command. Or by deleting it with the ":bdelete" command.
910
911The 'hidden' is global, it is used for all buffers. The 'bufhidden' option
912can be used to make an exception for a specific buffer. It can take these
913values:
914 <empty> Use the value of 'hidden'.
915 hide Hide this buffer, also when 'hidden' is not set.
916 unload Don't hide but unload this buffer, also when 'hidden'
917 is set.
918 delete Delete the buffer.
919
920 *hidden-quit*
921When you try to quit Vim while there is a hidden, modified buffer, you will
922get an error message and Vim will make that buffer the current buffer. You
923can then decide to write this buffer (":wq") or quit without writing (":q!").
924Be careful: there may be more hidden, modified buffers!
925
926A buffer can also be unlisted. This means it exists, but it is not in the
927list of buffers. |unlisted-buffer|
928
929
930:files[!] *:files*
931:buffers[!] *:buffers* *:ls*
932:ls[!] Show all buffers. Example:
933
934 1 #h "/test/text" line 1 ~
935 2u "asdf" line 0 ~
Bram Moolenaar81695252004-12-29 20:58:21 +0000936 3 %a+ "version.c" line 1 ~
Bram Moolenaar071d4272004-06-13 20:20:40 +0000937
938 When the [!] is included the list will show unlisted buffers
939 (the term "unlisted" is a bit confusing then...).
940
941 Each buffer has a unique number. That number will not change,
942 so you can always go to a specific buffer with ":buffer N" or
943 "N CTRL-^", where N is the buffer number.
944
945 Indicators (chars in the same column are mutually exclusive):
946 u an unlisted buffer (only displayed when [!] is used)
947 |unlisted-buffer|
948 % the buffer in the current window
949 # the alternate buffer for ":e #" and CTRL-^
950 a an active buffer: it is loaded and visible
951 h a hidden buffer: It is loaded, but currently not
952 displayed in a window |hidden-buffer|
953 - a buffer with 'modifiable' off
954 = a readonly buffer
955 + a modified buffer
956 x a buffer with read errors
957
958 *:bad* *:badd*
959:bad[d] [+lnum] {fname}
960 Add file name {fname} to the buffer list, without loading it.
961 If "lnum" is specified, the cursor will be positioned at that
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000962 line when the buffer is first entered. Note that other
Bram Moolenaar071d4272004-06-13 20:20:40 +0000963 commands after the + will be ignored.
964
965:[N]bd[elete][!] *:bd* *:bdel* *:bdelete* *E516*
966:bd[elete][!] [N]
967 Unload buffer [N] (default: current buffer) and delete it from
968 the buffer list. If the buffer was changed, this fails,
969 unless when [!] is specified, in which case changes are lost.
970 The file remains unaffected. Any windows for this buffer are
971 closed. If buffer [N] is the current buffer, another buffer
972 will be displayed instead. This is the most recent entry in
973 the jump list that points into a loaded buffer.
974 Actually, the buffer isn't completely deleted, it is removed
975 from the buffer list |unlisted-buffer| and option values,
976 variables and mappings/abbreviations for the buffer are
977 cleared.
978
979:bdelete[!] {bufname} *E93* *E94*
980 Like ":bdelete[!] [N]", but buffer given by name. Note that a
981 buffer whose name is a number cannot be referenced by that
982 name; use the buffer number instead. Insert a backslash
983 before a space in a buffer name.
984
985:bdelete[!] N1 N2 ...
986 Do ":bdelete[!]" for buffer N1, N2, etc. The arguments can be
987 buffer numbers or buffer names (but not buffer names that are
988 a number). Insert a backslash before a space in a buffer
989 name.
990
991:N,Mbdelete[!] Do ":bdelete[!]" for all buffers in the range N to M
992 |inclusive|.
993
994:[N]bw[ipeout][!] *:bw* *:bwipe* *:bwipeout* *E517*
995:bw[ipeout][!] {bufname}
996:N,Mbw[ipeout][!]
997:bw[ipeout][!] N1 N2 ...
Bram Moolenaardf1bdc92006-02-23 21:32:16 +0000998 Like |:bdelete|, but really delete the buffer. Everything
999 related to the buffer is lost. All marks in this buffer
1000 become invalid, option settings are lost, etc. Don't use this
1001 unless you know what you are doing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001002
1003:[N]bun[load][!] *:bun* *:bunload* *E515*
1004:bun[load][!] [N]
1005 Unload buffer [N] (default: current buffer). The memory
1006 allocated for this buffer will be freed. The buffer remains
1007 in the buffer list.
1008 If the buffer was changed, this fails, unless when [!] is
1009 specified, in which case the changes are lost.
1010 Any windows for this buffer are closed. If buffer [N] is the
1011 current buffer, another buffer will be displayed instead.
1012 This is the most recent entry in the jump list that points
1013 into a loaded buffer.
1014
1015:bunload[!] {bufname}
1016 Like ":bunload[!] [N]", but buffer given by name. Note that a
1017 buffer whose name is a number cannot be referenced by that
1018 name; use the buffer number instead. Insert a backslash
1019 before a space in a buffer name.
1020
1021:N,Mbunload[!] Do ":bunload[!]" for all buffers in the range N to M
1022 |inclusive|.
1023
1024:bunload[!] N1 N2 ...
1025 Do ":bunload[!]" for buffer N1, N2, etc. The arguments can be
1026 buffer numbers or buffer names (but not buffer names that are
1027 a number). Insert a backslash before a space in a buffer
1028 name.
1029
1030:[N]b[uffer][!] [N] *:b* *:bu* *:buf* *:buffer* *E86*
1031 Edit buffer [N] from the buffer list. If [N] is not given,
1032 the current buffer remains being edited. See |:buffer-!| for
1033 [!]. This will also edit a buffer that is not in the buffer
1034 list, without setting the 'buflisted' flag.
1035
1036:[N]b[uffer][!] {filename}
1037 Edit buffer for {filename} from the buffer list. See
1038 |:buffer-!| for [!]. This will also edit a buffer that is not
1039 in the buffer list, without setting the 'buflisted' flag.
1040
1041:[N]sb[uffer] [N] *:sb* *:sbuffer*
1042 Split window and edit buffer [N] from the buffer list. If [N]
1043 is not given, the current buffer is edited. Respects the
1044 "useopen" setting of 'switchbuf' when splitting. This will
1045 also edit a buffer that is not in the buffer list, without
1046 setting the 'buflisted' flag.
1047
1048:[N]sb[uffer] {filename}
1049 Split window and edit buffer for {filename} from the buffer
1050 list. This will also edit a buffer that is not in the buffer
1051 list, without setting the 'buflisted' flag.
Bram Moolenaar280f1262006-01-30 00:14:18 +00001052 Note: If what you want to do is split the buffer, make a copy
1053 under another name, you can do it this way: >
1054 :w foobar | sp #
Bram Moolenaar071d4272004-06-13 20:20:40 +00001055
Bram Moolenaar280f1262006-01-30 00:14:18 +00001056:[N]bn[ext][!] [N] *:bn* *:bnext* *E87*
Bram Moolenaar071d4272004-06-13 20:20:40 +00001057 Go to [N]th next buffer in buffer list. [N] defaults to one.
1058 Wraps around the end of the buffer list.
1059 See |:buffer-!| for [!].
1060 If you are in a help buffer, this takes you to the next help
1061 buffer (if there is one). Similarly, if you are in a normal
1062 (non-help) buffer, this takes you to the next normal buffer.
1063 This is so that if you have invoked help, it doesn't get in
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +00001064 the way when you're browsing code/text buffers. The next three
Bram Moolenaar071d4272004-06-13 20:20:40 +00001065 commands also work like this.
1066
1067 *:sbn* *:sbnext*
1068:[N]sbn[ext] [N]
1069 Split window and go to [N]th next buffer in buffer list.
1070 Wraps around the end of the buffer list. Uses 'switchbuf'
1071
1072:[N]bN[ext][!] [N] *:bN* *:bNext* *:bp* *:bprevious* *E88*
1073:[N]bp[revious][!] [N]
1074 Go to [N]th previous buffer in buffer list. [N] defaults to
1075 one. Wraps around the start of the buffer list.
1076 See |:buffer-!| for [!] and 'switchbuf'.
1077
1078:[N]sbN[ext] [N] *:sbN* *:sbNext* *:sbp* *:sbprevious*
1079:[N]sbp[revious] [N]
1080 Split window and go to [N]th previous buffer in buffer list.
1081 Wraps around the start of the buffer list.
1082 Uses 'switchbuf'.
1083
1084 *:br* *:brewind*
1085:br[ewind][!] Go to first buffer in buffer list. If the buffer list is
1086 empty, go to the first unlisted buffer.
1087 See |:buffer-!| for [!].
1088
1089 *:bf* *:bfirst*
1090:bf[irst] Same as ":brewind".
1091
1092 *:sbr* *:sbrewind*
1093:sbr[ewind] Split window and go to first buffer in buffer list. If the
1094 buffer list is empty, go to the first unlisted buffer.
1095 Respects the 'switchbuf' option.
1096
1097 *:sbf* *:sbfirst*
1098:sbf[irst] Same as ":sbrewind".
1099
1100 *:bl* *:blast*
1101:bl[ast][!] Go to last buffer in buffer list. If the buffer list is
1102 empty, go to the last unlisted buffer.
1103 See |:buffer-!| for [!].
1104
1105 *:sbl* *:sblast*
1106:sbl[ast] Split window and go to last buffer in buffer list. If the
1107 buffer list is empty, go to the last unlisted buffer.
1108 Respects 'switchbuf' option.
1109
1110:[N]bm[odified][!] [N] *:bm* *:bmodified* *E84*
1111 Go to [N]th next modified buffer. Note: this command also
1112 finds unlisted buffers. If there is no modified buffer the
1113 command fails.
1114
1115:[N]sbm[odified] [N] *:sbm* *:sbmodified*
1116 Split window and go to [N]th next modified buffer.
1117 Respects 'switchbuf' option.
1118 Note: this command also finds buffers not in the buffer list.
1119
1120:[N]unh[ide] [N] *:unh* *:unhide* *:sun* *:sunhide*
1121:[N]sun[hide] [N]
1122 Rearrange the screen to open one window for each loaded buffer
1123 in the buffer list. When a count is given, this is the
1124 maximum number of windows to open.
1125
1126:[N]ba[ll] [N] *:ba* *:ball* *:sba* *:sball*
1127:[N]sba[ll] [N] Rearrange the screen to open one window for each buffer in
1128 the buffer list. When a count is given, this is the maximum
1129 number of windows to open. 'winheight' also limits the number
1130 of windows opened ('winwidth' if |:vertical| was prepended).
1131 Buf/Win Enter/Leave autocommands are not executed for the new
1132 windows here, that's only done when they are really entered.
Bram Moolenaar756ec0f2007-05-05 17:59:48 +00001133 When the |:tab| modifier is used new windows are opened in a
Bram Moolenaarfd2ac762006-03-01 22:09:21 +00001134 new tab, up to 'tabpagemax'.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001135
1136Note: All the commands above that start editing another buffer, keep the
1137'readonly' flag as it was. This differs from the ":edit" command, which sets
1138the 'readonly' flag each time the file is read.
1139
1140==============================================================================
114112. Special kinds of buffers *special-buffers*
1142
1143Instead of containing the text of a file, buffers can also be used for other
1144purposes. A few options can be set to change the behavior of a buffer:
1145 'bufhidden' what happens when the buffer is no longer displayed
1146 in a window.
1147 'buftype' what kind of a buffer this is
1148 'swapfile' whether the buffer will have a swap file
1149 'buflisted' buffer shows up in the buffer list
1150
1151A few useful kinds of a buffer:
1152
Bram Moolenaar280f1262006-01-30 00:14:18 +00001153quickfix Used to contain the error list or the location list. See
1154 |:cwindow| and |:lwindow|. This command sets the 'buftype'
1155 option to "quickfix". You are not supposed to change this!
1156 'swapfile' is off.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001157
1158help Contains a help file. Will only be created with the |:help|
1159 command. The flag that indicates a help buffer is internal
1160 and can't be changed. The 'buflisted' option will be reset
1161 for a help buffer.
1162
Bram Moolenaar677ee682005-01-27 14:41:15 +00001163directory Displays directory contents. Can be used by a file explorer
Bram Moolenaar071d4272004-06-13 20:20:40 +00001164 plugin. The buffer is created with these settings: >
Bram Moolenaar8ada17c2006-01-19 22:16:24 +00001165 :setlocal buftype=nowrite
1166 :setlocal bufhidden=delete
1167 :setlocal noswapfile
Bram Moolenaar071d4272004-06-13 20:20:40 +00001168< The buffer name is the name of the directory and is adjusted
1169 when using the |:cd| command.
1170
1171scratch Contains text that can be discarded at any time. It is kept
1172 when closing the window, it must be deleted explicitly.
1173 Settings: >
Bram Moolenaar8ada17c2006-01-19 22:16:24 +00001174 :setlocal buftype=nofile
1175 :setlocal bufhidden=hide
1176 :setlocal noswapfile
Bram Moolenaar071d4272004-06-13 20:20:40 +00001177< The buffer name can be used to identify the buffer.
1178
1179 *unlisted-buffer*
1180unlisted The buffer is not in the buffer list. It is not used for
1181 normal editing, but to show a help file, remember a file name
1182 or marks. The ":bdelete" command will also set this option,
1183 thus it doesn't completely delete the buffer. Settings: >
Bram Moolenaar8ada17c2006-01-19 22:16:24 +00001184 :setlocal nobuflisted
Bram Moolenaar071d4272004-06-13 20:20:40 +00001185<
1186
1187 vim:tw=78:ts=8:ft=help:norl: