blob: 2b01fb359d0c99fb46a27e7d0e1abb1ca252a0ed [file] [log] [blame]
Bram Moolenaar47e13952020-05-12 22:49:12 +02001*windows.txt* For Vim version 8.2. Last change: 2020 May 10
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
140==============================================================================
1413. Opening and closing a window *opening-window* *E36*
142
143CTRL-W s *CTRL-W_s*
144CTRL-W S *CTRL-W_S*
145CTRL-W CTRL-S *CTRL-W_CTRL-S*
Bram Moolenaar7b449342014-03-25 13:03:48 +0100146:[N]sp[lit] [++opt] [+cmd] [file] *:sp* *:split*
Bram Moolenaar071d4272004-06-13 20:20:40 +0000147 Split current window in two. The result is two viewports on
Bram Moolenaar7b449342014-03-25 13:03:48 +0100148 the same file.
Bram Moolenaar664f3cf2019-12-07 16:03:51 +0100149
Bram Moolenaar7b449342014-03-25 13:03:48 +0100150 Make the new window N high (default is to use half the height
151 of the current window). Reduces the current window height to
152 create room (and others, if the 'equalalways' option is set,
153 'eadirection' isn't "hor", and one of them is higher than the
154 current or the new window).
155
156 If [file] is given it will be edited in the new window. If it
157 is not loaded in any buffer, it will be read. Else the new
158 window will use the already loaded buffer.
159
Bram Moolenaar071d4272004-06-13 20:20:40 +0000160 Note: CTRL-S does not work on all terminals and might block
161 further input, use CTRL-Q to get going again.
162 Also see |++opt| and |+cmd|.
Bram Moolenaar54775062019-07-31 21:07:14 +0200163 *E242*
164 Be careful when splitting a window in an autocommand, it may
165 mess up the window layout if this happens while making other
166 window layout changes.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000167
168CTRL-W CTRL-V *CTRL-W_CTRL-V*
169CTRL-W v *CTRL-W_v*
170:[N]vs[plit] [++opt] [+cmd] [file] *:vs* *:vsplit*
Bram Moolenaar67f71312007-08-12 14:55:56 +0000171 Like |:split|, but split vertically. The windows will be
172 spread out horizontally if
173 1. a width was not specified,
174 2. 'equalalways' is set,
175 3. 'eadirection' isn't "ver", and
Bram Moolenaarc1a11ed2008-06-24 22:09:24 +0000176 4. one of the other windows is wider than the current or new
Bram Moolenaar67f71312007-08-12 14:55:56 +0000177 window.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000178 Note: In other places CTRL-Q does the same as CTRL-V, but here
179 it doesn't!
180
181CTRL-W n *CTRL-W_n*
182CTRL-W CTRL_N *CTRL-W_CTRL-N*
183:[N]new [++opt] [+cmd] *:new*
184 Create a new window and start editing an empty file in it.
185 Make new window N high (default is to use half the existing
186 height). Reduces the current window height to create room (and
187 others, if the 'equalalways' option is set and 'eadirection'
188 isn't "hor").
189 Also see |++opt| and |+cmd|.
190 If 'fileformats' is not empty, the first format given will be
191 used for the new buffer. If 'fileformats' is empty, the
192 'fileformat' of the current buffer is used. This can be
193 overridden with the |++opt| argument.
194 Autocommands are executed in this order:
195 1. WinLeave for the current window
196 2. WinEnter for the new window
197 3. BufLeave for the current buffer
198 4. BufEnter for the new buffer
Bram Moolenaar53bfca22012-04-13 23:04:47 +0200199 This behaves like a ":split" first, and then an ":enew"
200 command.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000201
202:[N]vne[w] [++opt] [+cmd] [file] *:vne* *:vnew*
203 Like |:new|, but split vertically. If 'equalalways' is set
204 and 'eadirection' isn't "ver" the windows will be spread out
205 horizontally, unless a width was specified.
206
207:[N]new [++opt] [+cmd] {file}
208:[N]sp[lit] [++opt] [+cmd] {file} *:split_f*
Bram Moolenaar53bfca22012-04-13 23:04:47 +0200209 Create a new window and start editing file {file} in it. This
210 behaves like a ":split" first, and then an ":e" command.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000211 If [+cmd] is given, execute the command when the file has been
212 loaded |+cmd|.
213 Also see |++opt|.
214 Make new window N high (default is to use half the existing
215 height). Reduces the current window height to create room
216 (and others, if the 'equalalways' option is set).
217
Bram Moolenaarff781552020-03-19 20:37:11 +0100218:[N]sv[iew] [++opt] [+cmd] [file] *:sv* *:sview* *splitview*
Bram Moolenaar071d4272004-06-13 20:20:40 +0000219 Same as ":split", but set 'readonly' option for this buffer.
220
Bram Moolenaar61da1bf2019-06-06 12:14:49 +0200221:[N]sf[ind] [++opt] [+cmd] {file} *:sf* *:sfi* *:sfind* *splitfind*
Bram Moolenaarc236c162008-07-13 17:41:49 +0000222 Same as ":split", but search for {file} in 'path' like in
223 |:find|. Doesn't split if {file} is not found.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000224
225CTRL-W CTRL-^ *CTRL-W_CTRL-^* *CTRL-W_^*
Bram Moolenaar1bbb6192018-11-10 16:02:01 +0100226CTRL-W ^ Split the current window in two and edit the alternate file.
227 When a count N is given, split the current window and edit
228 buffer N. Similar to ":sp #" and ":sp #N", but it allows the
229 other buffer to be unnamed. This command matches the behavior
230 of |CTRL-^|, except that it splits a window first.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000231
Bram Moolenaarb6e0ec62017-07-23 22:12:20 +0200232 *CTRL-W_:*
Bram Moolenaard2f3a8b2018-06-19 14:35:59 +0200233CTRL-W : Does the same as typing |:| - enter a command line. Useful in a
Bram Moolenaarb6e0ec62017-07-23 22:12:20 +0200234 terminal window, where all Vim commands must be preceded with
Bram Moolenaard2f3a8b2018-06-19 14:35:59 +0200235 CTRL-W or 'termwinkey'.
Bram Moolenaarb6e0ec62017-07-23 22:12:20 +0200236
Bram Moolenaar071d4272004-06-13 20:20:40 +0000237Note that the 'splitbelow' and 'splitright' options influence where a new
238window will appear.
239
240 *:vert* *:vertical*
241:vert[ical] {cmd}
242 Execute {cmd}. If it contains a command that splits a window,
243 it will be split vertically.
Bram Moolenaar756ec0f2007-05-05 17:59:48 +0000244 Doesn't work for |:execute| and |:normal|.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000245
246:lefta[bove] {cmd} *:lefta* *:leftabove*
247:abo[veleft] {cmd} *:abo* *:aboveleft*
248 Execute {cmd}. If it contains a command that splits a window,
249 it will be opened left (vertical split) or above (horizontal
250 split) the current window. Overrules 'splitbelow' and
251 'splitright'.
Bram Moolenaar756ec0f2007-05-05 17:59:48 +0000252 Doesn't work for |:execute| and |:normal|.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000253
254:rightb[elow] {cmd} *:rightb* *:rightbelow*
255:bel[owright] {cmd} *:bel* *:belowright*
256 Execute {cmd}. If it contains a command that splits a window,
257 it will be opened right (vertical split) or below (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 *:topleft* *E442*
263:to[pleft] {cmd}
264 Execute {cmd}. If it contains a command that splits a window,
265 it will appear at the top and occupy the full width of the Vim
266 window. When the split is vertical the window appears at the
267 far left and occupies the full height of the Vim window.
Bram Moolenaar756ec0f2007-05-05 17:59:48 +0000268 Doesn't work for |:execute| and |:normal|.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000269
Bram Moolenaarbc8801c2016-08-02 21:04:33 +0200270 *:bo* *:botright*
Bram Moolenaar071d4272004-06-13 20:20:40 +0000271:bo[tright] {cmd}
272 Execute {cmd}. If it contains a command that splits a window,
273 it will appear at the bottom and occupy the full width of the
274 Vim window. When the split is vertical the window appears at
275 the far right 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
278These command modifiers can be combined to make a vertically split window
279occupy the full height. Example: >
Bram Moolenaar5302d9e2011-09-14 17:55:08 +0200280 :vertical topleft split tags
Bram Moolenaar071d4272004-06-13 20:20:40 +0000281Opens a vertically split, full-height window on the "tags" file at the far
282left of the Vim window.
283
284
285Closing a window
286----------------
287
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100288:q[uit]
289:{count}q[uit]
Bram Moolenaar071d4272004-06-13 20:20:40 +0000290CTRL-W q *CTRL-W_q*
291CTRL-W CTRL-Q *CTRL-W_CTRL-Q*
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100292 Without {count}: Quit the current window. If {count} is
293 given quit the {count} window.
Bram Moolenaar47e13952020-05-12 22:49:12 +0200294 *edit-window*
295 When quitting the last edit window (not counting help or
296 preview windows), exit Vim.
Bram Moolenaar664f3cf2019-12-07 16:03:51 +0100297
Bram Moolenaar071d4272004-06-13 20:20:40 +0000298 When 'hidden' is set, and there is only one window for the
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100299 current buffer, it becomes hidden. When 'hidden' is not set,
300 and there is only one window for the current buffer, and the
301 buffer was changed, the command fails.
Bram Moolenaar664f3cf2019-12-07 16:03:51 +0100302
Bram Moolenaared32d942014-12-06 23:33:00 +0100303 (Note: CTRL-Q does not work on all terminals).
Bram Moolenaar664f3cf2019-12-07 16:03:51 +0100304
Bram Moolenaared32d942014-12-06 23:33:00 +0100305 If [count] is greater than the last window number the last
306 window will be closed: >
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100307 :1quit " quit the first window
308 :$quit " quit the last window
309 :9quit " quit the last window
Bram Moolenaar46fceaa2016-10-23 21:21:08 +0200310 " if there are fewer than 9 windows opened
311 :-quit " quit the previous window
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100312 :+quit " quit the next window
Bram Moolenaared32d942014-12-06 23:33:00 +0100313 :+2quit " quit the second next window
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100314<
Bram Moolenaar47e13952020-05-12 22:49:12 +0200315 When closing a help window, and this is not the only window,
316 Vim will try to restore the previous window layout, see
317 |:helpclose|.
Bram Moolenaar96f45c02019-10-26 19:53:45 +0200318
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100319:q[uit]!
320:{count}q[uit]!
321 Without {count}: Quit the current window. If {count} is
322 given quit the {count} window.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000323
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100324 If this was the last window for a buffer, any changes to that
325 buffer are lost. When quitting the last window (not counting
326 help windows), exit Vim. The contents of the buffer are lost,
327 even when 'hidden' is set.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000328
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100329:clo[se][!]
330:{count}clo[se][!]
Bram Moolenaar071d4272004-06-13 20:20:40 +0000331CTRL-W c *CTRL-W_c* *:clo* *:close*
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100332 Without {count}: Close the current window. If {count} is
333 given close the {count} window.
334
335 When the 'hidden' option is set, or when the buffer was
336 changed and the [!] is used, the buffer becomes hidden (unless
337 there is another window editing it).
Bram Moolenaar664f3cf2019-12-07 16:03:51 +0100338
Bram Moolenaar47e13952020-05-12 22:49:12 +0200339 When there is only one |edit-window| in the current tab page
340 and there is another tab page, this closes the current tab
341 page. |tab-page|.
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100342
Bram Moolenaar071d4272004-06-13 20:20:40 +0000343 This command fails when: *E444*
344 - There is only one window on the screen.
345 - When 'hidden' is not set, [!] is not used, the buffer has
346 changes, and there is no other window on this buffer.
347 Changes to the buffer are not written and won't get lost, so
348 this is a "safe" command.
349
350CTRL-W CTRL-C *CTRL-W_CTRL-C*
351 You might have expected that CTRL-W CTRL-C closes the current
352 window, but that does not work, because the CTRL-C cancels the
353 command.
354
355 *:hide*
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100356:hid[e]
357:{count}hid[e]
Bram Moolenaarc572da52017-08-27 16:52:01 +0200358 Without {count}: Quit the current window, unless it is the
359 last window on the screen.
360 If {count} is given quit the {count} window.
Bram Moolenaar664f3cf2019-12-07 16:03:51 +0100361
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100362 The buffer becomes hidden (unless there is another window
Bram Moolenaared32d942014-12-06 23:33:00 +0100363 editing it or 'bufhidden' is "unload", "delete" or "wipe").
364 If the window is the last one in the current tab page the tab
Bram Moolenaar664f3cf2019-12-07 16:03:51 +0100365 page is closed. |tab-page|
366
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100367 The value of 'hidden' is irrelevant for this command. Changes
368 to the buffer are not written and won't get lost, so this is a
369 "safe" command.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000370
371:hid[e] {cmd} Execute {cmd} with 'hidden' is set. The previous value of
372 'hidden' is restored after {cmd} has been executed.
373 Example: >
374 :hide edit Makefile
375< This will edit "Makefile", and hide the current buffer if it
376 has any changes.
377
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100378:on[ly][!]
379:{count}on[ly][!]
Bram Moolenaar071d4272004-06-13 20:20:40 +0000380CTRL-W o *CTRL-W_o* *E445*
381CTRL-W CTRL-O *CTRL-W_CTRL-O* *:on* *:only*
Bram Moolenaarb96a7f32014-11-27 16:22:48 +0100382 Make the current window the only one on the screen. All other
383 windows are closed. For {count} see |:quit| command.
Bram Moolenaar664f3cf2019-12-07 16:03:51 +0100384
Bram Moolenaar071d4272004-06-13 20:20:40 +0000385 When the 'hidden' option is set, all buffers in closed windows
386 become hidden.
Bram Moolenaar664f3cf2019-12-07 16:03:51 +0100387
Bram Moolenaar071d4272004-06-13 20:20:40 +0000388 When 'hidden' is not set, and the 'autowrite' option is set,
389 modified buffers are written. Otherwise, windows that have
390 buffers that are modified are not removed, unless the [!] is
391 given, then they become hidden. But modified buffers are
392 never abandoned, so changes cannot get lost.
393
394==============================================================================
3954. Moving cursor to other windows *window-move-cursor*
396
397CTRL-W <Down> *CTRL-W_<Down>*
398CTRL-W CTRL-J *CTRL-W_CTRL-J* *CTRL-W_j*
399CTRL-W j Move cursor to Nth window below current one. Uses the cursor
400 position to select between alternatives.
401
402CTRL-W <Up> *CTRL-W_<Up>*
403CTRL-W CTRL-K *CTRL-W_CTRL-K* *CTRL-W_k*
404CTRL-W k Move cursor to Nth window above current one. Uses the cursor
405 position to select between alternatives.
406
407CTRL-W <Left> *CTRL-W_<Left>*
408CTRL-W CTRL-H *CTRL-W_CTRL-H*
409CTRL-W <BS> *CTRL-W_<BS>* *CTRL-W_h*
410CTRL-W h Move cursor to Nth window left of current one. Uses the
411 cursor position to select between alternatives.
412
413CTRL-W <Right> *CTRL-W_<Right>*
414CTRL-W CTRL-L *CTRL-W_CTRL-L* *CTRL-W_l*
415CTRL-W l Move cursor to Nth window right of current one. Uses the
416 cursor position to select between alternatives.
417
418CTRL-W w *CTRL-W_w* *CTRL-W_CTRL-W*
419CTRL-W CTRL-W Without count: move cursor to window below/right of the
420 current one. If there is no window below or right, go to
421 top-left window.
422 With count: go to Nth window (windows are numbered from
423 top-left to bottom-right). To obtain the window number see
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100424 |bufwinnr()| and |winnr()|. When N is larger than the number
425 of windows go to the last window.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000426
427 *CTRL-W_W*
428CTRL-W W Without count: move cursor to window above/left of current
429 one. If there is no window above or left, go to bottom-right
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100430 window. With count: go to Nth window, like with CTRL-W w.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000431
432CTRL-W t *CTRL-W_t* *CTRL-W_CTRL-T*
433CTRL-W CTRL-T Move cursor to top-left window.
434
435CTRL-W b *CTRL-W_b* *CTRL-W_CTRL-B*
436CTRL-W CTRL-B Move cursor to bottom-right window.
437
438CTRL-W p *CTRL-W_p* *CTRL-W_CTRL-P*
439CTRL-W CTRL-P Go to previous (last accessed) window.
440
441 *CTRL-W_P* *E441*
442CTRL-W P Go to preview window. When there is no preview window this is
443 an error.
444 {not available when compiled without the |+quickfix| feature}
445
446If Visual mode is active and the new window is not for the same buffer, the
447Visual mode is ended. If the window is on the same buffer, the cursor
448position is set to keep the same Visual area selected.
449
450 *:winc* *:wincmd*
451These commands can also be executed with ":wincmd":
452
453:[count]winc[md] {arg}
454 Like executing CTRL-W [count] {arg}. Example: >
455 :wincmd j
456< Moves to the window below the current one.
457 This command is useful when a Normal mode cannot be used (for
458 the |CursorHold| autocommand event). Or when a Normal mode
459 command is inconvenient.
460 The count can also be a window number. Example: >
461 :exe nr . "wincmd w"
462< This goes to window "nr".
463
464==============================================================================
4655. Moving windows around *window-moving*
466
467CTRL-W r *CTRL-W_r* *CTRL-W_CTRL-R* *E443*
468CTRL-W CTRL-R Rotate windows downwards/rightwards. The first window becomes
469 the second one, the second one becomes the third one, etc.
470 The last window becomes the first window. The cursor remains
471 in the same window.
472 This only works within the row or column of windows that the
473 current window is in.
474
475 *CTRL-W_R*
476CTRL-W R Rotate windows upwards/leftwards. The second window becomes
477 the first one, the third one becomes the second one, etc. The
478 first window becomes the last window. The cursor remains in
479 the same window.
480 This only works within the row or column of windows that the
481 current window is in.
482
483CTRL-W x *CTRL-W_x* *CTRL-W_CTRL-X*
484CTRL-W CTRL-X Without count: Exchange current window with next one. If there
485 is no next window, exchange with previous window.
486 With count: Exchange current window with Nth window (first
487 window is 1). The cursor is put in the other window.
488 When vertical and horizontal window splits are mixed, the
489 exchange is only done in the row or column of windows that the
490 current window is in.
491
492The following commands can be used to change the window layout. For example,
493when there are two vertically split windows, CTRL-W K will change that in
494horizontally split windows. CTRL-W H does it the other way around.
495
496 *CTRL-W_K*
497CTRL-W K Move the current window to be at the very top, using the full
498 width of the screen. This works like closing the current
499 window and then creating another one with ":topleft split",
500 except that the current window contents is used for the new
501 window.
502
503 *CTRL-W_J*
504CTRL-W J Move the current window to be at the very bottom, using the
505 full width of the screen. This works like closing the current
506 window and then creating another one with ":botright split",
507 except that the current window contents is used for the new
508 window.
509
510 *CTRL-W_H*
511CTRL-W H Move the current window to be at the far left, using the
512 full height of the screen. This works like closing the
513 current window and then creating another one with
514 ":vert topleft split", except that the current window contents
515 is used for the new window.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000516
517 *CTRL-W_L*
518CTRL-W L Move the current window to be at the far right, using the full
519 height of the screen. This works like closing the
520 current window and then creating another one with
521 ":vert botright split", except that the current window
522 contents is used for the new window.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000523
Bram Moolenaar4c3f5362006-04-11 21:38:50 +0000524 *CTRL-W_T*
525CTRL-W T Move the current window to a new tab page. This fails if
526 there is only one window in the current tab page.
527 When a count is specified the new tab page will be opened
528 before the tab page with this index. Otherwise it comes after
529 the current tab page.
530
Bram Moolenaar071d4272004-06-13 20:20:40 +0000531==============================================================================
5326. Window resizing *window-resize*
533
534 *CTRL-W_=*
535CTRL-W = Make all windows (almost) equally high and wide, but use
536 'winheight' and 'winwidth' for the current window.
Bram Moolenaar756ec0f2007-05-05 17:59:48 +0000537 Windows with 'winfixheight' set keep their height and windows
538 with 'winfixwidth' set keep their width.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000539
540:res[ize] -N *:res* *:resize* *CTRL-W_-*
541CTRL-W - Decrease current window height by N (default 1).
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200542 If used after |:vertical|: decrease width by N.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000543
544:res[ize] +N *CTRL-W_+*
545CTRL-W + Increase current window height by N (default 1).
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200546 If used after |:vertical|: increase width by N.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000547
548:res[ize] [N]
549CTRL-W CTRL-_ *CTRL-W_CTRL-_* *CTRL-W__*
550CTRL-W _ Set current window height to N (default: highest possible).
551
Bram Moolenaar1ff14ba2019-11-02 14:09:23 +0100552:{winnr}res[ize] [+-]N
553 Like `:resize` above, but apply the size to window {winnr}
554 instead of the current window.
555
Bram Moolenaar071d4272004-06-13 20:20:40 +0000556z{nr}<CR> Set current window height to {nr}.
557
558 *CTRL-W_<*
559CTRL-W < Decrease current window width by N (default 1).
560
561 *CTRL-W_>*
562CTRL-W > Increase current window width by N (default 1).
563
564:vertical res[ize] [N] *:vertical-resize* *CTRL-W_bar*
565CTRL-W | Set current window width to N (default: widest possible).
566
567You can also resize a window by dragging a status line up or down with the
568mouse. Or by dragging a vertical separator line left or right. This only
569works if the version of Vim that is being used supports the mouse and the
570'mouse' option has been set to enable it.
571
572The option 'winheight' ('wh') is used to set the minimal window height of the
573current window. This option is used each time another window becomes the
574current window. If the option is '0', it is disabled. Set 'winheight' to a
575very large value, e.g., '9999', to make the current window always fill all
576available space. Set it to a reasonable value, e.g., '10', to make editing in
577the current window comfortable.
578
579The equivalent 'winwidth' ('wiw') option is used to set the minimal width of
580the current window.
581
582When the option 'equalalways' ('ea') is set, all the windows are automatically
583made the same size after splitting or closing a window. If you don't set this
584option, splitting a window will reduce the size of the current window and
585leave the other windows the same. When closing a window, the extra lines are
586given to the window above it.
587
588The 'eadirection' option limits the direction in which the 'equalalways'
589option is applied. The default "both" resizes in both directions. When the
590value is "ver" only the heights of windows are equalized. Use this when you
591have manually resized a vertically split window and want to keep this width.
592Likewise, "hor" causes only the widths of windows to be equalized.
593
594The option 'cmdheight' ('ch') is used to set the height of the command-line.
595If you are annoyed by the |hit-enter| prompt for long messages, set this
596option to 2 or 3.
597
598If there is only one window, resizing that window will also change the command
599line height. If there are several windows, resizing the current window will
600also change the height of the window below it (and sometimes the window above
601it).
602
603The minimal height and width of a window is set with 'winminheight' and
604'winminwidth'. These are hard values, a window will never become smaller.
605
606==============================================================================
6077. Argument and buffer list commands *buffer-list*
608
609 args list buffer list meaning ~
6101. :[N]argument [N] 11. :[N]buffer [N] to arg/buf N
6112. :[N]next [file ..] 12. :[N]bnext [N] to Nth next arg/buf
6123. :[N]Next [N] 13. :[N]bNext [N] to Nth previous arg/buf
6134. :[N]previous [N] 14. :[N]bprevious [N] to Nth previous arg/buf
6145. :rewind / :first 15. :brewind / :bfirst to first arg/buf
6156. :last 16. :blast to last arg/buf
6167. :all 17. :ball edit all args/buffers
617 18. :unhide edit all loaded buffers
618 19. :[N]bmod [N] to Nth modified buf
619
620 split & args list split & buffer list meaning ~
62121. :[N]sargument [N] 31. :[N]sbuffer [N] split + to arg/buf N
62222. :[N]snext [file ..] 32. :[N]sbnext [N] split + to Nth next arg/buf
62323. :[N]sNext [N] 33. :[N]sbNext [N] split + to Nth previous arg/buf
62424. :[N]sprevious [N] 34. :[N]sbprevious [N] split + to Nth previous arg/buf
62525. :srewind / :sfirst 35. :sbrewind / :sbfirst split + to first arg/buf
62626. :slast 36. :sblast split + to last arg/buf
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +000062727. :sall 37. :sball edit all args/buffers
Bram Moolenaar071d4272004-06-13 20:20:40 +0000628 38. :sunhide edit all loaded buffers
629 39. :[N]sbmod [N] split + to Nth modified buf
630
63140. :args list of arguments
63241. :buffers list of buffers
633
634The meaning of [N] depends on the command:
Bram Moolenaar24a98a02017-09-27 22:23:55 +0200635 [N] is the number of buffers to go forward/backward on 2/12/22/32,
636 3/13/23/33, and 4/14/24/34
Bram Moolenaar071d4272004-06-13 20:20:40 +0000637 [N] is an argument number, defaulting to current argument, for 1 and 21
638 [N] is a buffer number, defaulting to current buffer, for 11 and 31
639 [N] is a count for 19 and 39
640
641Note: ":next" is an exception, because it must accept a list of file names
642for compatibility with Vi.
643
644
645The argument list and multiple windows
646--------------------------------------
647
648The current position in the argument list can be different for each window.
649Remember that when doing ":e file", the position in the argument list stays
650the same, but you are not editing the file at that position. To indicate
651this, the file message (and the title, if you have one) shows
652"(file (N) of M)", where "(N)" is the current position in the file list, and
653"M" the number of files in the file list.
654
655All the entries in the argument list are added to the buffer list. Thus, you
656can also get to them with the buffer list commands, like ":bnext".
657
658:[N]al[l][!] [N] *:al* *:all* *:sal* *:sall*
659:[N]sal[l][!] [N]
660 Rearrange the screen to open one window for each argument.
661 All other windows are closed. When a count is given, this is
662 the maximum number of windows to open.
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000663 With the |:tab| modifier open a tab page for each argument.
664 When there are more arguments than 'tabpagemax' further ones
665 become split windows in the last tab page.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000666 When the 'hidden' option is set, all buffers in closed windows
667 become hidden.
668 When 'hidden' is not set, and the 'autowrite' option is set,
669 modified buffers are written. Otherwise, windows that have
670 buffers that are modified are not removed, unless the [!] is
671 given, then they become hidden. But modified buffers are
672 never abandoned, so changes cannot get lost.
673 [N] is the maximum number of windows to open. 'winheight'
674 also limits the number of windows opened ('winwidth' if
675 |:vertical| was prepended).
676 Buf/Win Enter/Leave autocommands are not executed for the new
677 windows here, that's only done when they are really entered.
Bram Moolenaar54775062019-07-31 21:07:14 +0200678 If autocommands change the window layout while this command is
679 busy an error will be given. *E249*
Bram Moolenaar071d4272004-06-13 20:20:40 +0000680
681:[N]sa[rgument][!] [++opt] [+cmd] [N] *:sa* *:sargument*
682 Short for ":split | argument [N]": split window and go to Nth
683 argument. But when there is no such argument, the window is
684 not split. Also see |++opt| and |+cmd|.
685
686:[N]sn[ext][!] [++opt] [+cmd] [file ..] *:sn* *:snext*
687 Short for ":split | [N]next": split window and go to Nth next
688 argument. But when there is no next file, the window is not
689 split. Also see |++opt| and |+cmd|.
690
691:[N]spr[evious][!] [++opt] [+cmd] [N] *:spr* *:sprevious*
692:[N]sN[ext][!] [++opt] [+cmd] [N] *:sN* *:sNext*
693 Short for ":split | [N]Next": split window and go to Nth
694 previous argument. But when there is no previous file, the
695 window is not split. Also see |++opt| and |+cmd|.
696
697 *:sre* *:srewind*
698:sre[wind][!] [++opt] [+cmd]
699 Short for ":split | rewind": split window and go to first
700 argument. But when there is no argument list, the window is
701 not split. Also see |++opt| and |+cmd|.
702
703 *:sfir* *:sfirst*
Bram Moolenaar26a60b42005-02-22 08:49:11 +0000704:sfir[st] [++opt] [+cmd]
Bram Moolenaar071d4272004-06-13 20:20:40 +0000705 Same as ":srewind".
706
707 *:sla* *:slast*
708:sla[st][!] [++opt] [+cmd]
709 Short for ":split | last": split window and go to last
710 argument. But when there is no argument list, the window is
711 not split. Also see |++opt| and |+cmd|.
712
713 *:dr* *:drop*
Bram Moolenaared39e1d2008-08-09 17:55:22 +0000714:dr[op] [++opt] [+cmd] {file} ..
Bram Moolenaar071d4272004-06-13 20:20:40 +0000715 Edit the first {file} in a window.
716 - If the file is already open in a window change to that
717 window.
718 - If the file is not open in a window edit the file in the
719 current window. If the current buffer can't be |abandon|ed,
720 the window is split first.
Bram Moolenaar51628222016-12-01 23:03:28 +0100721 - Windows that are not in the argument list or are not full
722 width will be closed if possible.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000723 The |argument-list| is set, like with the |:next| command.
724 The purpose of this command is that it can be used from a
725 program that wants Vim to edit another file, e.g., a debugger.
Bram Moolenaar910f66f2006-04-05 20:41:53 +0000726 When using the |:tab| modifier each argument is opened in a
727 tab page. The last window is used if it's empty.
Bram Moolenaared39e1d2008-08-09 17:55:22 +0000728 Also see |++opt| and |+cmd|.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000729
730==============================================================================
7318. Do a command in all buffers or windows *list-repeat*
732
733 *:windo*
Bram Moolenaara162bc52015-01-07 16:54:21 +0100734:[range]windo {cmd} Execute {cmd} in each window or if [range] is given
735 only in windows for which the window number lies in
736 the [range]. It works like doing this: >
Bram Moolenaar071d4272004-06-13 20:20:40 +0000737 CTRL-W t
738 :{cmd}
739 CTRL-W w
740 :{cmd}
741 etc.
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000742< This only operates in the current tab page.
Bram Moolenaar7e8fd632006-02-18 22:14:51 +0000743 When an error is detected on one window, further
Bram Moolenaar071d4272004-06-13 20:20:40 +0000744 windows will not be visited.
745 The last window (or where an error occurred) becomes
746 the current window.
747 {cmd} can contain '|' to concatenate several commands.
748 {cmd} must not open or close windows or reorder them.
Bram Moolenaar25c9c682019-05-05 18:13:34 +0200749
Bram Moolenaaraa23b372015-09-08 18:46:31 +0200750 Also see |:tabdo|, |:argdo|, |:bufdo|, |:cdo|, |:ldo|,
751 |:cfdo| and |:lfdo|
Bram Moolenaar071d4272004-06-13 20:20:40 +0000752
753 *:bufdo*
Bram Moolenaara162bc52015-01-07 16:54:21 +0100754:[range]bufdo[!] {cmd} Execute {cmd} in each buffer in the buffer list or if
755 [range] is given only for buffers for which their
Bram Moolenaar681baaf2016-02-04 20:57:07 +0100756 buffer number is in the [range]. It works like doing
Bram Moolenaara162bc52015-01-07 16:54:21 +0100757 this: >
Bram Moolenaar071d4272004-06-13 20:20:40 +0000758 :bfirst
759 :{cmd}
760 :bnext
761 :{cmd}
762 etc.
763< When the current file can't be |abandon|ed and the [!]
764 is not present, the command fails.
765 When an error is detected on one buffer, further
766 buffers will not be visited.
767 Unlisted buffers are skipped.
768 The last buffer (or where an error occurred) becomes
769 the current buffer.
770 {cmd} can contain '|' to concatenate several commands.
771 {cmd} must not delete buffers or add buffers to the
772 buffer list.
773 Note: While this command is executing, the Syntax
774 autocommand event is disabled by adding it to
775 'eventignore'. This considerably speeds up editing
776 each buffer.
Bram Moolenaar25c9c682019-05-05 18:13:34 +0200777
Bram Moolenaaraa23b372015-09-08 18:46:31 +0200778 Also see |:tabdo|, |:argdo|, |:windo|, |:cdo|, |:ldo|,
779 |:cfdo| and |:lfdo|
Bram Moolenaar071d4272004-06-13 20:20:40 +0000780
781Examples: >
782
783 :windo set nolist nofoldcolumn | normal zn
784
785This resets the 'list' option and disables folding in all windows. >
786
787 :bufdo set fileencoding= | update
788
789This resets the 'fileencoding' in each buffer and writes it if this changed
790the buffer. The result is that all buffers will use the 'encoding' encoding
791(if conversion works properly).
792
793==============================================================================
7949. Tag or file name under the cursor *window-tag*
795
796 *:sta* *:stag*
797:sta[g][!] [tagname]
798 Does ":tag[!] [tagname]" and splits the window for the found
799 tag. See also |:tag|.
800
801CTRL-W ] *CTRL-W_]* *CTRL-W_CTRL-]*
802CTRL-W CTRL-] Split current window in two. Use identifier under cursor as a
Bram Moolenaar3a991dd2014-10-02 01:41:41 +0200803 tag and jump to it in the new upper window.
804 In Visual mode uses the Visually selected text as a tag.
805 Make new window N high.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000806
807 *CTRL-W_g]*
808CTRL-W g ] Split current window in two. Use identifier under cursor as a
809 tag and perform ":tselect" on it in the new upper window.
Bram Moolenaar3a991dd2014-10-02 01:41:41 +0200810 In Visual mode uses the Visually selected text as a tag.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000811 Make new window N high.
812
813 *CTRL-W_g_CTRL-]*
814CTRL-W g CTRL-] Split current window in two. Use identifier under cursor as a
Bram Moolenaar3a991dd2014-10-02 01:41:41 +0200815 tag and perform ":tjump" on it in the new upper window.
816 In Visual mode uses the Visually selected text as a tag.
817 Make new window N high.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000818
819CTRL-W f *CTRL-W_f* *CTRL-W_CTRL-F*
820CTRL-W CTRL-F Split current window in two. Edit file name under cursor.
Bram Moolenaar8dff8182006-04-06 20:18:50 +0000821 Like ":split gf", but window isn't split if the file does not
Bram Moolenaar071d4272004-06-13 20:20:40 +0000822 exist.
823 Uses the 'path' variable as a list of directory names where to
824 look for the file. Also the path for current file is
825 used to search for the file name.
826 If the name is a hypertext link that looks like
827 "type://machine/path", only "/path" is used.
828 If a count is given, the count'th matching file is edited.
829 {not available when the |+file_in_path| feature was disabled
830 at compile time}
831
Bram Moolenaard1f56e62006-02-22 21:25:37 +0000832CTRL-W F *CTRL-W_F*
833 Split current window in two. Edit file name under cursor and
834 jump to the line number following the file name. See |gF| for
835 details on how the line number is obtained.
Bram Moolenaar57657d82006-04-21 22:12:41 +0000836 {not available when the |+file_in_path| feature was disabled
837 at compile time}
Bram Moolenaard1f56e62006-02-22 21:25:37 +0000838
Bram Moolenaar8dff8182006-04-06 20:18:50 +0000839CTRL-W gf *CTRL-W_gf*
840 Open a new tab page and edit the file name under the cursor.
841 Like "tab split" and "gf", but the new tab page isn't created
842 if the file does not exist.
843 {not available when the |+file_in_path| feature was disabled
844 at compile time}
845
Bram Moolenaar57657d82006-04-21 22:12:41 +0000846CTRL-W gF *CTRL-W_gF*
847 Open a new tab page and edit the file name under the cursor
848 and jump to the line number following the file name. Like
849 "tab split" and "gF", but the new tab page isn't created if
850 the file does not exist.
851 {not available when the |+file_in_path| feature was disabled
852 at compile time}
853
Bram Moolenaar26967612019-03-17 17:13:16 +0100854CTRL-W gt *CTRL-W_gt*
855 Go to next tab page, same as `gt`.
856
857CTRL-W gT *CTRL-W_gT*
858 Go to previous tab page, same as `gT`.
859
Bram Moolenaar071d4272004-06-13 20:20:40 +0000860Also see |CTRL-W_CTRL-I|: open window for an included file that includes
861the keyword under the cursor.
862
863==============================================================================
86410. The preview window *preview-window*
865
866The preview window is a special window to show (preview) another file. It is
867normally a small window used to show an include file or definition of a
868function.
869{not available when compiled without the |+quickfix| feature}
870
Bram Moolenaarc270d802006-03-11 21:29:41 +0000871There can be only one preview window (per tab page). It is created with one
872of the commands below. The 'previewheight' option can be set to specify the
873height of the preview window when it's opened. The 'previewwindow' option is
874set in the preview window to be able to recognize it. The 'winfixheight'
875option is set to have it keep the same height when opening/closing other
876windows.
Bram Moolenaar79648732019-07-18 21:43:07 +0200877 *preview-popup*
878Alternatively, a popup window can be used by setting the 'previewpopup'
879option. When set, it overrules the 'previewwindow' and 'previewheight'
880settings. The option is a comma separated list of values:
881 height maximum height of the popup
Bram Moolenaar85850f32019-07-19 22:05:51 +0200882 width maximum width of the popup
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200883 highlight highlight group of the popup (default is Pmenu)
Bram Moolenaar79648732019-07-18 21:43:07 +0200884Example: >
885 :set previewpopup=height:10,width:60
Bram Moolenaar2debf1c2019-08-04 20:44:19 +0200886
887A few peculiarities:
888- If the file is in a buffer already, it will be re-used. This will allow for
889 editing the file while it's visible in the popup window.
890- No ATTENTION dialog will be used, since you can't edit the file in the popup
891 window. However, if you later open the same buffer in a normal window, you
892 may not notice it's edited elsewhere. And when then using ":edit" to
893 trigger the ATTENTION and responding "A" for Abort, the preview window will
894 become empty.
895
Bram Moolenaar071d4272004-06-13 20:20:40 +0000896 *:pta* *:ptag*
897:pta[g][!] [tagname]
898 Does ":tag[!] [tagname]" and shows the found tag in a
899 "Preview" window without changing the current buffer or cursor
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000900 position. If a "Preview" window already exists, it is re-used
Bram Moolenaar071d4272004-06-13 20:20:40 +0000901 (like a help window is). If a new one is opened,
902 'previewheight' is used for the height of the window. See
903 also |:tag|.
904 See below for an example. |CursorHold-example|
905 Small difference from |:tag|: When [tagname] is equal to the
906 already displayed tag, the position in the matching tag list
907 is not reset. This makes the CursorHold example work after a
908 |:ptnext|.
909
910CTRL-W z *CTRL-W_z*
911CTRL-W CTRL-Z *CTRL-W_CTRL-Z* *:pc* *:pclose*
912:pc[lose][!] Close any "Preview" window currently open. When the 'hidden'
913 option is set, or when the buffer was changed and the [!] is
914 used, the buffer becomes hidden (unless there is another
915 window editing it). The command fails if any "Preview" buffer
916 cannot be closed. See also |:close|.
917
918 *:pp* *:ppop*
919:[count]pp[op][!]
920 Does ":[count]pop[!]" in the preview window. See |:pop| and
Bram Moolenaar25c9c682019-05-05 18:13:34 +0200921 |:ptag|.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000922
923CTRL-W } *CTRL-W_}*
924 Use identifier under cursor as a tag and perform a :ptag on
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000925 it. Make the new Preview window (if required) N high. If N is
Bram Moolenaar071d4272004-06-13 20:20:40 +0000926 not given, 'previewheight' is used.
927
928CTRL-W g } *CTRL-W_g}*
929 Use identifier under cursor as a tag and perform a :ptjump on
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000930 it. Make the new Preview window (if required) N high. If N is
Bram Moolenaar071d4272004-06-13 20:20:40 +0000931 not given, 'previewheight' is used.
932
933 *:ped* *:pedit*
934:ped[it][!] [++opt] [+cmd] {file}
935 Edit {file} in the preview window. The preview window is
936 opened like with |:ptag|. The current window and cursor
937 position isn't changed. Useful example: >
938 :pedit +/fputc /usr/include/stdio.h
939<
940 *:ps* *:psearch*
941:[range]ps[earch][!] [count] [/]pattern[/]
942 Works like |:ijump| but shows the found match in the preview
943 window. The preview window is opened like with |:ptag|. The
944 current window and cursor position isn't changed. Useful
945 example: >
946 :psearch popen
947< Like with the |:ptag| command, you can use this to
948 automatically show information about the word under the
949 cursor. This is less clever than using |:ptag|, but you don't
950 need a tags file and it will also find matches in system
951 include files. Example: >
952 :au! CursorHold *.[ch] nested exe "silent! psearch " . expand("<cword>")
953< Warning: This can be slow.
954
955Example *CursorHold-example* >
956
957 :au! CursorHold *.[ch] nested exe "silent! ptag " . expand("<cword>")
958
959This will cause a ":ptag" to be executed for the keyword under the cursor,
960when the cursor hasn't moved for the time set with 'updatetime'. The "nested"
961makes other autocommands be executed, so that syntax highlighting works in the
962preview window. The "silent!" avoids an error message when the tag could not
963be found. Also see |CursorHold|. To disable this again: >
964
965 :au! CursorHold
966
967A nice addition is to highlight the found tag, avoid the ":ptag" when there
968is no word under the cursor, and a few other things: >
969
970 :au! CursorHold *.[ch] nested call PreviewWord()
971 :func PreviewWord()
972 : if &previewwindow " don't do this in the preview window
973 : return
974 : endif
975 : let w = expand("<cword>") " get the word under cursor
976 : if w =~ '\a' " if the word contains a letter
977 :
978 : " Delete any existing highlight before showing another tag
979 : silent! wincmd P " jump to preview window
980 : if &previewwindow " if we really get there...
981 : match none " delete existing highlight
982 : wincmd p " back to old window
983 : endif
984 :
985 : " Try displaying a matching tag for the word under the cursor
986 : try
987 : exe "ptag " . w
988 : catch
989 : return
990 : endtry
991 :
992 : silent! wincmd P " jump to preview window
993 : if &previewwindow " if we really get there...
994 : if has("folding")
995 : silent! .foldopen " don't want a closed fold
996 : endif
997 : call search("$", "b") " to end of previous line
998 : let w = substitute(w, '\\', '\\\\', "")
999 : call search('\<\V' . w . '\>') " position cursor on match
1000 : " Add a match highlight to the word at this position
1001 : hi previewWord term=bold ctermbg=green guibg=green
1002 : exe 'match previewWord "\%' . line(".") . 'l\%' . col(".") . 'c\k*"'
1003 : wincmd p " back to old window
1004 : endif
1005 : endif
1006 :endfun
1007
1008==============================================================================
100911. Using hidden buffers *buffer-hidden*
1010
1011A hidden buffer is not displayed in a window, but is still loaded into memory.
1012This makes it possible to jump from file to file, without the need to read or
1013write the file every time you get another buffer in a window.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001014
1015 *:buffer-!*
1016If the option 'hidden' ('hid') is set, abandoned buffers are kept for all
1017commands that start editing another file: ":edit", ":next", ":tag", etc. The
1018commands that move through the buffer list sometimes make the current buffer
1019hidden although the 'hidden' option is not set. This happens when a buffer is
1020modified, but is forced (with '!') to be removed from a window, and
1021'autowrite' is off or the buffer can't be written.
1022
1023You can make a hidden buffer not hidden by starting to edit it with any
1024command. Or by deleting it with the ":bdelete" command.
1025
1026The 'hidden' is global, it is used for all buffers. The 'bufhidden' option
1027can be used to make an exception for a specific buffer. It can take these
1028values:
1029 <empty> Use the value of 'hidden'.
1030 hide Hide this buffer, also when 'hidden' is not set.
1031 unload Don't hide but unload this buffer, also when 'hidden'
1032 is set.
1033 delete Delete the buffer.
1034
1035 *hidden-quit*
1036When you try to quit Vim while there is a hidden, modified buffer, you will
1037get an error message and Vim will make that buffer the current buffer. You
1038can then decide to write this buffer (":wq") or quit without writing (":q!").
1039Be careful: there may be more hidden, modified buffers!
1040
1041A buffer can also be unlisted. This means it exists, but it is not in the
1042list of buffers. |unlisted-buffer|
1043
1044
Bram Moolenaard51cb702015-07-21 15:03:06 +02001045:files[!] [flags] *:files*
1046:buffers[!] [flags] *:buffers* *:ls*
1047:ls[!] [flags]
1048 Show all buffers. Example:
Bram Moolenaar071d4272004-06-13 20:20:40 +00001049
Bram Moolenaar97d62492012-11-15 21:28:22 +01001050 1 #h "/test/text" line 1 ~
1051 2u "asdf" line 0 ~
1052 3 %a + "version.c" line 1 ~
Bram Moolenaar071d4272004-06-13 20:20:40 +00001053
1054 When the [!] is included the list will show unlisted buffers
1055 (the term "unlisted" is a bit confusing then...).
1056
1057 Each buffer has a unique number. That number will not change,
Bram Moolenaar0122c402015-02-03 19:13:34 +01001058 thus you can always go to a specific buffer with ":buffer N"
1059 or "N CTRL-^", where N is the buffer number.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001060
Bram Moolenaarc6896e22019-05-30 22:32:34 +02001061 For the file name these special values are used:
1062 [Prompt] |prompt-buffer|
1063 [Popup] buffer of a |popup-window|
1064 [Scratch] 'buftype' is "nofile"
1065 [No Name] no file name specified
1066 For a |terminal-window| buffer the status is used.
1067
Bram Moolenaar071d4272004-06-13 20:20:40 +00001068 Indicators (chars in the same column are mutually exclusive):
1069 u an unlisted buffer (only displayed when [!] is used)
1070 |unlisted-buffer|
1071 % the buffer in the current window
1072 # the alternate buffer for ":e #" and CTRL-^
1073 a an active buffer: it is loaded and visible
1074 h a hidden buffer: It is loaded, but currently not
1075 displayed in a window |hidden-buffer|
1076 - a buffer with 'modifiable' off
1077 = a readonly buffer
Bram Moolenaarc572da52017-08-27 16:52:01 +02001078 R a terminal buffer with a running job
1079 F a terminal buffer with a finished job
Bram Moolenaar37c64c72017-09-19 22:06:03 +02001080 ? a terminal buffer without a job: `:terminal NONE`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001081 + a modified buffer
1082 x a buffer with read errors
1083
Bram Moolenaard51cb702015-07-21 15:03:06 +02001084 [flags] can be a combination of the following characters,
1085 which restrict the buffers to be listed:
1086 + modified buffers
1087 - buffers with 'modifiable' off
1088 = readonly buffers
1089 a active buffers
Bram Moolenaare392eb42015-11-19 20:38:09 +01001090 u unlisted buffers (overrides the "!")
Bram Moolenaard51cb702015-07-21 15:03:06 +02001091 h hidden buffers
1092 x buffers with a read error
1093 % current buffer
1094 # alternate buffer
Bram Moolenaar0751f512018-03-29 16:37:16 +02001095 R terminal buffers with a running job
1096 F terminal buffers with a finished job
1097 ? terminal buffers without a job: `:terminal NONE`
Bram Moolenaar52410572019-10-27 05:12:45 +01001098 t show time last used and sort buffers
Bram Moolenaard51cb702015-07-21 15:03:06 +02001099 Combining flags means they are "and"ed together, e.g.:
1100 h+ hidden buffers which are modified
1101 a+ active buffers which are modified
1102
Bram Moolenaare4a3bcf2016-08-26 19:52:37 +02001103 When using |:filter| the pattern is matched against the
1104 displayed buffer name, e.g.: >
1105 filter /\.vim/ ls
1106<
Bram Moolenaar071d4272004-06-13 20:20:40 +00001107 *:bad* *:badd*
1108:bad[d] [+lnum] {fname}
1109 Add file name {fname} to the buffer list, without loading it.
1110 If "lnum" is specified, the cursor will be positioned at that
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +00001111 line when the buffer is first entered. Note that other
Bram Moolenaar071d4272004-06-13 20:20:40 +00001112 commands after the + will be ignored.
1113
1114:[N]bd[elete][!] *:bd* *:bdel* *:bdelete* *E516*
1115:bd[elete][!] [N]
1116 Unload buffer [N] (default: current buffer) and delete it from
1117 the buffer list. If the buffer was changed, this fails,
1118 unless when [!] is specified, in which case changes are lost.
1119 The file remains unaffected. Any windows for this buffer are
1120 closed. If buffer [N] is the current buffer, another buffer
1121 will be displayed instead. This is the most recent entry in
1122 the jump list that points into a loaded buffer.
1123 Actually, the buffer isn't completely deleted, it is removed
1124 from the buffer list |unlisted-buffer| and option values,
1125 variables and mappings/abbreviations for the buffer are
Bram Moolenaar4d84d932014-11-30 14:50:16 +01001126 cleared. Examples: >
1127 :.,$-bdelete " delete buffers from the current one to
1128 " last but one
1129 :%bdelete " delete all buffers
1130<
Bram Moolenaar071d4272004-06-13 20:20:40 +00001131
1132:bdelete[!] {bufname} *E93* *E94*
Bram Moolenaar15142e22018-04-30 22:19:58 +02001133 Like ":bdelete[!] [N]", but buffer given by name, see
1134 |{bufname}|.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001135
1136:bdelete[!] N1 N2 ...
1137 Do ":bdelete[!]" for buffer N1, N2, etc. The arguments can be
1138 buffer numbers or buffer names (but not buffer names that are
1139 a number). Insert a backslash before a space in a buffer
1140 name.
1141
1142:N,Mbdelete[!] Do ":bdelete[!]" for all buffers in the range N to M
1143 |inclusive|.
1144
1145:[N]bw[ipeout][!] *:bw* *:bwipe* *:bwipeout* *E517*
1146:bw[ipeout][!] {bufname}
1147:N,Mbw[ipeout][!]
1148:bw[ipeout][!] N1 N2 ...
Bram Moolenaardf1bdc92006-02-23 21:32:16 +00001149 Like |:bdelete|, but really delete the buffer. Everything
1150 related to the buffer is lost. All marks in this buffer
1151 become invalid, option settings are lost, etc. Don't use this
Bram Moolenaar4d84d932014-11-30 14:50:16 +01001152 unless you know what you are doing. Examples: >
1153 :.+,$bwipeout " wipe out all buffers after the current
1154 " one
1155 :%bwipeout " wipe out all buffers
1156<
Bram Moolenaar071d4272004-06-13 20:20:40 +00001157
1158:[N]bun[load][!] *:bun* *:bunload* *E515*
1159:bun[load][!] [N]
1160 Unload buffer [N] (default: current buffer). The memory
1161 allocated for this buffer will be freed. The buffer remains
1162 in the buffer list.
1163 If the buffer was changed, this fails, unless when [!] is
1164 specified, in which case the changes are lost.
1165 Any windows for this buffer are closed. If buffer [N] is the
1166 current buffer, another buffer will be displayed instead.
1167 This is the most recent entry in the jump list that points
1168 into a loaded buffer.
1169
1170:bunload[!] {bufname}
Bram Moolenaar15142e22018-04-30 22:19:58 +02001171 Like ":bunload[!] [N]", but buffer given by name.
1172 Also see |{bufname}|.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001173
1174:N,Mbunload[!] Do ":bunload[!]" for all buffers in the range N to M
1175 |inclusive|.
1176
1177:bunload[!] N1 N2 ...
1178 Do ":bunload[!]" for buffer N1, N2, etc. The arguments can be
1179 buffer numbers or buffer names (but not buffer names that are
1180 a number). Insert a backslash before a space in a buffer
1181 name.
1182
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001183:[N]b[uffer][!] [+cmd] [N] *:b* *:bu* *:buf* *:buffer* *E86*
Bram Moolenaar071d4272004-06-13 20:20:40 +00001184 Edit buffer [N] from the buffer list. If [N] is not given,
1185 the current buffer remains being edited. See |:buffer-!| for
1186 [!]. This will also edit a buffer that is not in the buffer
1187 list, without setting the 'buflisted' flag.
Bram Moolenaar12969c02015-09-08 23:36:10 +02001188 Also see |+cmd|.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001189
Bram Moolenaar15142e22018-04-30 22:19:58 +02001190:[N]b[uffer][!] [+cmd] {bufname} *{bufname}*
1191 Edit buffer for {bufname} from the buffer list. A partial
1192 name also works, so long as it is unique in the list of
1193 buffers.
1194 Note that a buffer whose name is a number cannot be referenced
1195 by that name; use the buffer number instead.
1196 Insert a backslash before a space in a buffer name.
1197 See |:buffer-!| for [!].
1198 This will also edit a buffer that is not in the buffer list,
1199 without setting the 'buflisted' flag.
Bram Moolenaar12969c02015-09-08 23:36:10 +02001200 Also see |+cmd|.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001201
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001202:[N]sb[uffer] [+cmd] [N] *:sb* *:sbuffer*
Bram Moolenaar071d4272004-06-13 20:20:40 +00001203 Split window and edit buffer [N] from the buffer list. If [N]
1204 is not given, the current buffer is edited. Respects the
1205 "useopen" setting of 'switchbuf' when splitting. This will
1206 also edit a buffer that is not in the buffer list, without
1207 setting the 'buflisted' flag.
Bram Moolenaar12969c02015-09-08 23:36:10 +02001208 Also see |+cmd|.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001209
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001210:[N]sb[uffer] [+cmd] {bufname}
Bram Moolenaar15142e22018-04-30 22:19:58 +02001211 Split window and edit buffer for |{bufname}| from the buffer
Bram Moolenaar071d4272004-06-13 20:20:40 +00001212 list. This will also edit a buffer that is not in the buffer
1213 list, without setting the 'buflisted' flag.
Bram Moolenaar280f1262006-01-30 00:14:18 +00001214 Note: If what you want to do is split the buffer, make a copy
1215 under another name, you can do it this way: >
1216 :w foobar | sp #
Bram Moolenaar12969c02015-09-08 23:36:10 +02001217< Also see |+cmd|.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001218
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001219:[N]bn[ext][!] [+cmd] [N] *:bn* *:bnext* *E87*
Bram Moolenaar071d4272004-06-13 20:20:40 +00001220 Go to [N]th next buffer in buffer list. [N] defaults to one.
1221 Wraps around the end of the buffer list.
1222 See |:buffer-!| for [!].
Bram Moolenaar12969c02015-09-08 23:36:10 +02001223 Also see |+cmd|.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001224 If you are in a help buffer, this takes you to the next help
1225 buffer (if there is one). Similarly, if you are in a normal
1226 (non-help) buffer, this takes you to the next normal buffer.
1227 This is so that if you have invoked help, it doesn't get in
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +00001228 the way when you're browsing code/text buffers. The next three
Bram Moolenaar071d4272004-06-13 20:20:40 +00001229 commands also work like this.
1230
1231 *:sbn* *:sbnext*
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001232:[N]sbn[ext] [+cmd] [N]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001233 Split window and go to [N]th next buffer in buffer list.
1234 Wraps around the end of the buffer list. Uses 'switchbuf'
Bram Moolenaar12969c02015-09-08 23:36:10 +02001235 Also see |+cmd|.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001236
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001237:[N]bN[ext][!] [+cmd] [N] *:bN* *:bNext* *:bp* *:bprevious* *E88*
1238:[N]bp[revious][!] [+cmd] [N]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001239 Go to [N]th previous buffer in buffer list. [N] defaults to
1240 one. Wraps around the start of the buffer list.
1241 See |:buffer-!| for [!] and 'switchbuf'.
Bram Moolenaar12969c02015-09-08 23:36:10 +02001242 Also see |+cmd|.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001243
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001244:[N]sbN[ext] [+cmd] [N] *:sbN* *:sbNext* *:sbp* *:sbprevious*
1245:[N]sbp[revious] [+cmd] [N]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001246 Split window and go to [N]th previous buffer in buffer list.
1247 Wraps around the start of the buffer list.
1248 Uses 'switchbuf'.
Bram Moolenaar12969c02015-09-08 23:36:10 +02001249 Also see |+cmd|.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001250
Bram Moolenaar61da1bf2019-06-06 12:14:49 +02001251:br[ewind][!] [+cmd] *:br* *:bre* *:brewind*
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001252 Go to first buffer in buffer list. If the buffer list is
Bram Moolenaar071d4272004-06-13 20:20:40 +00001253 empty, go to the first unlisted buffer.
1254 See |:buffer-!| for [!].
1255
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001256:bf[irst] [+cmd] *:bf* *:bfirst*
1257 Same as |:brewind|.
1258 Also see |+cmd|.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001259
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001260:sbr[ewind] [+cmd] *:sbr* *:sbrewind*
1261 Split window and go to first buffer in buffer list. If the
Bram Moolenaar071d4272004-06-13 20:20:40 +00001262 buffer list is empty, go to the first unlisted buffer.
1263 Respects the 'switchbuf' option.
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001264 Also see |+cmd|.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001265
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001266:sbf[irst] [+cmd] *:sbf* *:sbfirst*
1267 Same as ":sbrewind".
Bram Moolenaar071d4272004-06-13 20:20:40 +00001268
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001269:bl[ast][!] [+cmd] *:bl* *:blast*
1270 Go to last buffer in buffer list. If the buffer list is
Bram Moolenaar071d4272004-06-13 20:20:40 +00001271 empty, go to the last unlisted buffer.
1272 See |:buffer-!| for [!].
1273
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001274:sbl[ast] [+cmd] *:sbl* *:sblast*
1275 Split window and go to last buffer in buffer list. If the
Bram Moolenaar071d4272004-06-13 20:20:40 +00001276 buffer list is empty, go to the last unlisted buffer.
1277 Respects 'switchbuf' option.
1278
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001279:[N]bm[odified][!] [+cmd] [N] *:bm* *:bmodified* *E84*
Bram Moolenaar071d4272004-06-13 20:20:40 +00001280 Go to [N]th next modified buffer. Note: this command also
1281 finds unlisted buffers. If there is no modified buffer the
1282 command fails.
1283
Bram Moolenaar9c8d9e12014-09-19 20:07:26 +02001284:[N]sbm[odified] [+cmd] [N] *:sbm* *:sbmodified*
Bram Moolenaar071d4272004-06-13 20:20:40 +00001285 Split window and go to [N]th next modified buffer.
1286 Respects 'switchbuf' option.
1287 Note: this command also finds buffers not in the buffer list.
1288
1289:[N]unh[ide] [N] *:unh* *:unhide* *:sun* *:sunhide*
1290:[N]sun[hide] [N]
1291 Rearrange the screen to open one window for each loaded buffer
1292 in the buffer list. When a count is given, this is the
1293 maximum number of windows to open.
1294
1295:[N]ba[ll] [N] *:ba* *:ball* *:sba* *:sball*
1296:[N]sba[ll] [N] Rearrange the screen to open one window for each buffer in
1297 the buffer list. When a count is given, this is the maximum
1298 number of windows to open. 'winheight' also limits the number
1299 of windows opened ('winwidth' if |:vertical| was prepended).
1300 Buf/Win Enter/Leave autocommands are not executed for the new
1301 windows here, that's only done when they are really entered.
Bram Moolenaar756ec0f2007-05-05 17:59:48 +00001302 When the |:tab| modifier is used new windows are opened in a
Bram Moolenaarfd2ac762006-03-01 22:09:21 +00001303 new tab, up to 'tabpagemax'.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001304
1305Note: All the commands above that start editing another buffer, keep the
1306'readonly' flag as it was. This differs from the ":edit" command, which sets
1307the 'readonly' flag each time the file is read.
1308
1309==============================================================================
131012. Special kinds of buffers *special-buffers*
1311
1312Instead of containing the text of a file, buffers can also be used for other
1313purposes. A few options can be set to change the behavior of a buffer:
1314 'bufhidden' what happens when the buffer is no longer displayed
1315 in a window.
1316 'buftype' what kind of a buffer this is
1317 'swapfile' whether the buffer will have a swap file
1318 'buflisted' buffer shows up in the buffer list
1319
1320A few useful kinds of a buffer:
1321
Bram Moolenaar280f1262006-01-30 00:14:18 +00001322quickfix Used to contain the error list or the location list. See
1323 |:cwindow| and |:lwindow|. This command sets the 'buftype'
1324 option to "quickfix". You are not supposed to change this!
1325 'swapfile' is off.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001326
1327help Contains a help file. Will only be created with the |:help|
1328 command. The flag that indicates a help buffer is internal
1329 and can't be changed. The 'buflisted' option will be reset
1330 for a help buffer.
1331
Bram Moolenaarb6e0ec62017-07-23 22:12:20 +02001332terminal A terminal window buffer, see |terminal|. The contents cannot
1333 be read or changed until the job ends.
1334
Bram Moolenaar677ee682005-01-27 14:41:15 +00001335directory Displays directory contents. Can be used by a file explorer
Bram Moolenaar071d4272004-06-13 20:20:40 +00001336 plugin. The buffer is created with these settings: >
Bram Moolenaar8ada17c2006-01-19 22:16:24 +00001337 :setlocal buftype=nowrite
1338 :setlocal bufhidden=delete
1339 :setlocal noswapfile
Bram Moolenaar071d4272004-06-13 20:20:40 +00001340< The buffer name is the name of the directory and is adjusted
1341 when using the |:cd| command.
1342
1343scratch Contains text that can be discarded at any time. It is kept
1344 when closing the window, it must be deleted explicitly.
1345 Settings: >
Bram Moolenaar8ada17c2006-01-19 22:16:24 +00001346 :setlocal buftype=nofile
1347 :setlocal bufhidden=hide
1348 :setlocal noswapfile
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +01001349< The buffer name can be used to identify the buffer, if you
1350 give it a meaningful name.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001351
1352 *unlisted-buffer*
1353unlisted The buffer is not in the buffer list. It is not used for
1354 normal editing, but to show a help file, remember a file name
1355 or marks. The ":bdelete" command will also set this option,
1356 thus it doesn't completely delete the buffer. Settings: >
Bram Moolenaar8ada17c2006-01-19 22:16:24 +00001357 :setlocal nobuflisted
Bram Moolenaar071d4272004-06-13 20:20:40 +00001358<
1359
Bram Moolenaard473c8c2018-08-11 18:00:22 +02001360 vim:tw=78:ts=8:noet:ft=help:norl: