blob: 93757a2eb5fbb57ea893317301b68ae65389bd5d [file] [log] [blame]
Bram Moolenaarc270d802006-03-11 21:29:41 +00001*windows.txt* For Vim version 7.0aa. Last change: 2006 Mar 11
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==============================================================================
361. Introduction *windows-intro*
37
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
135 is set and 'eadirection' isn't "hor").
136 Note: CTRL-S does not work on all terminals and might block
137 further input, use CTRL-Q to get going again.
138 Also see |++opt| and |+cmd|.
139
140CTRL-W CTRL-V *CTRL-W_CTRL-V*
141CTRL-W v *CTRL-W_v*
142:[N]vs[plit] [++opt] [+cmd] [file] *:vs* *:vsplit*
143 Like |:split|, but split vertically. If 'equalalways' is set
144 and 'eadirection' isn't "ver" the windows will be spread out
145 horizontally, unless a width was specified.
146 Note: In other places CTRL-Q does the same as CTRL-V, but here
147 it doesn't!
148
149CTRL-W n *CTRL-W_n*
150CTRL-W CTRL_N *CTRL-W_CTRL-N*
151:[N]new [++opt] [+cmd] *:new*
152 Create a new window and start editing an empty file in it.
153 Make new window N high (default is to use half the existing
154 height). Reduces the current window height to create room (and
155 others, if the 'equalalways' option is set and 'eadirection'
156 isn't "hor").
157 Also see |++opt| and |+cmd|.
158 If 'fileformats' is not empty, the first format given will be
159 used for the new buffer. If 'fileformats' is empty, the
160 'fileformat' of the current buffer is used. This can be
161 overridden with the |++opt| argument.
162 Autocommands are executed in this order:
163 1. WinLeave for the current window
164 2. WinEnter for the new window
165 3. BufLeave for the current buffer
166 4. BufEnter for the new buffer
167 This behaves like a ":split" first, and then a ":e" command.
168
169:[N]vne[w] [++opt] [+cmd] [file] *:vne* *:vnew*
170 Like |:new|, but split vertically. If 'equalalways' is set
171 and 'eadirection' isn't "ver" the windows will be spread out
172 horizontally, unless a width was specified.
173
174:[N]new [++opt] [+cmd] {file}
175:[N]sp[lit] [++opt] [+cmd] {file} *:split_f*
176 Create a new window and start editing file {file} in it.
177 If [+cmd] is given, execute the command when the file has been
178 loaded |+cmd|.
179 Also see |++opt|.
180 Make new window N high (default is to use half the existing
181 height). Reduces the current window height to create room
182 (and others, if the 'equalalways' option is set).
183
184:[N]sv[iew] [++opt] [+cmd] {file} *:sv* *:sview* *splitview*
185 Same as ":split", but set 'readonly' option for this buffer.
186
187:[N]sf[ind] [++opt] [+cmd] {file} *:sf* *:sfind* *splitfind*
188 Same as ":split", but search for {file} in 'path'. Doesn't
189 split if {file} is not found.
190
191CTRL-W CTRL-^ *CTRL-W_CTRL-^* *CTRL-W_^*
192CTRL-W ^ Does ":split #", split window in two and edit alternate file.
193 When a count is given, it becomes ":split #N", split window
194 and edit buffer N.
195
196Note that the 'splitbelow' and 'splitright' options influence where a new
197window will appear.
198
199 *:vert* *:vertical*
200:vert[ical] {cmd}
201 Execute {cmd}. If it contains a command that splits a window,
202 it will be split vertically.
203
204:lefta[bove] {cmd} *:lefta* *:leftabove*
205:abo[veleft] {cmd} *:abo* *:aboveleft*
206 Execute {cmd}. If it contains a command that splits a window,
207 it will be opened left (vertical split) or above (horizontal
208 split) the current window. Overrules 'splitbelow' and
209 'splitright'.
210
211:rightb[elow] {cmd} *:rightb* *:rightbelow*
212:bel[owright] {cmd} *:bel* *:belowright*
213 Execute {cmd}. If it contains a command that splits a window,
214 it will be opened right (vertical split) or below (horizontal
215 split) the current window. Overrules 'splitbelow' and
216 'splitright'.
217
218 *:topleft* *E442*
219:to[pleft] {cmd}
220 Execute {cmd}. If it contains a command that splits a window,
221 it will appear at the top and occupy the full width of the Vim
222 window. When the split is vertical the window appears at the
223 far left and occupies the full height of the Vim window.
224
225 *:botright*
226:bo[tright] {cmd}
227 Execute {cmd}. If it contains a command that splits a window,
228 it will appear at the bottom and occupy the full width of the
229 Vim window. When the split is vertical the window appears at
230 the far right and occupies the full height of the Vim window.
231
232These command modifiers can be combined to make a vertically split window
233occupy the full height. Example: >
234 :vertical topleft edit tags
235Opens a vertically split, full-height window on the "tags" file at the far
236left of the Vim window.
237
238
239Closing a window
240----------------
241
242CTRL-W q *CTRL-W_q*
243CTRL-W CTRL-Q *CTRL-W_CTRL-Q*
244:q[uit] Quit current window. When quitting the last window (not
245 counting a help window), exit Vim.
246 When 'hidden' is set, and there is only one window for the
247 current buffer, it becomes hidden.
248 When 'hidden' is not set, and there is only one window for the
249 current buffer, and the buffer was changed, the command fails.
250 (Note: CTRL-Q does not work on all terminals)
251
252:q[uit]! Quit current window. If this was the last window for a buffer,
253 any changes to that buffer are lost. When quitting the last
254 window (not counting help windows), exit Vim. The contents of
255 the buffer are lost, even when 'hidden' is set.
256
257CTRL-W c *CTRL-W_c* *:clo* *:close*
258:clo[se][!] Close current window. When the 'hidden' option is set, or
259 when the buffer was changed and the [!] is used, the buffer
260 becomes hidden (unless there is another window editing it).
Bram Moolenaar7e8fd632006-02-18 22:14:51 +0000261 When there is only one window in the current tab page and
262 there is another tab page, this closes the current tab page.
263 |tab-page|.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000264 This command fails when: *E444*
265 - There is only one window on the screen.
266 - When 'hidden' is not set, [!] is not used, the buffer has
267 changes, and there is no other window on this buffer.
268 Changes to the buffer are not written and won't get lost, so
269 this is a "safe" command.
270
271CTRL-W CTRL-C *CTRL-W_CTRL-C*
272 You might have expected that CTRL-W CTRL-C closes the current
273 window, but that does not work, because the CTRL-C cancels the
274 command.
275
276 *:hide*
277:hid[e] Quit current window, unless it is the last window on the
278 screen. The buffer becomes hidden (unless there is another
279 window editing it or 'bufhidden' is "unload" or "delete").
Bram Moolenaar7e8fd632006-02-18 22:14:51 +0000280 If the window is the last one in the current tab page the tab
281 page is closed. |tab-page|
Bram Moolenaar071d4272004-06-13 20:20:40 +0000282 The value of 'hidden' is irrelevant for this command.
283 Changes to the buffer are not written and won't get lost, so
284 this is a "safe" command.
285
286:hid[e] {cmd} Execute {cmd} with 'hidden' is set. The previous value of
287 'hidden' is restored after {cmd} has been executed.
288 Example: >
289 :hide edit Makefile
290< This will edit "Makefile", and hide the current buffer if it
291 has any changes.
292
293CTRL-W o *CTRL-W_o* *E445*
294CTRL-W CTRL-O *CTRL-W_CTRL-O* *:on* *:only*
295:on[ly][!] Make the current window the only one on the screen. All other
296 windows are closed.
297 When the 'hidden' option is set, all buffers in closed windows
298 become hidden.
299 When 'hidden' is not set, and the 'autowrite' option is set,
300 modified buffers are written. Otherwise, windows that have
301 buffers that are modified are not removed, unless the [!] is
302 given, then they become hidden. But modified buffers are
303 never abandoned, so changes cannot get lost.
304
305==============================================================================
3064. Moving cursor to other windows *window-move-cursor*
307
308CTRL-W <Down> *CTRL-W_<Down>*
309CTRL-W CTRL-J *CTRL-W_CTRL-J* *CTRL-W_j*
310CTRL-W j Move cursor to Nth window below current one. Uses the cursor
311 position to select between alternatives.
312
313CTRL-W <Up> *CTRL-W_<Up>*
314CTRL-W CTRL-K *CTRL-W_CTRL-K* *CTRL-W_k*
315CTRL-W k Move cursor to Nth window above current one. Uses the cursor
316 position to select between alternatives.
317
318CTRL-W <Left> *CTRL-W_<Left>*
319CTRL-W CTRL-H *CTRL-W_CTRL-H*
320CTRL-W <BS> *CTRL-W_<BS>* *CTRL-W_h*
321CTRL-W h Move cursor to Nth window left of current one. Uses the
322 cursor position to select between alternatives.
323
324CTRL-W <Right> *CTRL-W_<Right>*
325CTRL-W CTRL-L *CTRL-W_CTRL-L* *CTRL-W_l*
326CTRL-W l Move cursor to Nth window right of current one. Uses the
327 cursor position to select between alternatives.
328
329CTRL-W w *CTRL-W_w* *CTRL-W_CTRL-W*
330CTRL-W CTRL-W Without count: move cursor to window below/right of the
331 current one. If there is no window below or right, go to
332 top-left window.
333 With count: go to Nth window (windows are numbered from
334 top-left to bottom-right). To obtain the window number see
335 |bufwinnr()| and |winnr()|.
336
337 *CTRL-W_W*
338CTRL-W W Without count: move cursor to window above/left of current
339 one. If there is no window above or left, go to bottom-right
340 window. With count: go to Nth window (windows are numbered
341 from top-left to bottom-right).
342
343CTRL-W t *CTRL-W_t* *CTRL-W_CTRL-T*
344CTRL-W CTRL-T Move cursor to top-left window.
345
346CTRL-W b *CTRL-W_b* *CTRL-W_CTRL-B*
347CTRL-W CTRL-B Move cursor to bottom-right window.
348
349CTRL-W p *CTRL-W_p* *CTRL-W_CTRL-P*
350CTRL-W CTRL-P Go to previous (last accessed) window.
351
352 *CTRL-W_P* *E441*
353CTRL-W P Go to preview window. When there is no preview window this is
354 an error.
355 {not available when compiled without the |+quickfix| feature}
356
357If Visual mode is active and the new window is not for the same buffer, the
358Visual mode is ended. If the window is on the same buffer, the cursor
359position is set to keep the same Visual area selected.
360
361 *:winc* *:wincmd*
362These commands can also be executed with ":wincmd":
363
364:[count]winc[md] {arg}
365 Like executing CTRL-W [count] {arg}. Example: >
366 :wincmd j
367< Moves to the window below the current one.
368 This command is useful when a Normal mode cannot be used (for
369 the |CursorHold| autocommand event). Or when a Normal mode
370 command is inconvenient.
371 The count can also be a window number. Example: >
372 :exe nr . "wincmd w"
373< This goes to window "nr".
374
375==============================================================================
3765. Moving windows around *window-moving*
377
378CTRL-W r *CTRL-W_r* *CTRL-W_CTRL-R* *E443*
379CTRL-W CTRL-R Rotate windows downwards/rightwards. The first window becomes
380 the second one, the second one becomes the third one, etc.
381 The last window becomes the first window. The cursor remains
382 in the same window.
383 This only works within the row or column of windows that the
384 current window is in.
385
386 *CTRL-W_R*
387CTRL-W R Rotate windows upwards/leftwards. The second window becomes
388 the first one, the third one becomes the second one, etc. The
389 first window becomes the last window. The cursor remains in
390 the same window.
391 This only works within the row or column of windows that the
392 current window is in.
393
394CTRL-W x *CTRL-W_x* *CTRL-W_CTRL-X*
395CTRL-W CTRL-X Without count: Exchange current window with next one. If there
396 is no next window, exchange with previous window.
397 With count: Exchange current window with Nth window (first
398 window is 1). The cursor is put in the other window.
399 When vertical and horizontal window splits are mixed, the
400 exchange is only done in the row or column of windows that the
401 current window is in.
402
403The following commands can be used to change the window layout. For example,
404when there are two vertically split windows, CTRL-W K will change that in
405horizontally split windows. CTRL-W H does it the other way around.
406
407 *CTRL-W_K*
408CTRL-W K Move the current window to be at the very top, using the full
409 width of the screen. This works like closing the current
410 window and then creating another one with ":topleft split",
411 except that the current window contents is used for the new
412 window.
413
414 *CTRL-W_J*
415CTRL-W J Move the current window to be at the very bottom, using the
416 full width of the screen. This works like closing the current
417 window and then creating another one with ":botright split",
418 except that the current window contents is used for the new
419 window.
420
421 *CTRL-W_H*
422CTRL-W H Move the current window to be at the far left, using the
423 full height of the screen. This works like closing the
424 current window and then creating another one with
425 ":vert topleft split", except that the current window contents
426 is used for the new window.
427 {not available when compiled without the +vertsplit feature}
428
429 *CTRL-W_L*
430CTRL-W L Move the current window to be at the far right, using the full
431 height of the screen. This works like closing the
432 current window and then creating another one with
433 ":vert botright split", except that the current window
434 contents is used for the new window.
435 {not available when compiled without the +vertsplit feature}
436
437==============================================================================
4386. Window resizing *window-resize*
439
440 *CTRL-W_=*
441CTRL-W = Make all windows (almost) equally high and wide, but use
442 'winheight' and 'winwidth' for the current window.
443
444:res[ize] -N *:res* *:resize* *CTRL-W_-*
445CTRL-W - Decrease current window height by N (default 1).
446 If used after 'vertical': decrease width by N.
447
448:res[ize] +N *CTRL-W_+*
449CTRL-W + Increase current window height by N (default 1).
450 If used after 'vertical': increase width by N.
451
452:res[ize] [N]
453CTRL-W CTRL-_ *CTRL-W_CTRL-_* *CTRL-W__*
454CTRL-W _ Set current window height to N (default: highest possible).
455
456z{nr}<CR> Set current window height to {nr}.
457
458 *CTRL-W_<*
459CTRL-W < Decrease current window width by N (default 1).
460
461 *CTRL-W_>*
462CTRL-W > Increase current window width by N (default 1).
463
464:vertical res[ize] [N] *:vertical-resize* *CTRL-W_bar*
465CTRL-W | Set current window width to N (default: widest possible).
466
467You can also resize a window by dragging a status line up or down with the
468mouse. Or by dragging a vertical separator line left or right. This only
469works if the version of Vim that is being used supports the mouse and the
470'mouse' option has been set to enable it.
471
472The option 'winheight' ('wh') is used to set the minimal window height of the
473current window. This option is used each time another window becomes the
474current window. If the option is '0', it is disabled. Set 'winheight' to a
475very large value, e.g., '9999', to make the current window always fill all
476available space. Set it to a reasonable value, e.g., '10', to make editing in
477the current window comfortable.
478
479The equivalent 'winwidth' ('wiw') option is used to set the minimal width of
480the current window.
481
482When the option 'equalalways' ('ea') is set, all the windows are automatically
483made the same size after splitting or closing a window. If you don't set this
484option, splitting a window will reduce the size of the current window and
485leave the other windows the same. When closing a window, the extra lines are
486given to the window above it.
487
488The 'eadirection' option limits the direction in which the 'equalalways'
489option is applied. The default "both" resizes in both directions. When the
490value is "ver" only the heights of windows are equalized. Use this when you
491have manually resized a vertically split window and want to keep this width.
492Likewise, "hor" causes only the widths of windows to be equalized.
493
494The option 'cmdheight' ('ch') is used to set the height of the command-line.
495If you are annoyed by the |hit-enter| prompt for long messages, set this
496option to 2 or 3.
497
498If there is only one window, resizing that window will also change the command
499line height. If there are several windows, resizing the current window will
500also change the height of the window below it (and sometimes the window above
501it).
502
503The minimal height and width of a window is set with 'winminheight' and
504'winminwidth'. These are hard values, a window will never become smaller.
505
506==============================================================================
5077. Argument and buffer list commands *buffer-list*
508
509 args list buffer list meaning ~
5101. :[N]argument [N] 11. :[N]buffer [N] to arg/buf N
5112. :[N]next [file ..] 12. :[N]bnext [N] to Nth next arg/buf
5123. :[N]Next [N] 13. :[N]bNext [N] to Nth previous arg/buf
5134. :[N]previous [N] 14. :[N]bprevious [N] to Nth previous arg/buf
5145. :rewind / :first 15. :brewind / :bfirst to first arg/buf
5156. :last 16. :blast to last arg/buf
5167. :all 17. :ball edit all args/buffers
517 18. :unhide edit all loaded buffers
518 19. :[N]bmod [N] to Nth modified buf
519
520 split & args list split & buffer list meaning ~
52121. :[N]sargument [N] 31. :[N]sbuffer [N] split + to arg/buf N
52222. :[N]snext [file ..] 32. :[N]sbnext [N] split + to Nth next arg/buf
52323. :[N]sNext [N] 33. :[N]sbNext [N] split + to Nth previous arg/buf
52424. :[N]sprevious [N] 34. :[N]sbprevious [N] split + to Nth previous arg/buf
52525. :srewind / :sfirst 35. :sbrewind / :sbfirst split + to first arg/buf
52626. :slast 36. :sblast split + to last arg/buf
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +000052727. :sall 37. :sball edit all args/buffers
Bram Moolenaar071d4272004-06-13 20:20:40 +0000528 38. :sunhide edit all loaded buffers
529 39. :[N]sbmod [N] split + to Nth modified buf
530
53140. :args list of arguments
53241. :buffers list of buffers
533
534The meaning of [N] depends on the command:
535 [N] is number of buffers to go forward/backward on ?2, ?3, and ?4
536 [N] is an argument number, defaulting to current argument, for 1 and 21
537 [N] is a buffer number, defaulting to current buffer, for 11 and 31
538 [N] is a count for 19 and 39
539
540Note: ":next" is an exception, because it must accept a list of file names
541for compatibility with Vi.
542
543
544The argument list and multiple windows
545--------------------------------------
546
547The current position in the argument list can be different for each window.
548Remember that when doing ":e file", the position in the argument list stays
549the same, but you are not editing the file at that position. To indicate
550this, the file message (and the title, if you have one) shows
551"(file (N) of M)", where "(N)" is the current position in the file list, and
552"M" the number of files in the file list.
553
554All the entries in the argument list are added to the buffer list. Thus, you
555can also get to them with the buffer list commands, like ":bnext".
556
557:[N]al[l][!] [N] *:al* *:all* *:sal* *:sall*
558:[N]sal[l][!] [N]
559 Rearrange the screen to open one window for each argument.
560 All other windows are closed. When a count is given, this is
561 the maximum number of windows to open.
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000562 With the |:tab| modifier open a tab page for each argument.
563 When there are more arguments than 'tabpagemax' further ones
564 become split windows in the last tab page.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000565 When the 'hidden' option is set, all buffers in closed windows
566 become hidden.
567 When 'hidden' is not set, and the 'autowrite' option is set,
568 modified buffers are written. Otherwise, windows that have
569 buffers that are modified are not removed, unless the [!] is
570 given, then they become hidden. But modified buffers are
571 never abandoned, so changes cannot get lost.
572 [N] is the maximum number of windows to open. 'winheight'
573 also limits the number of windows opened ('winwidth' if
574 |:vertical| was prepended).
575 Buf/Win Enter/Leave autocommands are not executed for the new
576 windows here, that's only done when they are really entered.
577
578:[N]sa[rgument][!] [++opt] [+cmd] [N] *:sa* *:sargument*
579 Short for ":split | argument [N]": split window and go to Nth
580 argument. But when there is no such argument, the window is
581 not split. Also see |++opt| and |+cmd|.
582
583:[N]sn[ext][!] [++opt] [+cmd] [file ..] *:sn* *:snext*
584 Short for ":split | [N]next": split window and go to Nth next
585 argument. But when there is no next file, the window is not
586 split. Also see |++opt| and |+cmd|.
587
588:[N]spr[evious][!] [++opt] [+cmd] [N] *:spr* *:sprevious*
589:[N]sN[ext][!] [++opt] [+cmd] [N] *:sN* *:sNext*
590 Short for ":split | [N]Next": split window and go to Nth
591 previous argument. But when there is no previous file, the
592 window is not split. Also see |++opt| and |+cmd|.
593
594 *:sre* *:srewind*
595:sre[wind][!] [++opt] [+cmd]
596 Short for ":split | rewind": split window and go to first
597 argument. But when there is no argument list, the window is
598 not split. Also see |++opt| and |+cmd|.
599
600 *:sfir* *:sfirst*
Bram Moolenaar26a60b42005-02-22 08:49:11 +0000601:sfir[st] [++opt] [+cmd]
Bram Moolenaar071d4272004-06-13 20:20:40 +0000602 Same as ":srewind".
603
604 *:sla* *:slast*
605:sla[st][!] [++opt] [+cmd]
606 Short for ":split | last": split window and go to last
607 argument. But when there is no argument list, the window is
608 not split. Also see |++opt| and |+cmd|.
609
610 *:dr* *:drop*
611:dr[op] {file} ..
612 Edit the first {file} in a window.
613 - If the file is already open in a window change to that
614 window.
615 - If the file is not open in a window edit the file in the
616 current window. If the current buffer can't be |abandon|ed,
617 the window is split first.
618 The |argument-list| is set, like with the |:next| command.
619 The purpose of this command is that it can be used from a
620 program that wants Vim to edit another file, e.g., a debugger.
621 {only available when compiled with the +gui feature}
622
623==============================================================================
6248. Do a command in all buffers or windows *list-repeat*
625
626 *:windo*
627:windo[!] {cmd} Execute {cmd} in each window.
628 It works like doing this: >
629 CTRL-W t
630 :{cmd}
631 CTRL-W w
632 :{cmd}
633 etc.
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000634< This only operates in the current tab page.
Bram Moolenaar7e8fd632006-02-18 22:14:51 +0000635 When an error is detected on one window, further
Bram Moolenaar071d4272004-06-13 20:20:40 +0000636 windows will not be visited.
637 The last window (or where an error occurred) becomes
638 the current window.
639 {cmd} can contain '|' to concatenate several commands.
640 {cmd} must not open or close windows or reorder them.
641 {not in Vi} {not available when compiled without the
642 |+listcmds| feature}
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000643 Also see |:tabdo|, |:argdo| and |:bufdo|.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000644
645 *:bufdo*
646:bufdo[!] {cmd} Execute {cmd} in each buffer in the buffer list.
647 It works like doing this: >
648 :bfirst
649 :{cmd}
650 :bnext
651 :{cmd}
652 etc.
653< When the current file can't be |abandon|ed and the [!]
654 is not present, the command fails.
655 When an error is detected on one buffer, further
656 buffers will not be visited.
657 Unlisted buffers are skipped.
658 The last buffer (or where an error occurred) becomes
659 the current buffer.
660 {cmd} can contain '|' to concatenate several commands.
661 {cmd} must not delete buffers or add buffers to the
662 buffer list.
663 Note: While this command is executing, the Syntax
664 autocommand event is disabled by adding it to
665 'eventignore'. This considerably speeds up editing
666 each buffer.
667 {not in Vi} {not available when compiled without the
668 |+listcmds| feature}
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000669 Also see |:tabdo|, |:argdo| and |:windo|.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000670
671Examples: >
672
673 :windo set nolist nofoldcolumn | normal zn
674
675This resets the 'list' option and disables folding in all windows. >
676
677 :bufdo set fileencoding= | update
678
679This resets the 'fileencoding' in each buffer and writes it if this changed
680the buffer. The result is that all buffers will use the 'encoding' encoding
681(if conversion works properly).
682
683==============================================================================
6849. Tag or file name under the cursor *window-tag*
685
686 *:sta* *:stag*
687:sta[g][!] [tagname]
688 Does ":tag[!] [tagname]" and splits the window for the found
689 tag. See also |:tag|.
690
691CTRL-W ] *CTRL-W_]* *CTRL-W_CTRL-]*
692CTRL-W CTRL-] Split current window in two. Use identifier under cursor as a
693 tag and jump to it in the new upper window. Make new window N
694 high.
695
696 *CTRL-W_g]*
697CTRL-W g ] Split current window in two. Use identifier under cursor as a
698 tag and perform ":tselect" on it in the new upper window.
699 Make new window N high.
700
701 *CTRL-W_g_CTRL-]*
702CTRL-W g CTRL-] Split current window in two. Use identifier under cursor as a
703 tag and perform ":tjump" on it in the new upper window. Make
704 new window N high.
705
706CTRL-W f *CTRL-W_f* *CTRL-W_CTRL-F*
707CTRL-W CTRL-F Split current window in two. Edit file name under cursor.
708 Like ":split ]f", but window isn't split if the file does not
709 exist.
710 Uses the 'path' variable as a list of directory names where to
711 look for the file. Also the path for current file is
712 used to search for the file name.
713 If the name is a hypertext link that looks like
714 "type://machine/path", only "/path" is used.
715 If a count is given, the count'th matching file is edited.
716 {not available when the |+file_in_path| feature was disabled
717 at compile time}
718
Bram Moolenaard1f56e62006-02-22 21:25:37 +0000719CTRL-W F *CTRL-W_F*
720 Split current window in two. Edit file name under cursor and
721 jump to the line number following the file name. See |gF| for
722 details on how the line number is obtained.
723
Bram Moolenaar071d4272004-06-13 20:20:40 +0000724Also see |CTRL-W_CTRL-I|: open window for an included file that includes
725the keyword under the cursor.
726
727==============================================================================
72810. The preview window *preview-window*
729
730The preview window is a special window to show (preview) another file. It is
731normally a small window used to show an include file or definition of a
732function.
733{not available when compiled without the |+quickfix| feature}
734
Bram Moolenaarc270d802006-03-11 21:29:41 +0000735There can be only one preview window (per tab page). It is created with one
736of the commands below. The 'previewheight' option can be set to specify the
737height of the preview window when it's opened. The 'previewwindow' option is
738set in the preview window to be able to recognize it. The 'winfixheight'
739option is set to have it keep the same height when opening/closing other
740windows.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000741
742 *:pta* *:ptag*
743:pta[g][!] [tagname]
744 Does ":tag[!] [tagname]" and shows the found tag in a
745 "Preview" window without changing the current buffer or cursor
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000746 position. If a "Preview" window already exists, it is re-used
Bram Moolenaar071d4272004-06-13 20:20:40 +0000747 (like a help window is). If a new one is opened,
748 'previewheight' is used for the height of the window. See
749 also |:tag|.
750 See below for an example. |CursorHold-example|
751 Small difference from |:tag|: When [tagname] is equal to the
752 already displayed tag, the position in the matching tag list
753 is not reset. This makes the CursorHold example work after a
754 |:ptnext|.
755
756CTRL-W z *CTRL-W_z*
757CTRL-W CTRL-Z *CTRL-W_CTRL-Z* *:pc* *:pclose*
758:pc[lose][!] Close any "Preview" window currently open. When the 'hidden'
759 option is set, or when the buffer was changed and the [!] is
760 used, the buffer becomes hidden (unless there is another
761 window editing it). The command fails if any "Preview" buffer
762 cannot be closed. See also |:close|.
763
764 *:pp* *:ppop*
765:[count]pp[op][!]
766 Does ":[count]pop[!]" in the preview window. See |:pop| and
767 |:ptag|. {not in Vi}
768
769CTRL-W } *CTRL-W_}*
770 Use identifier under cursor as a tag and perform a :ptag on
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000771 it. Make the new Preview window (if required) N high. If N is
Bram Moolenaar071d4272004-06-13 20:20:40 +0000772 not given, 'previewheight' is used.
773
774CTRL-W g } *CTRL-W_g}*
775 Use identifier under cursor as a tag and perform a :ptjump on
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000776 it. Make the new Preview window (if required) N high. If N is
Bram Moolenaar071d4272004-06-13 20:20:40 +0000777 not given, 'previewheight' is used.
778
779 *:ped* *:pedit*
780:ped[it][!] [++opt] [+cmd] {file}
781 Edit {file} in the preview window. The preview window is
782 opened like with |:ptag|. The current window and cursor
783 position isn't changed. Useful example: >
784 :pedit +/fputc /usr/include/stdio.h
785<
786 *:ps* *:psearch*
787:[range]ps[earch][!] [count] [/]pattern[/]
788 Works like |:ijump| but shows the found match in the preview
789 window. The preview window is opened like with |:ptag|. The
790 current window and cursor position isn't changed. Useful
791 example: >
792 :psearch popen
793< Like with the |:ptag| command, you can use this to
794 automatically show information about the word under the
795 cursor. This is less clever than using |:ptag|, but you don't
796 need a tags file and it will also find matches in system
797 include files. Example: >
798 :au! CursorHold *.[ch] nested exe "silent! psearch " . expand("<cword>")
799< Warning: This can be slow.
800
801Example *CursorHold-example* >
802
803 :au! CursorHold *.[ch] nested exe "silent! ptag " . expand("<cword>")
804
805This will cause a ":ptag" to be executed for the keyword under the cursor,
806when the cursor hasn't moved for the time set with 'updatetime'. The "nested"
807makes other autocommands be executed, so that syntax highlighting works in the
808preview window. The "silent!" avoids an error message when the tag could not
809be found. Also see |CursorHold|. To disable this again: >
810
811 :au! CursorHold
812
813A nice addition is to highlight the found tag, avoid the ":ptag" when there
814is no word under the cursor, and a few other things: >
815
816 :au! CursorHold *.[ch] nested call PreviewWord()
817 :func PreviewWord()
818 : if &previewwindow " don't do this in the preview window
819 : return
820 : endif
821 : let w = expand("<cword>") " get the word under cursor
822 : if w =~ '\a' " if the word contains a letter
823 :
824 : " Delete any existing highlight before showing another tag
825 : silent! wincmd P " jump to preview window
826 : if &previewwindow " if we really get there...
827 : match none " delete existing highlight
828 : wincmd p " back to old window
829 : endif
830 :
831 : " Try displaying a matching tag for the word under the cursor
832 : try
833 : exe "ptag " . w
834 : catch
835 : return
836 : endtry
837 :
838 : silent! wincmd P " jump to preview window
839 : if &previewwindow " if we really get there...
840 : if has("folding")
841 : silent! .foldopen " don't want a closed fold
842 : endif
843 : call search("$", "b") " to end of previous line
844 : let w = substitute(w, '\\', '\\\\', "")
845 : call search('\<\V' . w . '\>') " position cursor on match
846 : " Add a match highlight to the word at this position
847 : hi previewWord term=bold ctermbg=green guibg=green
848 : exe 'match previewWord "\%' . line(".") . 'l\%' . col(".") . 'c\k*"'
849 : wincmd p " back to old window
850 : endif
851 : endif
852 :endfun
853
854==============================================================================
85511. Using hidden buffers *buffer-hidden*
856
857A hidden buffer is not displayed in a window, but is still loaded into memory.
858This makes it possible to jump from file to file, without the need to read or
859write the file every time you get another buffer in a window.
860{not available when compiled without the |+listcmds| feature}
861
862 *:buffer-!*
863If the option 'hidden' ('hid') is set, abandoned buffers are kept for all
864commands that start editing another file: ":edit", ":next", ":tag", etc. The
865commands that move through the buffer list sometimes make the current buffer
866hidden although the 'hidden' option is not set. This happens when a buffer is
867modified, but is forced (with '!') to be removed from a window, and
868'autowrite' is off or the buffer can't be written.
869
870You can make a hidden buffer not hidden by starting to edit it with any
871command. Or by deleting it with the ":bdelete" command.
872
873The 'hidden' is global, it is used for all buffers. The 'bufhidden' option
874can be used to make an exception for a specific buffer. It can take these
875values:
876 <empty> Use the value of 'hidden'.
877 hide Hide this buffer, also when 'hidden' is not set.
878 unload Don't hide but unload this buffer, also when 'hidden'
879 is set.
880 delete Delete the buffer.
881
882 *hidden-quit*
883When you try to quit Vim while there is a hidden, modified buffer, you will
884get an error message and Vim will make that buffer the current buffer. You
885can then decide to write this buffer (":wq") or quit without writing (":q!").
886Be careful: there may be more hidden, modified buffers!
887
888A buffer can also be unlisted. This means it exists, but it is not in the
889list of buffers. |unlisted-buffer|
890
891
892:files[!] *:files*
893:buffers[!] *:buffers* *:ls*
894:ls[!] Show all buffers. Example:
895
896 1 #h "/test/text" line 1 ~
897 2u "asdf" line 0 ~
Bram Moolenaar81695252004-12-29 20:58:21 +0000898 3 %a+ "version.c" line 1 ~
Bram Moolenaar071d4272004-06-13 20:20:40 +0000899
900 When the [!] is included the list will show unlisted buffers
901 (the term "unlisted" is a bit confusing then...).
902
903 Each buffer has a unique number. That number will not change,
904 so you can always go to a specific buffer with ":buffer N" or
905 "N CTRL-^", where N is the buffer number.
906
907 Indicators (chars in the same column are mutually exclusive):
908 u an unlisted buffer (only displayed when [!] is used)
909 |unlisted-buffer|
910 % the buffer in the current window
911 # the alternate buffer for ":e #" and CTRL-^
912 a an active buffer: it is loaded and visible
913 h a hidden buffer: It is loaded, but currently not
914 displayed in a window |hidden-buffer|
915 - a buffer with 'modifiable' off
916 = a readonly buffer
917 + a modified buffer
918 x a buffer with read errors
919
920 *:bad* *:badd*
921:bad[d] [+lnum] {fname}
922 Add file name {fname} to the buffer list, without loading it.
923 If "lnum" is specified, the cursor will be positioned at that
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000924 line when the buffer is first entered. Note that other
Bram Moolenaar071d4272004-06-13 20:20:40 +0000925 commands after the + will be ignored.
926
927:[N]bd[elete][!] *:bd* *:bdel* *:bdelete* *E516*
928:bd[elete][!] [N]
929 Unload buffer [N] (default: current buffer) and delete it from
930 the buffer list. If the buffer was changed, this fails,
931 unless when [!] is specified, in which case changes are lost.
932 The file remains unaffected. Any windows for this buffer are
933 closed. If buffer [N] is the current buffer, another buffer
934 will be displayed instead. This is the most recent entry in
935 the jump list that points into a loaded buffer.
936 Actually, the buffer isn't completely deleted, it is removed
937 from the buffer list |unlisted-buffer| and option values,
938 variables and mappings/abbreviations for the buffer are
939 cleared.
940
941:bdelete[!] {bufname} *E93* *E94*
942 Like ":bdelete[!] [N]", but buffer given by name. Note that a
943 buffer whose name is a number cannot be referenced by that
944 name; use the buffer number instead. Insert a backslash
945 before a space in a buffer name.
946
947:bdelete[!] N1 N2 ...
948 Do ":bdelete[!]" for buffer N1, N2, etc. The arguments can be
949 buffer numbers or buffer names (but not buffer names that are
950 a number). Insert a backslash before a space in a buffer
951 name.
952
953:N,Mbdelete[!] Do ":bdelete[!]" for all buffers in the range N to M
954 |inclusive|.
955
956:[N]bw[ipeout][!] *:bw* *:bwipe* *:bwipeout* *E517*
957:bw[ipeout][!] {bufname}
958:N,Mbw[ipeout][!]
959:bw[ipeout][!] N1 N2 ...
Bram Moolenaardf1bdc92006-02-23 21:32:16 +0000960 Like |:bdelete|, but really delete the buffer. Everything
961 related to the buffer is lost. All marks in this buffer
962 become invalid, option settings are lost, etc. Don't use this
963 unless you know what you are doing.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000964
965:[N]bun[load][!] *:bun* *:bunload* *E515*
966:bun[load][!] [N]
967 Unload buffer [N] (default: current buffer). The memory
968 allocated for this buffer will be freed. The buffer remains
969 in the buffer list.
970 If the buffer was changed, this fails, unless when [!] is
971 specified, in which case the changes are lost.
972 Any windows for this buffer are closed. If buffer [N] is the
973 current buffer, another buffer will be displayed instead.
974 This is the most recent entry in the jump list that points
975 into a loaded buffer.
976
977:bunload[!] {bufname}
978 Like ":bunload[!] [N]", but buffer given by name. Note that a
979 buffer whose name is a number cannot be referenced by that
980 name; use the buffer number instead. Insert a backslash
981 before a space in a buffer name.
982
983:N,Mbunload[!] Do ":bunload[!]" for all buffers in the range N to M
984 |inclusive|.
985
986:bunload[!] N1 N2 ...
987 Do ":bunload[!]" for buffer N1, N2, etc. The arguments can be
988 buffer numbers or buffer names (but not buffer names that are
989 a number). Insert a backslash before a space in a buffer
990 name.
991
992:[N]b[uffer][!] [N] *:b* *:bu* *:buf* *:buffer* *E86*
993 Edit buffer [N] from the buffer list. If [N] is not given,
994 the current buffer remains being edited. See |:buffer-!| for
995 [!]. This will also edit a buffer that is not in the buffer
996 list, without setting the 'buflisted' flag.
997
998:[N]b[uffer][!] {filename}
999 Edit buffer for {filename} from the buffer list. See
1000 |:buffer-!| for [!]. This will also edit a buffer that is not
1001 in the buffer list, without setting the 'buflisted' flag.
1002
1003:[N]sb[uffer] [N] *:sb* *:sbuffer*
1004 Split window and edit buffer [N] from the buffer list. If [N]
1005 is not given, the current buffer is edited. Respects the
1006 "useopen" setting of 'switchbuf' when splitting. This will
1007 also edit a buffer that is not in the buffer list, without
1008 setting the 'buflisted' flag.
1009
1010:[N]sb[uffer] {filename}
1011 Split window and edit buffer for {filename} from the buffer
1012 list. This will also edit a buffer that is not in the buffer
1013 list, without setting the 'buflisted' flag.
Bram Moolenaar280f1262006-01-30 00:14:18 +00001014 Note: If what you want to do is split the buffer, make a copy
1015 under another name, you can do it this way: >
1016 :w foobar | sp #
Bram Moolenaar071d4272004-06-13 20:20:40 +00001017
Bram Moolenaar280f1262006-01-30 00:14:18 +00001018:[N]bn[ext][!] [N] *:bn* *:bnext* *E87*
Bram Moolenaar071d4272004-06-13 20:20:40 +00001019 Go to [N]th next buffer in buffer list. [N] defaults to one.
1020 Wraps around the end of the buffer list.
1021 See |:buffer-!| for [!].
1022 If you are in a help buffer, this takes you to the next help
1023 buffer (if there is one). Similarly, if you are in a normal
1024 (non-help) buffer, this takes you to the next normal buffer.
1025 This is so that if you have invoked help, it doesn't get in
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +00001026 the way when you're browsing code/text buffers. The next three
Bram Moolenaar071d4272004-06-13 20:20:40 +00001027 commands also work like this.
1028
1029 *:sbn* *:sbnext*
1030:[N]sbn[ext] [N]
1031 Split window and go to [N]th next buffer in buffer list.
1032 Wraps around the end of the buffer list. Uses 'switchbuf'
1033
1034:[N]bN[ext][!] [N] *:bN* *:bNext* *:bp* *:bprevious* *E88*
1035:[N]bp[revious][!] [N]
1036 Go to [N]th previous buffer in buffer list. [N] defaults to
1037 one. Wraps around the start of the buffer list.
1038 See |:buffer-!| for [!] and 'switchbuf'.
1039
1040:[N]sbN[ext] [N] *:sbN* *:sbNext* *:sbp* *:sbprevious*
1041:[N]sbp[revious] [N]
1042 Split window and go to [N]th previous buffer in buffer list.
1043 Wraps around the start of the buffer list.
1044 Uses 'switchbuf'.
1045
1046 *:br* *:brewind*
1047:br[ewind][!] Go to first buffer in buffer list. If the buffer list is
1048 empty, go to the first unlisted buffer.
1049 See |:buffer-!| for [!].
1050
1051 *:bf* *:bfirst*
1052:bf[irst] Same as ":brewind".
1053
1054 *:sbr* *:sbrewind*
1055:sbr[ewind] Split window and go to first buffer in buffer list. If the
1056 buffer list is empty, go to the first unlisted buffer.
1057 Respects the 'switchbuf' option.
1058
1059 *:sbf* *:sbfirst*
1060:sbf[irst] Same as ":sbrewind".
1061
1062 *:bl* *:blast*
1063:bl[ast][!] Go to last buffer in buffer list. If the buffer list is
1064 empty, go to the last unlisted buffer.
1065 See |:buffer-!| for [!].
1066
1067 *:sbl* *:sblast*
1068:sbl[ast] Split window and go to last buffer in buffer list. If the
1069 buffer list is empty, go to the last unlisted buffer.
1070 Respects 'switchbuf' option.
1071
1072:[N]bm[odified][!] [N] *:bm* *:bmodified* *E84*
1073 Go to [N]th next modified buffer. Note: this command also
1074 finds unlisted buffers. If there is no modified buffer the
1075 command fails.
1076
1077:[N]sbm[odified] [N] *:sbm* *:sbmodified*
1078 Split window and go to [N]th next modified buffer.
1079 Respects 'switchbuf' option.
1080 Note: this command also finds buffers not in the buffer list.
1081
1082:[N]unh[ide] [N] *:unh* *:unhide* *:sun* *:sunhide*
1083:[N]sun[hide] [N]
1084 Rearrange the screen to open one window for each loaded buffer
1085 in the buffer list. When a count is given, this is the
1086 maximum number of windows to open.
1087
1088:[N]ba[ll] [N] *:ba* *:ball* *:sba* *:sball*
1089:[N]sba[ll] [N] Rearrange the screen to open one window for each buffer in
1090 the buffer list. When a count is given, this is the maximum
1091 number of windows to open. 'winheight' also limits the number
1092 of windows opened ('winwidth' if |:vertical| was prepended).
1093 Buf/Win Enter/Leave autocommands are not executed for the new
1094 windows here, that's only done when they are really entered.
Bram Moolenaarfd2ac762006-03-01 22:09:21 +00001095 When the |:tab| modifier is used new windows are opended in a
1096 new tab, up to 'tabpagemax'.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001097
1098Note: All the commands above that start editing another buffer, keep the
1099'readonly' flag as it was. This differs from the ":edit" command, which sets
1100the 'readonly' flag each time the file is read.
1101
1102==============================================================================
110312. Special kinds of buffers *special-buffers*
1104
1105Instead of containing the text of a file, buffers can also be used for other
1106purposes. A few options can be set to change the behavior of a buffer:
1107 'bufhidden' what happens when the buffer is no longer displayed
1108 in a window.
1109 'buftype' what kind of a buffer this is
1110 'swapfile' whether the buffer will have a swap file
1111 'buflisted' buffer shows up in the buffer list
1112
1113A few useful kinds of a buffer:
1114
Bram Moolenaar280f1262006-01-30 00:14:18 +00001115quickfix Used to contain the error list or the location list. See
1116 |:cwindow| and |:lwindow|. This command sets the 'buftype'
1117 option to "quickfix". You are not supposed to change this!
1118 'swapfile' is off.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001119
1120help Contains a help file. Will only be created with the |:help|
1121 command. The flag that indicates a help buffer is internal
1122 and can't be changed. The 'buflisted' option will be reset
1123 for a help buffer.
1124
Bram Moolenaar677ee682005-01-27 14:41:15 +00001125directory Displays directory contents. Can be used by a file explorer
Bram Moolenaar071d4272004-06-13 20:20:40 +00001126 plugin. The buffer is created with these settings: >
Bram Moolenaar8ada17c2006-01-19 22:16:24 +00001127 :setlocal buftype=nowrite
1128 :setlocal bufhidden=delete
1129 :setlocal noswapfile
Bram Moolenaar071d4272004-06-13 20:20:40 +00001130< The buffer name is the name of the directory and is adjusted
1131 when using the |:cd| command.
1132
1133scratch Contains text that can be discarded at any time. It is kept
1134 when closing the window, it must be deleted explicitly.
1135 Settings: >
Bram Moolenaar8ada17c2006-01-19 22:16:24 +00001136 :setlocal buftype=nofile
1137 :setlocal bufhidden=hide
1138 :setlocal noswapfile
Bram Moolenaar071d4272004-06-13 20:20:40 +00001139< The buffer name can be used to identify the buffer.
1140
1141 *unlisted-buffer*
1142unlisted The buffer is not in the buffer list. It is not used for
1143 normal editing, but to show a help file, remember a file name
1144 or marks. The ":bdelete" command will also set this option,
1145 thus it doesn't completely delete the buffer. Settings: >
Bram Moolenaar8ada17c2006-01-19 22:16:24 +00001146 :setlocal nobuflisted
Bram Moolenaar071d4272004-06-13 20:20:40 +00001147<
1148
1149 vim:tw=78:ts=8:ft=help:norl: