blob: 2a31526e87c6edec31cac2d88be9a340b651b4a0 [file] [log] [blame]
Bram Moolenaar942db232021-02-13 18:14:48 +01001*windows.txt* For Vim version 8.2. Last change: 2021 Feb 06
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
Bram Moolenaar071d4272004-06-13 20:20:40 +000029{not able to use multiple windows when the |+windows| feature was disabled at
30compile time}
Bram Moolenaar071d4272004-06-13 20:20:40 +000031
32==============================================================================
Bram Moolenaar910f66f2006-04-05 20:41:53 +0000331. Introduction *windows-intro* *window*
Bram Moolenaar071d4272004-06-13 20:20:40 +000034
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +010035Summary:
36 A buffer is the in-memory text of a file.
37 A window is a viewport on a buffer.
38 A tab page is a collection of windows.
39
Bram Moolenaar071d4272004-06-13 20:20:40 +000040A window is a viewport onto a buffer. You can use multiple windows on one
41buffer, or several windows on different buffers.
42
43A buffer is a file loaded into memory for editing. The original file remains
44unchanged until you write the buffer to the file.
45
46A buffer can be in one of three states:
47
48 *active-buffer*
49active: The buffer is displayed in a window. If there is a file for this
50 buffer, it has been read into the buffer. The buffer may have been
51 modified since then and thus be different from the file.
52 *hidden-buffer*
53hidden: The buffer is not displayed. If there is a file for this buffer, it
54 has been read into the buffer. Otherwise it's the same as an active
55 buffer, you just can't see it.
56 *inactive-buffer*
57inactive: The buffer is not displayed and does not contain anything. Options
58 for the buffer are remembered if the file was once loaded. It can
59 contain marks from the |viminfo| file. But the buffer doesn't
60 contain text.
61
62In a table:
63
64state displayed loaded ":buffers" ~
65 in window shows ~
66active yes yes 'a'
67hidden no yes 'h'
68inactive no no ' '
69
70Note: All CTRL-W commands can also be executed with |:wincmd|, for those
71places where a Normal mode command can't be used or is inconvenient.
72
Bram Moolenaar7e8fd632006-02-18 22:14:51 +000073The main Vim window can hold several split windows. There are also tab pages
74|tab-page|, each of which can hold multiple windows.
Bram Moolenaare4a3bcf2016-08-26 19:52:37 +020075 *window-ID* *winid* *windowid*
Bram Moolenaarc95a3022016-06-12 23:01:46 +020076Each window has a unique identifier called the window ID. This identifier
77will not change within a Vim session. The |win_getid()| and |win_id2tabwin()|
78functions can be used to convert between the window/tab number and the
79identifier. There is also the window number, which may change whenever
80windows are opened or closed, see |winnr()|.
Bram Moolenaarba3ff532018-11-04 14:45:49 +010081The window number is only valid in one specific tab. The window ID is valid
82across tabs. For most functions that take a window ID or a window number, the
83window number only applies to the current tab, while the window ID can refer
84to a window in any tab.
Bram Moolenaarc95a3022016-06-12 23:01:46 +020085
86Each buffer has a unique number and the number will not change within a Vim
87session. The |bufnr()| and |bufname()| functions can be used to convert
88between a buffer name and the buffer number.
89
Bram Moolenaar071d4272004-06-13 20:20:40 +000090==============================================================================
912. Starting Vim *windows-starting*
92
93By default, Vim starts with one window, just like Vi.
94
95The "-o" and "-O" arguments to Vim can be used to open a window for each file
96in the argument list. The "-o" argument will split the windows horizontally;
97the "-O" argument will split the windows vertically. If both "-o" and "-O"
98are given, the last one encountered will be used to determine the split
99orientation. For example, this will open three windows, split horizontally: >
100 vim -o file1 file2 file3
101
102"-oN", where N is a decimal number, opens N windows split horizontally. If
103there are more file names than windows, only N windows are opened and some
104files do not get a window. If there are more windows than file names, the
105last few windows will be editing empty buffers. Similarly, "-ON" opens N
106windows split vertically, with the same restrictions.
107
108If there are many file names, the windows will become very small. You might
109want to set the 'winheight' and/or 'winwidth' options to create a workable
110situation.
111
112Buf/Win Enter/Leave |autocommand|s are not executed when opening the new
113windows and reading the files, that's only done when they are really entered.
114
115 *status-line*
116A status line will be used to separate windows. The 'laststatus' option tells
117when the last window also has a status line:
118 'laststatus' = 0 never a status line
119 'laststatus' = 1 status line if there is more than one window
120 'laststatus' = 2 always a status line
121
122You can change the contents of the status line with the 'statusline' option.
Bram Moolenaarb5bf5b82004-12-24 14:35:23 +0000123This option can be local to the window, so that you can have a different
124status line in each window.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000125
126Normally, inversion is used to display the status line. This can be changed
127with the 's' character in the 'highlight' option. For example, "sb" sets it to
128bold characters. If no highlighting is used for the status line ("sn"), the
129'^' character is used for the current window, and '=' for other windows. If
130the mouse is supported and enabled with the 'mouse' option, a status line can
131be dragged to resize windows.
132
133Note: If you expect your status line to be in reverse video and it isn't,
134check if the 'highlight' option contains "si". In version 3.0, this meant to
135invert the status line. Now it should be "sr", reverse the status line, as
136"si" now stands for italic! If italic is not available on your terminal, the
137status line is inverted anyway; you will only see this problem on terminals
138that have termcap codes for italics.
139
Bram Moolenaar65e0d772020-06-14 17:29:55 +0200140 *filler-lines*
141The lines after the last buffer line in a window are called filler lines.
142These lines start with a tilde (~) character. By default, these are
143highlighted as NonText (|hl-NonText|). The EndOfBuffer highlight group
144(|hl-EndOfBuffer|) can be used to change the highlighting of filler lines.
145
Bram Moolenaar071d4272004-06-13 20:20:40 +0000146==============================================================================
1473. Opening and closing a window *opening-window* *E36*
148
149CTRL-W s *CTRL-W_s*
150CTRL-W S *CTRL-W_S*
151CTRL-W CTRL-S *CTRL-W_CTRL-S*
Bram Moolenaar7b449342014-03-25 13:03:48 +0100152:[N]sp[lit] [++opt] [+cmd] [file] *:sp* *:split*
Bram Moolenaar071d4272004-06-13 20:20:40 +0000153 Split current window in two. The result is two viewports on
Bram Moolenaar7b449342014-03-25 13:03:48 +0100154 the same file.
Bram Moolenaar664f3cf2019-12-07 16:03:51 +0100155
Bram Moolenaar7b449342014-03-25 13:03:48 +0100156 Make the new window N high (default is to use half the height
157 of the current window). Reduces the current window height to
158 create room (and others, if the 'equalalways' option is set,
159 'eadirection' isn't "hor", and one of them is higher than the
160 current or the new window).
161
162 If [file] is given it will be edited in the new window. If it
163 is not loaded in any buffer, it will be read. Else the new
164 window will use the already loaded buffer.
165
Bram Moolenaar071d4272004-06-13 20:20:40 +0000166 Note: CTRL-S does not work on all terminals and might block
167 further input, use CTRL-Q to get going again.
168 Also see |++opt| and |+cmd|.
Bram Moolenaar54775062019-07-31 21:07:14 +0200169 *E242*
170 Be careful when splitting a window in an autocommand, it may
171 mess up the window layout if this happens while making other
172 window layout changes.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000173
174CTRL-W CTRL-V *CTRL-W_CTRL-V*
175CTRL-W v *CTRL-W_v*
176:[N]vs[plit] [++opt] [+cmd] [file] *:vs* *:vsplit*
Bram Moolenaar67f71312007-08-12 14:55:56 +0000177 Like |:split|, but split vertically. The windows will be
178 spread out horizontally if
179 1. a width was not specified,
180 2. 'equalalways' is set,
181 3. 'eadirection' isn't "ver", and
Bram Moolenaarc1a11ed2008-06-24 22:09:24 +0000182 4. one of the other windows is wider than the current or new
Bram Moolenaar67f71312007-08-12 14:55:56 +0000183 window.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000184 Note: In other places CTRL-Q does the same as CTRL-V, but here
185 it doesn't!
186
187CTRL-W n *CTRL-W_n*
188CTRL-W CTRL_N *CTRL-W_CTRL-N*
189:[N]new [++opt] [+cmd] *:new*
190 Create a new window and start editing an empty file in it.
191 Make new window N high (default is to use half the existing
192 height). Reduces the current window height to create room (and
193 others, if the 'equalalways' option is set and 'eadirection'
194 isn't "hor").
195 Also see |++opt| and |+cmd|.
196 If 'fileformats' is not empty, the first format given will be
197 used for the new buffer. If 'fileformats' is empty, the
198 'fileformat' of the current buffer is used. This can be
199 overridden with the |++opt| argument.
200 Autocommands are executed in this order:
201 1. WinLeave for the current window
202 2. WinEnter for the new window
203 3. BufLeave for the current buffer
204 4. BufEnter for the new buffer
Bram Moolenaar53bfca22012-04-13 23:04:47 +0200205 This behaves like a ":split" first, and then an ":enew"
206 command.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000207
Bram Moolenaar071d4272004-06-13 20:20:40 +0000208:[N]new [++opt] [+cmd] {file}
209:[N]sp[lit] [++opt] [+cmd] {file} *:split_f*
Bram Moolenaar53bfca22012-04-13 23:04:47 +0200210 Create a new window and start editing file {file} in it. This
Bram Moolenaar942db232021-02-13 18:14:48 +0100211 behaves almost like a ":split" first, and then an ":edit"
212 command, but the alternate file name in the original window is
213 set to {file}.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000214 If [+cmd] is given, execute the command when the file has been
215 loaded |+cmd|.
216 Also see |++opt|.
217 Make new window N high (default is to use half the existing
218 height). Reduces the current window height to create room
219 (and others, if the 'equalalways' option is set).
220
Bram Moolenaar4072ba52020-12-23 13:56:35 +0100221:[N]vne[w] [++opt] [+cmd] [file] *:vne* *:vnew*
222 Like |:new|, but split vertically. If 'equalalways' is set
223 and 'eadirection' isn't "ver" the windows will be spread out
224 horizontally, unless a width was specified.
225
Bram Moolenaarff781552020-03-19 20:37:11 +0100226:[N]sv[iew] [++opt] [+cmd] [file] *:sv* *:sview* *splitview*
Bram Moolenaar071d4272004-06-13 20:20:40 +0000227 Same as ":split", but set 'readonly' option for this buffer.
228
Bram Moolenaar61da1bf2019-06-06 12:14:49 +0200229:[N]sf[ind] [++opt] [+cmd] {file} *:sf* *:sfi* *:sfind* *splitfind*
Bram Moolenaarc236c162008-07-13 17:41:49 +0000230 Same as ":split", but search for {file} in 'path' like in
231 |:find|. Doesn't split if {file} is not found.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000232
233CTRL-W CTRL-^ *CTRL-W_CTRL-^* *CTRL-W_^*
Bram Moolenaar1bbb6192018-11-10 16:02:01 +0100234CTRL-W ^ Split the current window in two and edit the alternate file.
235 When a count N is given, split the current window and edit
236 buffer N. Similar to ":sp #" and ":sp #N", but it allows the
237 other buffer to be unnamed. This command matches the behavior
238 of |CTRL-^|, except that it splits a window first.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000239
Bram Moolenaarb6e0ec62017-07-23 22:12:20 +0200240 *CTRL-W_:*
Bram Moolenaard2f3a8b2018-06-19 14:35:59 +0200241CTRL-W : Does the same as typing |:| - enter a command line. Useful in a
Bram Moolenaarb6e0ec62017-07-23 22:12:20 +0200242 terminal window, where all Vim commands must be preceded with
Bram Moolenaard2f3a8b2018-06-19 14:35:59 +0200243 CTRL-W or 'termwinkey'.
Bram Moolenaarb6e0ec62017-07-23 22:12:20 +0200244
Bram Moolenaar071d4272004-06-13 20:20:40 +0000245Note that the 'splitbelow' and 'splitright' options influence where a new
246window will appear.
247
248 *:vert* *:vertical*
249:vert[ical] {cmd}
250 Execute {cmd}. If it contains a command that splits a window,
251 it will be split vertically.
Bram Moolenaar756ec0f2007-05-05 17:59:48 +0000252 Doesn't work for |:execute| and |:normal|.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000253
254:lefta[bove] {cmd} *:lefta* *:leftabove*
255:abo[veleft] {cmd} *:abo* *:aboveleft*
256 Execute {cmd}. If it contains a command that splits a window,
257 it will be opened left (vertical split) or above (horizontal
258 split) the current window. Overrules 'splitbelow' and
259 'splitright'.
Bram Moolenaar756ec0f2007-05-05 17:59:48 +0000260 Doesn't work for |:execute| and |:normal|.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000261
262:rightb[elow] {cmd} *:rightb* *:rightbelow*
263:bel[owright] {cmd} *:bel* *:belowright*
264 Execute {cmd}. If it contains a command that splits a window,
265 it will be opened right (vertical split) or below (horizontal
266 split) the current window. Overrules 'splitbelow' and
267 'splitright'.
Bram Moolenaar756ec0f2007-05-05 17:59:48 +0000268 Doesn't work for |:execute| and |:normal|.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000269
270 *:topleft* *E442*
271:to[pleft] {cmd}
272 Execute {cmd}. If it contains a command that splits a window,
273 it will appear at the top and occupy the full width of the Vim
274 window. When the split is vertical the window appears at the
275 far left and occupies the full height of the Vim window.
Bram Moolenaar756ec0f2007-05-05 17:59:48 +0000276 Doesn't work for |:execute| and |:normal|.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000277
Bram Moolenaarbc8801c2016-08-02 21:04:33 +0200278 *:bo* *:botright*
Bram Moolenaar071d4272004-06-13 20:20:40 +0000279:bo[tright] {cmd}
280 Execute {cmd}. If it contains a command that splits a window,
281 it will appear at the bottom and occupy the full width of the
282 Vim window. When the split is vertical the window appears at
283 the far right and occupies the full height of the Vim window.
Bram Moolenaar756ec0f2007-05-05 17:59:48 +0000284 Doesn't work for |:execute| and |:normal|.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000285
286These command modifiers can be combined to make a vertically split window
287occupy the full height. Example: >
Bram Moolenaar5302d9e2011-09-14 17:55:08 +0200288 :vertical topleft split tags
Bram Moolenaar071d4272004-06-13 20:20:40 +0000289Opens a vertically split, full-height window on the "tags" file at the far
290left of the Vim window.
291
292
293Closing a window
294----------------
295
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100296:q[uit]
297:{count}q[uit]
Bram Moolenaar071d4272004-06-13 20:20:40 +0000298CTRL-W q *CTRL-W_q*
299CTRL-W CTRL-Q *CTRL-W_CTRL-Q*
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100300 Without {count}: Quit the current window. If {count} is
301 given quit the {count} window.
Bram Moolenaar47e13952020-05-12 22:49:12 +0200302 *edit-window*
303 When quitting the last edit window (not counting help or
304 preview windows), exit Vim.
Bram Moolenaar664f3cf2019-12-07 16:03:51 +0100305
Bram Moolenaar071d4272004-06-13 20:20:40 +0000306 When 'hidden' is set, and there is only one window for the
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100307 current buffer, it becomes hidden. When 'hidden' is not set,
308 and there is only one window for the current buffer, and the
309 buffer was changed, the command fails.
Bram Moolenaar664f3cf2019-12-07 16:03:51 +0100310
Bram Moolenaared32d942014-12-06 23:33:00 +0100311 (Note: CTRL-Q does not work on all terminals).
Bram Moolenaar664f3cf2019-12-07 16:03:51 +0100312
Bram Moolenaared32d942014-12-06 23:33:00 +0100313 If [count] is greater than the last window number the last
314 window will be closed: >
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100315 :1quit " quit the first window
316 :$quit " quit the last window
317 :9quit " quit the last window
Bram Moolenaar46fceaa2016-10-23 21:21:08 +0200318 " if there are fewer than 9 windows opened
319 :-quit " quit the previous window
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100320 :+quit " quit the next window
Bram Moolenaared32d942014-12-06 23:33:00 +0100321 :+2quit " quit the second next window
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100322<
Bram Moolenaar47e13952020-05-12 22:49:12 +0200323 When closing a help window, and this is not the only window,
324 Vim will try to restore the previous window layout, see
325 |:helpclose|.
Bram Moolenaar96f45c02019-10-26 19:53:45 +0200326
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100327:q[uit]!
328:{count}q[uit]!
329 Without {count}: Quit the current window. If {count} is
330 given quit the {count} window.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000331
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100332 If this was the last window for a buffer, any changes to that
333 buffer are lost. When quitting the last window (not counting
334 help windows), exit Vim. The contents of the buffer are lost,
335 even when 'hidden' is set.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000336
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100337:clo[se][!]
338:{count}clo[se][!]
Bram Moolenaar071d4272004-06-13 20:20:40 +0000339CTRL-W c *CTRL-W_c* *:clo* *:close*
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100340 Without {count}: Close the current window. If {count} is
341 given close the {count} window.
342
343 When the 'hidden' option is set, or when the buffer was
344 changed and the [!] is used, the buffer becomes hidden (unless
345 there is another window editing it).
Bram Moolenaar664f3cf2019-12-07 16:03:51 +0100346
Bram Moolenaar47e13952020-05-12 22:49:12 +0200347 When there is only one |edit-window| in the current tab page
348 and there is another tab page, this closes the current tab
349 page. |tab-page|.
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100350
Bram Moolenaar071d4272004-06-13 20:20:40 +0000351 This command fails when: *E444*
352 - There is only one window on the screen.
353 - When 'hidden' is not set, [!] is not used, the buffer has
354 changes, and there is no other window on this buffer.
355 Changes to the buffer are not written and won't get lost, so
356 this is a "safe" command.
357
358CTRL-W CTRL-C *CTRL-W_CTRL-C*
359 You might have expected that CTRL-W CTRL-C closes the current
360 window, but that does not work, because the CTRL-C cancels the
361 command.
362
363 *:hide*
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100364:hid[e]
365:{count}hid[e]
Bram Moolenaarc572da52017-08-27 16:52:01 +0200366 Without {count}: Quit the current window, unless it is the
367 last window on the screen.
368 If {count} is given quit the {count} window.
Bram Moolenaar664f3cf2019-12-07 16:03:51 +0100369
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100370 The buffer becomes hidden (unless there is another window
Bram Moolenaared32d942014-12-06 23:33:00 +0100371 editing it or 'bufhidden' is "unload", "delete" or "wipe").
372 If the window is the last one in the current tab page the tab
Bram Moolenaar664f3cf2019-12-07 16:03:51 +0100373 page is closed. |tab-page|
374
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100375 The value of 'hidden' is irrelevant for this command. Changes
376 to the buffer are not written and won't get lost, so this is a
377 "safe" command.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000378
379:hid[e] {cmd} Execute {cmd} with 'hidden' is set. The previous value of
380 'hidden' is restored after {cmd} has been executed.
381 Example: >
382 :hide edit Makefile
383< This will edit "Makefile", and hide the current buffer if it
384 has any changes.
385
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100386:on[ly][!]
387:{count}on[ly][!]
Bram Moolenaar071d4272004-06-13 20:20:40 +0000388CTRL-W o *CTRL-W_o* *E445*
389CTRL-W CTRL-O *CTRL-W_CTRL-O* *:on* *:only*
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100390 Make the current window the only one on the screen. All other
391 windows are closed. For {count} see |:quit| command.
Bram Moolenaar664f3cf2019-12-07 16:03:51 +0100392
Bram Moolenaar071d4272004-06-13 20:20:40 +0000393 When the 'hidden' option is set, all buffers in closed windows
394 become hidden.
Bram Moolenaar664f3cf2019-12-07 16:03:51 +0100395
Bram Moolenaar071d4272004-06-13 20:20:40 +0000396 When 'hidden' is not set, and the 'autowrite' option is set,
397 modified buffers are written. Otherwise, windows that have
398 buffers that are modified are not removed, unless the [!] is
399 given, then they become hidden. But modified buffers are
400 never abandoned, so changes cannot get lost.
401
402==============================================================================
4034. Moving cursor to other windows *window-move-cursor*
404
405CTRL-W <Down> *CTRL-W_<Down>*
406CTRL-W CTRL-J *CTRL-W_CTRL-J* *CTRL-W_j*
407CTRL-W j Move cursor to Nth window below current one. Uses the cursor
408 position to select between alternatives.
409
410CTRL-W <Up> *CTRL-W_<Up>*
411CTRL-W CTRL-K *CTRL-W_CTRL-K* *CTRL-W_k*
412CTRL-W k Move cursor to Nth window above current one. Uses the cursor
413 position to select between alternatives.
414
415CTRL-W <Left> *CTRL-W_<Left>*
416CTRL-W CTRL-H *CTRL-W_CTRL-H*
417CTRL-W <BS> *CTRL-W_<BS>* *CTRL-W_h*
418CTRL-W h Move cursor to Nth window left of current one. Uses the
419 cursor position to select between alternatives.
420
421CTRL-W <Right> *CTRL-W_<Right>*
422CTRL-W CTRL-L *CTRL-W_CTRL-L* *CTRL-W_l*
423CTRL-W l Move cursor to Nth window right of current one. Uses the
424 cursor position to select between alternatives.
425
426CTRL-W w *CTRL-W_w* *CTRL-W_CTRL-W*
427CTRL-W CTRL-W Without count: move cursor to window below/right of the
428 current one. If there is no window below or right, go to
429 top-left window.
430 With count: go to Nth window (windows are numbered from
431 top-left to bottom-right). To obtain the window number see
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100432 |bufwinnr()| and |winnr()|. When N is larger than the number
433 of windows go to the last window.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000434
435 *CTRL-W_W*
436CTRL-W W Without count: move cursor to window above/left of current
437 one. If there is no window above or left, go to bottom-right
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100438 window. With count: go to Nth window, like with CTRL-W w.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000439
440CTRL-W t *CTRL-W_t* *CTRL-W_CTRL-T*
441CTRL-W CTRL-T Move cursor to top-left window.
442
443CTRL-W b *CTRL-W_b* *CTRL-W_CTRL-B*
444CTRL-W CTRL-B Move cursor to bottom-right window.
445
446CTRL-W p *CTRL-W_p* *CTRL-W_CTRL-P*
447CTRL-W CTRL-P Go to previous (last accessed) window.
448
449 *CTRL-W_P* *E441*
450CTRL-W P Go to preview window. When there is no preview window this is
451 an error.
452 {not available when compiled without the |+quickfix| feature}
453
454If Visual mode is active and the new window is not for the same buffer, the
455Visual mode is ended. If the window is on the same buffer, the cursor
456position is set to keep the same Visual area selected.
457
458 *:winc* *:wincmd*
459These commands can also be executed with ":wincmd":
460
461:[count]winc[md] {arg}
462 Like executing CTRL-W [count] {arg}. Example: >
463 :wincmd j
464< Moves to the window below the current one.
465 This command is useful when a Normal mode cannot be used (for
466 the |CursorHold| autocommand event). Or when a Normal mode
467 command is inconvenient.
468 The count can also be a window number. Example: >
469 :exe nr . "wincmd w"
470< This goes to window "nr".
471
472==============================================================================
4735. Moving windows around *window-moving*
474
475CTRL-W r *CTRL-W_r* *CTRL-W_CTRL-R* *E443*
476CTRL-W CTRL-R Rotate windows downwards/rightwards. The first window becomes
477 the second one, the second one becomes the third one, etc.
478 The last window becomes the first window. The cursor remains
479 in the same window.
480 This only works within the row or column of windows that the
481 current window is in.
482
483 *CTRL-W_R*
484CTRL-W R Rotate windows upwards/leftwards. The second window becomes
485 the first one, the third one becomes the second one, etc. The
486 first window becomes the last window. The cursor remains in
487 the same window.
488 This only works within the row or column of windows that the
489 current window is in.
490
491CTRL-W x *CTRL-W_x* *CTRL-W_CTRL-X*
492CTRL-W CTRL-X Without count: Exchange current window with next one. If there
493 is no next window, exchange with previous window.
494 With count: Exchange current window with Nth window (first
495 window is 1). The cursor is put in the other window.
496 When vertical and horizontal window splits are mixed, the
497 exchange is only done in the row or column of windows that the
498 current window is in.
499
500The following commands can be used to change the window layout. For example,
501when there are two vertically split windows, CTRL-W K will change that in
502horizontally split windows. CTRL-W H does it the other way around.
503
504 *CTRL-W_K*
505CTRL-W K Move the current window to be at the very top, using the full
506 width of the screen. This works like closing the current
507 window and then creating another one with ":topleft split",
508 except that the current window contents is used for the new
509 window.
510
511 *CTRL-W_J*
512CTRL-W J Move the current window to be at the very bottom, using the
513 full width of the screen. This works like closing the current
514 window and then creating another one with ":botright split",
515 except that the current window contents is used for the new
516 window.
517
518 *CTRL-W_H*
519CTRL-W H Move the current window to be at the far left, using the
520 full height of the screen. This works like closing the
521 current window and then creating another one with
522 ":vert topleft split", except that the current window contents
523 is used for the new window.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000524
525 *CTRL-W_L*
526CTRL-W L Move the current window to be at the far right, using the full
527 height of the screen. This works like closing the
528 current window and then creating another one with
529 ":vert botright split", except that the current window
530 contents is used for the new window.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000531
Bram Moolenaar4c3f5362006-04-11 21:38:50 +0000532 *CTRL-W_T*
533CTRL-W T Move the current window to a new tab page. This fails if
534 there is only one window in the current tab page.
535 When a count is specified the new tab page will be opened
536 before the tab page with this index. Otherwise it comes after
537 the current tab page.
538
Bram Moolenaar071d4272004-06-13 20:20:40 +0000539==============================================================================
5406. Window resizing *window-resize*
541
542 *CTRL-W_=*
543CTRL-W = Make all windows (almost) equally high and wide, but use
544 'winheight' and 'winwidth' for the current window.
Bram Moolenaar756ec0f2007-05-05 17:59:48 +0000545 Windows with 'winfixheight' set keep their height and windows
546 with 'winfixwidth' set keep their width.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000547
548:res[ize] -N *:res* *:resize* *CTRL-W_-*
549CTRL-W - Decrease current window height by N (default 1).
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200550 If used after |:vertical|: decrease width by N.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000551
552:res[ize] +N *CTRL-W_+*
553CTRL-W + Increase current window height by N (default 1).
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200554 If used after |:vertical|: increase width by N.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000555
556:res[ize] [N]
557CTRL-W CTRL-_ *CTRL-W_CTRL-_* *CTRL-W__*
558CTRL-W _ Set current window height to N (default: highest possible).
559
Bram Moolenaar1ff14ba2019-11-02 14:09:23 +0100560:{winnr}res[ize] [+-]N
561 Like `:resize` above, but apply the size to window {winnr}
562 instead of the current window.
563
Bram Moolenaar071d4272004-06-13 20:20:40 +0000564z{nr}<CR> Set current window height to {nr}.
565
566 *CTRL-W_<*
567CTRL-W < Decrease current window width by N (default 1).
568
569 *CTRL-W_>*
570CTRL-W > Increase current window width by N (default 1).
571
572:vertical res[ize] [N] *:vertical-resize* *CTRL-W_bar*
573CTRL-W | Set current window width to N (default: widest possible).
574
575You can also resize a window by dragging a status line up or down with the
576mouse. Or by dragging a vertical separator line left or right. This only
577works if the version of Vim that is being used supports the mouse and the
578'mouse' option has been set to enable it.
579
580The option 'winheight' ('wh') is used to set the minimal window height of the
581current window. This option is used each time another window becomes the
582current window. If the option is '0', it is disabled. Set 'winheight' to a
583very large value, e.g., '9999', to make the current window always fill all
584available space. Set it to a reasonable value, e.g., '10', to make editing in
585the current window comfortable.
586
587The equivalent 'winwidth' ('wiw') option is used to set the minimal width of
588the current window.
589
590When the option 'equalalways' ('ea') is set, all the windows are automatically
591made the same size after splitting or closing a window. If you don't set this
592option, splitting a window will reduce the size of the current window and
593leave the other windows the same. When closing a window, the extra lines are
594given to the window above it.
595
596The 'eadirection' option limits the direction in which the 'equalalways'
597option is applied. The default "both" resizes in both directions. When the
598value is "ver" only the heights of windows are equalized. Use this when you
599have manually resized a vertically split window and want to keep this width.
600Likewise, "hor" causes only the widths of windows to be equalized.
601
602The option 'cmdheight' ('ch') is used to set the height of the command-line.
603If you are annoyed by the |hit-enter| prompt for long messages, set this
604option to 2 or 3.
605
606If there is only one window, resizing that window will also change the command
607line height. If there are several windows, resizing the current window will
608also change the height of the window below it (and sometimes the window above
609it).
610
611The minimal height and width of a window is set with 'winminheight' and
612'winminwidth'. These are hard values, a window will never become smaller.
613
614==============================================================================
6157. Argument and buffer list commands *buffer-list*
616
617 args list buffer list meaning ~
6181. :[N]argument [N] 11. :[N]buffer [N] to arg/buf N
6192. :[N]next [file ..] 12. :[N]bnext [N] to Nth next arg/buf
6203. :[N]Next [N] 13. :[N]bNext [N] to Nth previous arg/buf
6214. :[N]previous [N] 14. :[N]bprevious [N] to Nth previous arg/buf
6225. :rewind / :first 15. :brewind / :bfirst to first arg/buf
6236. :last 16. :blast to last arg/buf
6247. :all 17. :ball edit all args/buffers
625 18. :unhide edit all loaded buffers
626 19. :[N]bmod [N] to Nth modified buf
627
628 split & args list split & buffer list meaning ~
62921. :[N]sargument [N] 31. :[N]sbuffer [N] split + to arg/buf N
63022. :[N]snext [file ..] 32. :[N]sbnext [N] split + to Nth next arg/buf
63123. :[N]sNext [N] 33. :[N]sbNext [N] split + to Nth previous arg/buf
63224. :[N]sprevious [N] 34. :[N]sbprevious [N] split + to Nth previous arg/buf
63325. :srewind / :sfirst 35. :sbrewind / :sbfirst split + to first arg/buf
63426. :slast 36. :sblast split + to last arg/buf
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +000063527. :sall 37. :sball edit all args/buffers
Bram Moolenaar071d4272004-06-13 20:20:40 +0000636 38. :sunhide edit all loaded buffers
637 39. :[N]sbmod [N] split + to Nth modified buf
638
63940. :args list of arguments
64041. :buffers list of buffers
641
642The meaning of [N] depends on the command:
Bram Moolenaar24a98a02017-09-27 22:23:55 +0200643 [N] is the number of buffers to go forward/backward on 2/12/22/32,
644 3/13/23/33, and 4/14/24/34
Bram Moolenaar071d4272004-06-13 20:20:40 +0000645 [N] is an argument number, defaulting to current argument, for 1 and 21
646 [N] is a buffer number, defaulting to current buffer, for 11 and 31
647 [N] is a count for 19 and 39
648
649Note: ":next" is an exception, because it must accept a list of file names
650for compatibility with Vi.
651
652
653The argument list and multiple windows
654--------------------------------------
655
656The current position in the argument list can be different for each window.
657Remember that when doing ":e file", the position in the argument list stays
658the same, but you are not editing the file at that position. To indicate
659this, the file message (and the title, if you have one) shows
660"(file (N) of M)", where "(N)" is the current position in the file list, and
661"M" the number of files in the file list.
662
663All the entries in the argument list are added to the buffer list. Thus, you
664can also get to them with the buffer list commands, like ":bnext".
665
666:[N]al[l][!] [N] *:al* *:all* *:sal* *:sall*
667:[N]sal[l][!] [N]
668 Rearrange the screen to open one window for each argument.
669 All other windows are closed. When a count is given, this is
670 the maximum number of windows to open.
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000671 With the |:tab| modifier open a tab page for each argument.
672 When there are more arguments than 'tabpagemax' further ones
673 become split windows in the last tab page.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000674 When the 'hidden' option is set, all buffers in closed windows
675 become hidden.
676 When 'hidden' is not set, and the 'autowrite' option is set,
677 modified buffers are written. Otherwise, windows that have
678 buffers that are modified are not removed, unless the [!] is
679 given, then they become hidden. But modified buffers are
680 never abandoned, so changes cannot get lost.
681 [N] is the maximum number of windows to open. 'winheight'
682 also limits the number of windows opened ('winwidth' if
683 |:vertical| was prepended).
684 Buf/Win Enter/Leave autocommands are not executed for the new
685 windows here, that's only done when they are really entered.
Bram Moolenaar54775062019-07-31 21:07:14 +0200686 If autocommands change the window layout while this command is
687 busy an error will be given. *E249*
Bram Moolenaar071d4272004-06-13 20:20:40 +0000688
689:[N]sa[rgument][!] [++opt] [+cmd] [N] *:sa* *:sargument*
690 Short for ":split | argument [N]": split window and go to Nth
691 argument. But when there is no such argument, the window is
692 not split. Also see |++opt| and |+cmd|.
693
694:[N]sn[ext][!] [++opt] [+cmd] [file ..] *:sn* *:snext*
695 Short for ":split | [N]next": split window and go to Nth next
696 argument. But when there is no next file, the window is not
697 split. Also see |++opt| and |+cmd|.
698
699:[N]spr[evious][!] [++opt] [+cmd] [N] *:spr* *:sprevious*
700:[N]sN[ext][!] [++opt] [+cmd] [N] *:sN* *:sNext*
701 Short for ":split | [N]Next": split window and go to Nth
702 previous argument. But when there is no previous file, the
703 window is not split. Also see |++opt| and |+cmd|.
704
705 *:sre* *:srewind*
706:sre[wind][!] [++opt] [+cmd]
707 Short for ":split | rewind": split window and go to first
708 argument. But when there is no argument list, the window is
709 not split. Also see |++opt| and |+cmd|.
710
711 *:sfir* *:sfirst*
Bram Moolenaar26a60b42005-02-22 08:49:11 +0000712:sfir[st] [++opt] [+cmd]
Bram Moolenaar071d4272004-06-13 20:20:40 +0000713 Same as ":srewind".
714
715 *:sla* *:slast*
716:sla[st][!] [++opt] [+cmd]
717 Short for ":split | last": split window and go to last
718 argument. But when there is no argument list, the window is
719 not split. Also see |++opt| and |+cmd|.
720
721 *:dr* *:drop*
Bram Moolenaared39e1d2008-08-09 17:55:22 +0000722:dr[op] [++opt] [+cmd] {file} ..
Bram Moolenaar071d4272004-06-13 20:20:40 +0000723 Edit the first {file} in a window.
724 - If the file is already open in a window change to that
725 window.
726 - If the file is not open in a window edit the file in the
727 current window. If the current buffer can't be |abandon|ed,
728 the window is split first.
Bram Moolenaar51628222016-12-01 23:03:28 +0100729 - Windows that are not in the argument list or are not full
730 width will be closed if possible.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000731 The |argument-list| is set, like with the |:next| command.
732 The purpose of this command is that it can be used from a
733 program that wants Vim to edit another file, e.g., a debugger.
Bram Moolenaar910f66f2006-04-05 20:41:53 +0000734 When using the |:tab| modifier each argument is opened in a
735 tab page. The last window is used if it's empty.
Bram Moolenaared39e1d2008-08-09 17:55:22 +0000736 Also see |++opt| and |+cmd|.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000737
738==============================================================================
7398. Do a command in all buffers or windows *list-repeat*
740
741 *:windo*
Bram Moolenaara162bc52015-01-07 16:54:21 +0100742:[range]windo {cmd} Execute {cmd} in each window or if [range] is given
743 only in windows for which the window number lies in
744 the [range]. It works like doing this: >
Bram Moolenaar071d4272004-06-13 20:20:40 +0000745 CTRL-W t
746 :{cmd}
747 CTRL-W w
748 :{cmd}
749 etc.
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000750< This only operates in the current tab page.
Bram Moolenaar7e8fd632006-02-18 22:14:51 +0000751 When an error is detected on one window, further
Bram Moolenaar071d4272004-06-13 20:20:40 +0000752 windows will not be visited.
753 The last window (or where an error occurred) becomes
754 the current window.
755 {cmd} can contain '|' to concatenate several commands.
756 {cmd} must not open or close windows or reorder them.
Bram Moolenaar25c9c682019-05-05 18:13:34 +0200757
Bram Moolenaaraa23b372015-09-08 18:46:31 +0200758 Also see |:tabdo|, |:argdo|, |:bufdo|, |:cdo|, |:ldo|,
759 |:cfdo| and |:lfdo|
Bram Moolenaar071d4272004-06-13 20:20:40 +0000760
761 *:bufdo*
Bram Moolenaara162bc52015-01-07 16:54:21 +0100762:[range]bufdo[!] {cmd} Execute {cmd} in each buffer in the buffer list or if
763 [range] is given only for buffers for which their
Bram Moolenaar681baaf2016-02-04 20:57:07 +0100764 buffer number is in the [range]. It works like doing
Bram Moolenaara162bc52015-01-07 16:54:21 +0100765 this: >
Bram Moolenaar071d4272004-06-13 20:20:40 +0000766 :bfirst
767 :{cmd}
768 :bnext
769 :{cmd}
770 etc.
771< When the current file can't be |abandon|ed and the [!]
772 is not present, the command fails.
773 When an error is detected on one buffer, further
774 buffers will not be visited.
775 Unlisted buffers are skipped.
776 The last buffer (or where an error occurred) becomes
777 the current buffer.
778 {cmd} can contain '|' to concatenate several commands.
779 {cmd} must not delete buffers or add buffers to the
780 buffer list.
781 Note: While this command is executing, the Syntax
782 autocommand event is disabled by adding it to
783 'eventignore'. This considerably speeds up editing
784 each buffer.
Bram Moolenaar25c9c682019-05-05 18:13:34 +0200785
Bram Moolenaaraa23b372015-09-08 18:46:31 +0200786 Also see |:tabdo|, |:argdo|, |:windo|, |:cdo|, |:ldo|,
787 |:cfdo| and |:lfdo|
Bram Moolenaar071d4272004-06-13 20:20:40 +0000788
789Examples: >
790
791 :windo set nolist nofoldcolumn | normal zn
792
793This resets the 'list' option and disables folding in all windows. >
794
795 :bufdo set fileencoding= | update
796
797This resets the 'fileencoding' in each buffer and writes it if this changed
798the buffer. The result is that all buffers will use the 'encoding' encoding
799(if conversion works properly).
800
801==============================================================================
8029. Tag or file name under the cursor *window-tag*
803
804 *:sta* *:stag*
805:sta[g][!] [tagname]
806 Does ":tag[!] [tagname]" and splits the window for the found
807 tag. See also |:tag|.
808
809CTRL-W ] *CTRL-W_]* *CTRL-W_CTRL-]*
810CTRL-W CTRL-] Split current window in two. Use identifier under cursor as a
Bram Moolenaar3a991dd2014-10-02 01:41:41 +0200811 tag and jump to it in the new upper window.
812 In Visual mode uses the Visually selected text as a tag.
813 Make new window N high.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000814
815 *CTRL-W_g]*
816CTRL-W g ] Split current window in two. Use identifier under cursor as a
817 tag and perform ":tselect" on it in the new upper window.
Bram Moolenaar3a991dd2014-10-02 01:41:41 +0200818 In Visual mode uses the Visually selected text as a tag.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000819 Make new window N high.
820
821 *CTRL-W_g_CTRL-]*
822CTRL-W g CTRL-] Split current window in two. Use identifier under cursor as a
Bram Moolenaar3a991dd2014-10-02 01:41:41 +0200823 tag and perform ":tjump" on it in the new upper window.
824 In Visual mode uses the Visually selected text as a tag.
825 Make new window N high.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000826
827CTRL-W f *CTRL-W_f* *CTRL-W_CTRL-F*
828CTRL-W CTRL-F Split current window in two. Edit file name under cursor.
Bram Moolenaar8dff8182006-04-06 20:18:50 +0000829 Like ":split gf", but window isn't split if the file does not
Bram Moolenaar071d4272004-06-13 20:20:40 +0000830 exist.
831 Uses the 'path' variable as a list of directory names where to
832 look for the file. Also the path for current file is
833 used to search for the file name.
834 If the name is a hypertext link that looks like
835 "type://machine/path", only "/path" is used.
836 If a count is given, the count'th matching file is edited.
837 {not available when the |+file_in_path| feature was disabled
838 at compile time}
839
Bram Moolenaard1f56e62006-02-22 21:25:37 +0000840CTRL-W F *CTRL-W_F*
841 Split current window in two. Edit file name under cursor and
842 jump to the line number following the file name. See |gF| for
843 details on how the line number is obtained.
Bram Moolenaar57657d82006-04-21 22:12:41 +0000844 {not available when the |+file_in_path| feature was disabled
845 at compile time}
Bram Moolenaard1f56e62006-02-22 21:25:37 +0000846
Bram Moolenaar8dff8182006-04-06 20:18:50 +0000847CTRL-W gf *CTRL-W_gf*
848 Open a new tab page and edit the file name under the cursor.
849 Like "tab split" and "gf", but the new tab page isn't created
850 if the file does not exist.
851 {not available when the |+file_in_path| feature was disabled
852 at compile time}
853
Bram Moolenaar57657d82006-04-21 22:12:41 +0000854CTRL-W gF *CTRL-W_gF*
855 Open a new tab page and edit the file name under the cursor
856 and jump to the line number following the file name. Like
857 "tab split" and "gF", but the new tab page isn't created if
858 the file does not exist.
859 {not available when the |+file_in_path| feature was disabled
860 at compile time}
861
Bram Moolenaar26967612019-03-17 17:13:16 +0100862CTRL-W gt *CTRL-W_gt*
863 Go to next tab page, same as `gt`.
864
865CTRL-W gT *CTRL-W_gT*
866 Go to previous tab page, same as `gT`.
867
Bram Moolenaar071d4272004-06-13 20:20:40 +0000868Also see |CTRL-W_CTRL-I|: open window for an included file that includes
869the keyword under the cursor.
870
871==============================================================================
87210. The preview window *preview-window*
873
874The preview window is a special window to show (preview) another file. It is
875normally a small window used to show an include file or definition of a
876function.
877{not available when compiled without the |+quickfix| feature}
878
Bram Moolenaarc270d802006-03-11 21:29:41 +0000879There can be only one preview window (per tab page). It is created with one
880of the commands below. The 'previewheight' option can be set to specify the
881height of the preview window when it's opened. The 'previewwindow' option is
882set in the preview window to be able to recognize it. The 'winfixheight'
883option is set to have it keep the same height when opening/closing other
884windows.
Bram Moolenaar79648732019-07-18 21:43:07 +0200885 *preview-popup*
886Alternatively, a popup window can be used by setting the 'previewpopup'
887option. When set, it overrules the 'previewwindow' and 'previewheight'
888settings. The option is a comma separated list of values:
889 height maximum height of the popup
Bram Moolenaar85850f32019-07-19 22:05:51 +0200890 width maximum width of the popup
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200891 highlight highlight group of the popup (default is Pmenu)
Bram Moolenaar79648732019-07-18 21:43:07 +0200892Example: >
893 :set previewpopup=height:10,width:60
Bram Moolenaar2debf1c2019-08-04 20:44:19 +0200894
895A few peculiarities:
896- If the file is in a buffer already, it will be re-used. This will allow for
897 editing the file while it's visible in the popup window.
898- No ATTENTION dialog will be used, since you can't edit the file in the popup
899 window. However, if you later open the same buffer in a normal window, you
900 may not notice it's edited elsewhere. And when then using ":edit" to
901 trigger the ATTENTION and responding "A" for Abort, the preview window will
902 become empty.
903
Bram Moolenaar071d4272004-06-13 20:20:40 +0000904 *:pta* *:ptag*
905:pta[g][!] [tagname]
906 Does ":tag[!] [tagname]" and shows the found tag in a
907 "Preview" window without changing the current buffer or cursor
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000908 position. If a "Preview" window already exists, it is re-used
Bram Moolenaar071d4272004-06-13 20:20:40 +0000909 (like a help window is). If a new one is opened,
910 'previewheight' is used for the height of the window. See
911 also |:tag|.
912 See below for an example. |CursorHold-example|
913 Small difference from |:tag|: When [tagname] is equal to the
914 already displayed tag, the position in the matching tag list
915 is not reset. This makes the CursorHold example work after a
916 |:ptnext|.
917
918CTRL-W z *CTRL-W_z*
919CTRL-W CTRL-Z *CTRL-W_CTRL-Z* *:pc* *:pclose*
920:pc[lose][!] Close any "Preview" window currently open. When the 'hidden'
921 option is set, or when the buffer was changed and the [!] is
922 used, the buffer becomes hidden (unless there is another
923 window editing it). The command fails if any "Preview" buffer
924 cannot be closed. See also |:close|.
925
926 *:pp* *:ppop*
927:[count]pp[op][!]
928 Does ":[count]pop[!]" in the preview window. See |:pop| and
Bram Moolenaar25c9c682019-05-05 18:13:34 +0200929 |:ptag|.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000930
931CTRL-W } *CTRL-W_}*
932 Use identifier under cursor as a tag and perform a :ptag on
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000933 it. Make the new Preview window (if required) N high. If N is
Bram Moolenaar071d4272004-06-13 20:20:40 +0000934 not given, 'previewheight' is used.
935
936CTRL-W g } *CTRL-W_g}*
937 Use identifier under cursor as a tag and perform a :ptjump on
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000938 it. Make the new Preview window (if required) N high. If N is
Bram Moolenaar071d4272004-06-13 20:20:40 +0000939 not given, 'previewheight' is used.
940
941 *:ped* *:pedit*
942:ped[it][!] [++opt] [+cmd] {file}
943 Edit {file} in the preview window. The preview window is
944 opened like with |:ptag|. The current window and cursor
945 position isn't changed. Useful example: >
946 :pedit +/fputc /usr/include/stdio.h
947<
948 *:ps* *:psearch*
949:[range]ps[earch][!] [count] [/]pattern[/]
950 Works like |:ijump| but shows the found match in the preview
951 window. The preview window is opened like with |:ptag|. The
952 current window and cursor position isn't changed. Useful
953 example: >
954 :psearch popen
955< Like with the |:ptag| command, you can use this to
956 automatically show information about the word under the
957 cursor. This is less clever than using |:ptag|, but you don't
958 need a tags file and it will also find matches in system
959 include files. Example: >
Bram Moolenaar1c6737b2020-09-07 22:18:52 +0200960 :au! CursorHold *.[ch] ++nested exe "silent! psearch " . expand("<cword>")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000961< Warning: This can be slow.
962
963Example *CursorHold-example* >
964
Bram Moolenaar1c6737b2020-09-07 22:18:52 +0200965 :au! CursorHold *.[ch] ++nested exe "silent! ptag " . expand("<cword>")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000966
967This will cause a ":ptag" to be executed for the keyword under the cursor,
968when the cursor hasn't moved for the time set with 'updatetime'. The "nested"
969makes other autocommands be executed, so that syntax highlighting works in the
970preview window. The "silent!" avoids an error message when the tag could not
971be found. Also see |CursorHold|. To disable this again: >
972
973 :au! CursorHold
974
975A nice addition is to highlight the found tag, avoid the ":ptag" when there
976is no word under the cursor, and a few other things: >
977
Bram Moolenaar1c6737b2020-09-07 22:18:52 +0200978 :au! CursorHold *.[ch] ++nested call PreviewWord()
Bram Moolenaar071d4272004-06-13 20:20:40 +0000979 :func PreviewWord()
980 : if &previewwindow " don't do this in the preview window
981 : return
982 : endif
983 : let w = expand("<cword>") " get the word under cursor
984 : if w =~ '\a' " if the word contains a letter
985 :
986 : " Delete any existing highlight before showing another tag
987 : silent! wincmd P " jump to preview window
988 : if &previewwindow " if we really get there...
989 : match none " delete existing highlight
990 : wincmd p " back to old window
991 : endif
992 :
993 : " Try displaying a matching tag for the word under the cursor
994 : try
995 : exe "ptag " . w
996 : catch
997 : return
998 : endtry
999 :
1000 : silent! wincmd P " jump to preview window
1001 : if &previewwindow " if we really get there...
1002 : if has("folding")
1003 : silent! .foldopen " don't want a closed fold
1004 : endif
1005 : call search("$", "b") " to end of previous line
1006 : let w = substitute(w, '\\', '\\\\', "")
1007 : call search('\<\V' . w . '\>') " position cursor on match
1008 : " Add a match highlight to the word at this position
1009 : hi previewWord term=bold ctermbg=green guibg=green
1010 : exe 'match previewWord "\%' . line(".") . 'l\%' . col(".") . 'c\k*"'
1011 : wincmd p " back to old window
1012 : endif
1013 : endif
1014 :endfun
1015
1016==============================================================================
101711. Using hidden buffers *buffer-hidden*
1018
1019A hidden buffer is not displayed in a window, but is still loaded into memory.
1020This makes it possible to jump from file to file, without the need to read or
1021write the file every time you get another buffer in a window.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001022
1023 *:buffer-!*
1024If the option 'hidden' ('hid') is set, abandoned buffers are kept for all
1025commands that start editing another file: ":edit", ":next", ":tag", etc. The
1026commands that move through the buffer list sometimes make the current buffer
1027hidden although the 'hidden' option is not set. This happens when a buffer is
1028modified, but is forced (with '!') to be removed from a window, and
1029'autowrite' is off or the buffer can't be written.
1030
1031You can make a hidden buffer not hidden by starting to edit it with any
1032command. Or by deleting it with the ":bdelete" command.
1033
1034The 'hidden' is global, it is used for all buffers. The 'bufhidden' option
1035can be used to make an exception for a specific buffer. It can take these
1036values:
1037 <empty> Use the value of 'hidden'.
1038 hide Hide this buffer, also when 'hidden' is not set.
1039 unload Don't hide but unload this buffer, also when 'hidden'
1040 is set.
1041 delete Delete the buffer.
1042
1043 *hidden-quit*
1044When you try to quit Vim while there is a hidden, modified buffer, you will
1045get an error message and Vim will make that buffer the current buffer. You
1046can then decide to write this buffer (":wq") or quit without writing (":q!").
1047Be careful: there may be more hidden, modified buffers!
1048
1049A buffer can also be unlisted. This means it exists, but it is not in the
1050list of buffers. |unlisted-buffer|
1051
1052
Bram Moolenaard51cb702015-07-21 15:03:06 +02001053:files[!] [flags] *:files*
1054:buffers[!] [flags] *:buffers* *:ls*
1055:ls[!] [flags]
1056 Show all buffers. Example:
Bram Moolenaar071d4272004-06-13 20:20:40 +00001057
Bram Moolenaar97d62492012-11-15 21:28:22 +01001058 1 #h "/test/text" line 1 ~
1059 2u "asdf" line 0 ~
1060 3 %a + "version.c" line 1 ~
Bram Moolenaar071d4272004-06-13 20:20:40 +00001061
1062 When the [!] is included the list will show unlisted buffers
1063 (the term "unlisted" is a bit confusing then...).
1064
1065 Each buffer has a unique number. That number will not change,
Bram Moolenaar0122c402015-02-03 19:13:34 +01001066 thus you can always go to a specific buffer with ":buffer N"
1067 or "N CTRL-^", where N is the buffer number.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001068
Bram Moolenaarc6896e22019-05-30 22:32:34 +02001069 For the file name these special values are used:
1070 [Prompt] |prompt-buffer|
1071 [Popup] buffer of a |popup-window|
1072 [Scratch] 'buftype' is "nofile"
1073 [No Name] no file name specified
1074 For a |terminal-window| buffer the status is used.
1075
Bram Moolenaar071d4272004-06-13 20:20:40 +00001076 Indicators (chars in the same column are mutually exclusive):
1077 u an unlisted buffer (only displayed when [!] is used)
1078 |unlisted-buffer|
1079 % the buffer in the current window
1080 # the alternate buffer for ":e #" and CTRL-^
1081 a an active buffer: it is loaded and visible
1082 h a hidden buffer: It is loaded, but currently not
1083 displayed in a window |hidden-buffer|
1084 - a buffer with 'modifiable' off
1085 = a readonly buffer
Bram Moolenaarc572da52017-08-27 16:52:01 +02001086 R a terminal buffer with a running job
1087 F a terminal buffer with a finished job
Bram Moolenaar37c64c72017-09-19 22:06:03 +02001088 ? a terminal buffer without a job: `:terminal NONE`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001089 + a modified buffer
1090 x a buffer with read errors
1091
Bram Moolenaard51cb702015-07-21 15:03:06 +02001092 [flags] can be a combination of the following characters,
1093 which restrict the buffers to be listed:
1094 + modified buffers
1095 - buffers with 'modifiable' off
1096 = readonly buffers
1097 a active buffers
Bram Moolenaare392eb42015-11-19 20:38:09 +01001098 u unlisted buffers (overrides the "!")
Bram Moolenaard51cb702015-07-21 15:03:06 +02001099 h hidden buffers
1100 x buffers with a read error
1101 % current buffer
1102 # alternate buffer
Bram Moolenaar0751f512018-03-29 16:37:16 +02001103 R terminal buffers with a running job
1104 F terminal buffers with a finished job
1105 ? terminal buffers without a job: `:terminal NONE`
Bram Moolenaar52410572019-10-27 05:12:45 +01001106 t show time last used and sort buffers
Bram Moolenaard51cb702015-07-21 15:03:06 +02001107 Combining flags means they are "and"ed together, e.g.:
1108 h+ hidden buffers which are modified
1109 a+ active buffers which are modified
1110
Bram Moolenaare4a3bcf2016-08-26 19:52:37 +02001111 When using |:filter| the pattern is matched against the
1112 displayed buffer name, e.g.: >
1113 filter /\.vim/ ls
1114<
Bram Moolenaar071d4272004-06-13 20:20:40 +00001115 *:bad* *:badd*
1116:bad[d] [+lnum] {fname}
Bram Moolenaar3d1cde82020-08-15 18:55:18 +02001117 Add file name {fname} to the buffer list, without loading it,
1118 if it wasn't listed yet. If the buffer was previously
1119 deleted, not wiped, it will be made listed again.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001120 If "lnum" is specified, the cursor will be positioned at that
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +00001121 line when the buffer is first entered. Note that other
Bram Moolenaar071d4272004-06-13 20:20:40 +00001122 commands after the + will be ignored.
1123
Bram Moolenaar59d8e562020-11-07 18:41:10 +01001124 *:balt*
1125:balt [+lnum] {fname}
1126 Like `:badd` and also set the alternate file for the current
1127 window to {fname}.
1128
Bram Moolenaar071d4272004-06-13 20:20:40 +00001129:[N]bd[elete][!] *:bd* *:bdel* *:bdelete* *E516*
1130:bd[elete][!] [N]
1131 Unload buffer [N] (default: current buffer) and delete it from
1132 the buffer list. If the buffer was changed, this fails,
1133 unless when [!] is specified, in which case changes are lost.
1134 The file remains unaffected. Any windows for this buffer are
1135 closed. If buffer [N] is the current buffer, another buffer
1136 will be displayed instead. This is the most recent entry in
1137 the jump list that points into a loaded buffer.
1138 Actually, the buffer isn't completely deleted, it is removed
1139 from the buffer list |unlisted-buffer| and option values,
1140 variables and mappings/abbreviations for the buffer are
Bram Moolenaar4d84d932014-11-30 14:50:16 +01001141 cleared. Examples: >
1142 :.,$-bdelete " delete buffers from the current one to
1143 " last but one
1144 :%bdelete " delete all buffers
1145<
Bram Moolenaar071d4272004-06-13 20:20:40 +00001146
1147:bdelete[!] {bufname} *E93* *E94*
Bram Moolenaar15142e22018-04-30 22:19:58 +02001148 Like ":bdelete[!] [N]", but buffer given by name, see
1149 |{bufname}|.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001150
1151:bdelete[!] N1 N2 ...
1152 Do ":bdelete[!]" for buffer N1, N2, etc. The arguments can be
1153 buffer numbers or buffer names (but not buffer names that are
1154 a number). Insert a backslash before a space in a buffer
1155 name.
1156
1157:N,Mbdelete[!] Do ":bdelete[!]" for all buffers in the range N to M
1158 |inclusive|.
1159
1160:[N]bw[ipeout][!] *:bw* *:bwipe* *:bwipeout* *E517*
1161:bw[ipeout][!] {bufname}
1162:N,Mbw[ipeout][!]
1163:bw[ipeout][!] N1 N2 ...
Bram Moolenaardf1bdc92006-02-23 21:32:16 +00001164 Like |:bdelete|, but really delete the buffer. Everything
1165 related to the buffer is lost. All marks in this buffer
1166 become invalid, option settings are lost, etc. Don't use this
Bram Moolenaar4d84d932014-11-30 14:50:16 +01001167 unless you know what you are doing. Examples: >
1168 :.+,$bwipeout " wipe out all buffers after the current
1169 " one
1170 :%bwipeout " wipe out all buffers
1171<
Bram Moolenaar071d4272004-06-13 20:20:40 +00001172
1173:[N]bun[load][!] *:bun* *:bunload* *E515*
1174:bun[load][!] [N]
1175 Unload buffer [N] (default: current buffer). The memory
1176 allocated for this buffer will be freed. The buffer remains
1177 in the buffer list.
1178 If the buffer was changed, this fails, unless when [!] is
1179 specified, in which case the changes are lost.
1180 Any windows for this buffer are closed. If buffer [N] is the
1181 current buffer, another buffer will be displayed instead.
1182 This is the most recent entry in the jump list that points
1183 into a loaded buffer.
1184
1185:bunload[!] {bufname}
Bram Moolenaar15142e22018-04-30 22:19:58 +02001186 Like ":bunload[!] [N]", but buffer given by name.
1187 Also see |{bufname}|.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001188
1189:N,Mbunload[!] Do ":bunload[!]" for all buffers in the range N to M
1190 |inclusive|.
1191
1192:bunload[!] N1 N2 ...
1193 Do ":bunload[!]" for buffer N1, N2, etc. The arguments can be
1194 buffer numbers or buffer names (but not buffer names that are
1195 a number). Insert a backslash before a space in a buffer
1196 name.
1197
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001198:[N]b[uffer][!] [+cmd] [N] *:b* *:bu* *:buf* *:buffer* *E86*
Bram Moolenaar071d4272004-06-13 20:20:40 +00001199 Edit buffer [N] from the buffer list. If [N] is not given,
1200 the current buffer remains being edited. See |:buffer-!| for
1201 [!]. This will also edit a buffer that is not in the buffer
1202 list, without setting the 'buflisted' flag.
Bram Moolenaar12969c02015-09-08 23:36:10 +02001203 Also see |+cmd|.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001204
Bram Moolenaar15142e22018-04-30 22:19:58 +02001205:[N]b[uffer][!] [+cmd] {bufname} *{bufname}*
1206 Edit buffer for {bufname} from the buffer list. A partial
1207 name also works, so long as it is unique in the list of
1208 buffers.
1209 Note that a buffer whose name is a number cannot be referenced
1210 by that name; use the buffer number instead.
1211 Insert a backslash before a space in a buffer name.
1212 See |:buffer-!| for [!].
1213 This will also edit a buffer that is not in the buffer list,
1214 without setting the 'buflisted' flag.
Bram Moolenaar12969c02015-09-08 23:36:10 +02001215 Also see |+cmd|.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001216
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001217:[N]sb[uffer] [+cmd] [N] *:sb* *:sbuffer*
Bram Moolenaar071d4272004-06-13 20:20:40 +00001218 Split window and edit buffer [N] from the buffer list. If [N]
1219 is not given, the current buffer is edited. Respects the
1220 "useopen" setting of 'switchbuf' when splitting. This will
1221 also edit a buffer that is not in the buffer list, without
1222 setting the 'buflisted' flag.
Bram Moolenaar12969c02015-09-08 23:36:10 +02001223 Also see |+cmd|.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001224
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001225:[N]sb[uffer] [+cmd] {bufname}
Bram Moolenaar15142e22018-04-30 22:19:58 +02001226 Split window and edit buffer for |{bufname}| from the buffer
Bram Moolenaar071d4272004-06-13 20:20:40 +00001227 list. This will also edit a buffer that is not in the buffer
1228 list, without setting the 'buflisted' flag.
Bram Moolenaar280f1262006-01-30 00:14:18 +00001229 Note: If what you want to do is split the buffer, make a copy
1230 under another name, you can do it this way: >
1231 :w foobar | sp #
Bram Moolenaar12969c02015-09-08 23:36:10 +02001232< Also see |+cmd|.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001233
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001234:[N]bn[ext][!] [+cmd] [N] *:bn* *:bnext* *E87*
Bram Moolenaar071d4272004-06-13 20:20:40 +00001235 Go to [N]th next buffer in buffer list. [N] defaults to one.
1236 Wraps around the end of the buffer list.
1237 See |:buffer-!| for [!].
Bram Moolenaar12969c02015-09-08 23:36:10 +02001238 Also see |+cmd|.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001239 If you are in a help buffer, this takes you to the next help
1240 buffer (if there is one). Similarly, if you are in a normal
1241 (non-help) buffer, this takes you to the next normal buffer.
1242 This is so that if you have invoked help, it doesn't get in
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +00001243 the way when you're browsing code/text buffers. The next three
Bram Moolenaar071d4272004-06-13 20:20:40 +00001244 commands also work like this.
1245
1246 *:sbn* *:sbnext*
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001247:[N]sbn[ext] [+cmd] [N]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001248 Split window and go to [N]th next buffer in buffer list.
1249 Wraps around the end of the buffer list. Uses 'switchbuf'
Bram Moolenaar12969c02015-09-08 23:36:10 +02001250 Also see |+cmd|.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001251
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001252:[N]bN[ext][!] [+cmd] [N] *:bN* *:bNext* *:bp* *:bprevious* *E88*
1253:[N]bp[revious][!] [+cmd] [N]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001254 Go to [N]th previous buffer in buffer list. [N] defaults to
1255 one. Wraps around the start of the buffer list.
1256 See |:buffer-!| for [!] and 'switchbuf'.
Bram Moolenaar12969c02015-09-08 23:36:10 +02001257 Also see |+cmd|.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001258
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001259:[N]sbN[ext] [+cmd] [N] *:sbN* *:sbNext* *:sbp* *:sbprevious*
1260:[N]sbp[revious] [+cmd] [N]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001261 Split window and go to [N]th previous buffer in buffer list.
1262 Wraps around the start of the buffer list.
1263 Uses 'switchbuf'.
Bram Moolenaar12969c02015-09-08 23:36:10 +02001264 Also see |+cmd|.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001265
Bram Moolenaar61da1bf2019-06-06 12:14:49 +02001266:br[ewind][!] [+cmd] *:br* *:bre* *:brewind*
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001267 Go to first buffer in buffer list. If the buffer list is
Bram Moolenaar071d4272004-06-13 20:20:40 +00001268 empty, go to the first unlisted buffer.
1269 See |:buffer-!| for [!].
1270
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001271:bf[irst] [+cmd] *:bf* *:bfirst*
1272 Same as |:brewind|.
1273 Also see |+cmd|.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001274
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001275:sbr[ewind] [+cmd] *:sbr* *:sbrewind*
1276 Split window and go to first buffer in buffer list. If the
Bram Moolenaar071d4272004-06-13 20:20:40 +00001277 buffer list is empty, go to the first unlisted buffer.
1278 Respects the 'switchbuf' option.
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001279 Also see |+cmd|.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001280
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001281:sbf[irst] [+cmd] *:sbf* *:sbfirst*
1282 Same as ":sbrewind".
Bram Moolenaar071d4272004-06-13 20:20:40 +00001283
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001284:bl[ast][!] [+cmd] *:bl* *:blast*
1285 Go to last buffer in buffer list. If the buffer list is
Bram Moolenaar071d4272004-06-13 20:20:40 +00001286 empty, go to the last unlisted buffer.
1287 See |:buffer-!| for [!].
1288
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001289:sbl[ast] [+cmd] *:sbl* *:sblast*
1290 Split window and go to last buffer in buffer list. If the
Bram Moolenaar071d4272004-06-13 20:20:40 +00001291 buffer list is empty, go to the last unlisted buffer.
1292 Respects 'switchbuf' option.
1293
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001294:[N]bm[odified][!] [+cmd] [N] *:bm* *:bmodified* *E84*
Bram Moolenaar071d4272004-06-13 20:20:40 +00001295 Go to [N]th next modified buffer. Note: this command also
1296 finds unlisted buffers. If there is no modified buffer the
1297 command fails.
1298
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001299:[N]sbm[odified] [+cmd] [N] *:sbm* *:sbmodified*
Bram Moolenaar071d4272004-06-13 20:20:40 +00001300 Split window and go to [N]th next modified buffer.
1301 Respects 'switchbuf' option.
1302 Note: this command also finds buffers not in the buffer list.
1303
1304:[N]unh[ide] [N] *:unh* *:unhide* *:sun* *:sunhide*
1305:[N]sun[hide] [N]
1306 Rearrange the screen to open one window for each loaded buffer
1307 in the buffer list. When a count is given, this is the
1308 maximum number of windows to open.
1309
1310:[N]ba[ll] [N] *:ba* *:ball* *:sba* *:sball*
1311:[N]sba[ll] [N] Rearrange the screen to open one window for each buffer in
1312 the buffer list. When a count is given, this is the maximum
1313 number of windows to open. 'winheight' also limits the number
1314 of windows opened ('winwidth' if |:vertical| was prepended).
1315 Buf/Win Enter/Leave autocommands are not executed for the new
1316 windows here, that's only done when they are really entered.
Bram Moolenaar756ec0f2007-05-05 17:59:48 +00001317 When the |:tab| modifier is used new windows are opened in a
Bram Moolenaarfd2ac762006-03-01 22:09:21 +00001318 new tab, up to 'tabpagemax'.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001319
1320Note: All the commands above that start editing another buffer, keep the
1321'readonly' flag as it was. This differs from the ":edit" command, which sets
1322the 'readonly' flag each time the file is read.
1323
1324==============================================================================
132512. Special kinds of buffers *special-buffers*
1326
1327Instead of containing the text of a file, buffers can also be used for other
1328purposes. A few options can be set to change the behavior of a buffer:
1329 'bufhidden' what happens when the buffer is no longer displayed
1330 in a window.
1331 'buftype' what kind of a buffer this is
1332 'swapfile' whether the buffer will have a swap file
1333 'buflisted' buffer shows up in the buffer list
1334
1335A few useful kinds of a buffer:
1336
Bram Moolenaar280f1262006-01-30 00:14:18 +00001337quickfix Used to contain the error list or the location list. See
1338 |:cwindow| and |:lwindow|. This command sets the 'buftype'
1339 option to "quickfix". You are not supposed to change this!
1340 'swapfile' is off.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001341
1342help Contains a help file. Will only be created with the |:help|
1343 command. The flag that indicates a help buffer is internal
1344 and can't be changed. The 'buflisted' option will be reset
1345 for a help buffer.
1346
Bram Moolenaarb6e0ec62017-07-23 22:12:20 +02001347terminal A terminal window buffer, see |terminal|. The contents cannot
1348 be read or changed until the job ends.
1349
Bram Moolenaar677ee682005-01-27 14:41:15 +00001350directory Displays directory contents. Can be used by a file explorer
Bram Moolenaar071d4272004-06-13 20:20:40 +00001351 plugin. The buffer is created with these settings: >
Bram Moolenaar8ada17c2006-01-19 22:16:24 +00001352 :setlocal buftype=nowrite
1353 :setlocal bufhidden=delete
1354 :setlocal noswapfile
Bram Moolenaar071d4272004-06-13 20:20:40 +00001355< The buffer name is the name of the directory and is adjusted
1356 when using the |:cd| command.
1357
1358scratch Contains text that can be discarded at any time. It is kept
1359 when closing the window, it must be deleted explicitly.
1360 Settings: >
Bram Moolenaar8ada17c2006-01-19 22:16:24 +00001361 :setlocal buftype=nofile
1362 :setlocal bufhidden=hide
1363 :setlocal noswapfile
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +01001364< The buffer name can be used to identify the buffer, if you
1365 give it a meaningful name.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001366
1367 *unlisted-buffer*
1368unlisted The buffer is not in the buffer list. It is not used for
1369 normal editing, but to show a help file, remember a file name
1370 or marks. The ":bdelete" command will also set this option,
1371 thus it doesn't completely delete the buffer. Settings: >
Bram Moolenaar8ada17c2006-01-19 22:16:24 +00001372 :setlocal nobuflisted
Bram Moolenaar071d4272004-06-13 20:20:40 +00001373<
1374
Bram Moolenaard473c8c2018-08-11 18:00:22 +02001375 vim:tw=78:ts=8:noet:ft=help:norl: