Mercurial > vim
annotate runtime/doc/windows.txt @ 33585:e628d7f03758 v9.0.2037
patch 9.0.2037: A few remaining cmdline completion issues with C-E/Y
Commit: https://github.com/vim/vim/commit/209ec90b9b9bd948d76511c9cd2b17f47a97afe6
Author: Yee Cheng Chin <ychin.git@gmail.com>
Date: Tue Oct 17 10:56:25 2023 +0200
patch 9.0.2037: A few remaining cmdline completion issues with C-E/Y
Problem: A few remaining cmdline completion issues with C-E/Y
Solution: Fix cmdline completion fuzzy/Ctrl-E/Ctrl-Y/options when not
used at the end
Fix cmdline completion fuzzy/Ctrl-E/Ctrl-Y/options when not used at the end
A few places in the cmdline completion code only works properly when the
user hits Tab (or 'wildchar') at the end of the cmdline, even though
it's supposed to work even in the middle of the line.
For fuzzy search, `:e ++ff`, and `:set hl=`, fix completion code to make
sure to use `xp_pattern_len` instead of assuming the entire `xp_pattern`
is the search pattern (since it contains texts after the cursor).
Fix Ctrl-E / Ctrl-Y to not jump to the end when canceling/accepting a
wildmenu completion. Also, make them work even when not using
`set wildoptions+=pum` as there is no drawback to doing so.
(Related issue where this was brought up: #13331)
closes: #13362
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 17 Oct 2023 11:00:03 +0200 |
parents | def9fc5c92d1 |
children | 4635e43f2c6f |
rev | line source |
---|---|
31383 | 1 *windows.txt* For Vim version 9.0. Last change: 2022 Nov 27 |
7 | 2 |
3 | |
4 VIM REFERENCE MANUAL by Bram Moolenaar | |
5 | |
6 | |
7 Editing with multiple windows and buffers. *windows* *buffers* | |
8 | |
9 The commands which have been added to use multiple windows and buffers are | |
10 explained here. Additionally, there are explanations for commands that work | |
11 differently when used in combination with more than one window. | |
12 | |
13 The basics are explained in chapter 7 and 8 of the user manual |usr_07.txt| | |
14 |usr_08.txt|. | |
15 | |
16 1. Introduction |windows-intro| | |
17 2. Starting Vim |windows-starting| | |
18 3. Opening and closing a window |opening-window| | |
19 4. Moving cursor to other windows |window-move-cursor| | |
20 5. Moving windows around |window-moving| | |
21 6. Window resizing |window-resize| | |
22 7. Argument and buffer list commands |buffer-list| | |
23 8. Do a command in all buffers or windows |list-repeat| | |
24 9. Tag or file name under the cursor |window-tag| | |
25 10. The preview window |preview-window| | |
26 11. Using hidden buffers |buffer-hidden| | |
27 12. Special kinds of buffers |special-buffers| | |
28 | |
29 {not able to use multiple windows when the |+windows| feature was disabled at | |
30 compile time} | |
31 | |
32 ============================================================================== | |
819 | 33 1. Introduction *windows-intro* *window* |
7 | 34 |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
35 Summary: |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
36 A buffer is the in-memory text of a file. |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
37 A window is a viewport on a buffer. |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
38 A tab page is a collection of windows. |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
39 |
7 | 40 A window is a viewport onto a buffer. You can use multiple windows on one |
41 buffer, or several windows on different buffers. | |
42 | |
43 A buffer is a file loaded into memory for editing. The original file remains | |
44 unchanged until you write the buffer to the file. | |
45 | |
46 A buffer can be in one of three states: | |
47 | |
48 *active-buffer* | |
49 active: 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* | |
53 hidden: 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* | |
57 inactive: 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 | |
62 In a table: | |
63 | |
64 state displayed loaded ":buffers" ~ | |
65 in window shows ~ | |
66 active yes yes 'a' | |
67 hidden no yes 'h' | |
68 inactive no no ' ' | |
69 | |
70 Note: All CTRL-W commands can also be executed with |:wincmd|, for those | |
71 places where a Normal mode command can't be used or is inconvenient. | |
72 | |
674 | 73 The main Vim window can hold several split windows. There are also tab pages |
74 |tab-page|, each of which can hold multiple windows. | |
9975
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
9908
diff
changeset
|
75 *window-ID* *winid* *windowid* |
9286
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
7924
diff
changeset
|
76 Each window has a unique identifier called the window ID. This identifier |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
7924
diff
changeset
|
77 will not change within a Vim session. The |win_getid()| and |win_id2tabwin()| |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
7924
diff
changeset
|
78 functions can be used to convert between the window/tab number and the |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
7924
diff
changeset
|
79 identifier. There is also the window number, which may change whenever |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
7924
diff
changeset
|
80 windows are opened or closed, see |winnr()|. |
14999 | 81 The window number is only valid in one specific tab. The window ID is valid |
82 across tabs. For most functions that take a window ID or a window number, the | |
83 window number only applies to the current tab, while the window ID can refer | |
84 to a window in any tab. | |
9286
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
7924
diff
changeset
|
85 |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
7924
diff
changeset
|
86 Each buffer has a unique number and the number will not change within a Vim |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
7924
diff
changeset
|
87 session. The |bufnr()| and |bufname()| functions can be used to convert |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
7924
diff
changeset
|
88 between a buffer name and the buffer number. |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
7924
diff
changeset
|
89 |
7 | 90 ============================================================================== |
91 2. Starting Vim *windows-starting* | |
92 | |
93 By default, Vim starts with one window, just like Vi. | |
94 | |
95 The "-o" and "-O" arguments to Vim can be used to open a window for each file | |
96 in the argument list. The "-o" argument will split the windows horizontally; | |
97 the "-O" argument will split the windows vertically. If both "-o" and "-O" | |
98 are given, the last one encountered will be used to determine the split | |
99 orientation. 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 | |
103 there are more file names than windows, only N windows are opened and some | |
104 files do not get a window. If there are more windows than file names, the | |
105 last few windows will be editing empty buffers. Similarly, "-ON" opens N | |
106 windows split vertically, with the same restrictions. | |
107 | |
108 If there are many file names, the windows will become very small. You might | |
109 want to set the 'winheight' and/or 'winwidth' options to create a workable | |
110 situation. | |
111 | |
112 Buf/Win Enter/Leave |autocommand|s are not executed when opening the new | |
113 windows and reading the files, that's only done when they are really entered. | |
114 | |
115 *status-line* | |
116 A status line will be used to separate windows. The 'laststatus' option tells | |
117 when 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 | |
122 You can change the contents of the status line with the 'statusline' option. | |
40 | 123 This option can be local to the window, so that you can have a different |
124 status line in each window. | |
7 | 125 |
126 Normally, inversion is used to display the status line. This can be changed | |
127 with the 's' character in the 'highlight' option. For example, "sb" sets it to | |
128 bold 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 | |
130 the mouse is supported and enabled with the 'mouse' option, a status line can | |
131 be dragged to resize windows. | |
132 | |
133 Note: If you expect your status line to be in reverse video and it isn't, | |
134 check if the 'highlight' option contains "si". In version 3.0, this meant to | |
135 invert 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 | |
137 status line is inverted anyway; you will only see this problem on terminals | |
138 that have termcap codes for italics. | |
139 | |
20856 | 140 *filler-lines* |
23932
4549133c1e77
patch 8.2.2508: cannot change the character displayed in non existing lines
Bram Moolenaar <Bram@vim.org>
parents:
23931
diff
changeset
|
141 The lines after the last buffer line in a window are called filler lines. By |
4549133c1e77
patch 8.2.2508: cannot change the character displayed in non existing lines
Bram Moolenaar <Bram@vim.org>
parents:
23931
diff
changeset
|
142 default, these lines start with a tilde (~) character. The 'eob' item in the |
4549133c1e77
patch 8.2.2508: cannot change the character displayed in non existing lines
Bram Moolenaar <Bram@vim.org>
parents:
23931
diff
changeset
|
143 'fillchars' option can be used to change this character. By default, these |
4549133c1e77
patch 8.2.2508: cannot change the character displayed in non existing lines
Bram Moolenaar <Bram@vim.org>
parents:
23931
diff
changeset
|
144 characters are highlighted as NonText (|hl-NonText|). The EndOfBuffer |
4549133c1e77
patch 8.2.2508: cannot change the character displayed in non existing lines
Bram Moolenaar <Bram@vim.org>
parents:
23931
diff
changeset
|
145 highlight group (|hl-EndOfBuffer|) can be used to change the highlighting of |
4549133c1e77
patch 8.2.2508: cannot change the character displayed in non existing lines
Bram Moolenaar <Bram@vim.org>
parents:
23931
diff
changeset
|
146 the filler characters. |
20856 | 147 |
7 | 148 ============================================================================== |
27036 | 149 3. Opening and closing a window *opening-window* |
7 | 150 |
151 CTRL-W s *CTRL-W_s* | |
152 CTRL-W S *CTRL-W_S* | |
153 CTRL-W CTRL-S *CTRL-W_CTRL-S* | |
5741 | 154 :[N]sp[lit] [++opt] [+cmd] [file] *:sp* *:split* |
7 | 155 Split current window in two. The result is two viewports on |
5741 | 156 the same file. |
18831 | 157 |
5741 | 158 Make the new window N high (default is to use half the height |
159 of the current window). Reduces the current window height to | |
160 create room (and others, if the 'equalalways' option is set, | |
161 'eadirection' isn't "hor", and one of them is higher than the | |
162 current or the new window). | |
163 | |
164 If [file] is given it will be edited in the new window. If it | |
165 is not loaded in any buffer, it will be read. Else the new | |
166 window will use the already loaded buffer. | |
167 | |
7 | 168 Note: CTRL-S does not work on all terminals and might block |
169 further input, use CTRL-Q to get going again. | |
170 Also see |++opt| and |+cmd|. | |
27537 | 171 *E242* *E1159* |
17571 | 172 Be careful when splitting a window in an autocommand, it may |
173 mess up the window layout if this happens while making other | |
174 window layout changes. | |
7 | 175 |
176 CTRL-W CTRL-V *CTRL-W_CTRL-V* | |
177 CTRL-W v *CTRL-W_v* | |
178 :[N]vs[plit] [++opt] [+cmd] [file] *:vs* *:vsplit* | |
1354 | 179 Like |:split|, but split vertically. The windows will be |
180 spread out horizontally if | |
181 1. a width was not specified, | |
182 2. 'equalalways' is set, | |
183 3. 'eadirection' isn't "ver", and | |
1622 | 184 4. one of the other windows is wider than the current or new |
1354 | 185 window. |
29840 | 186 If N was given make the new window N columns wide, if |
187 possible. | |
7 | 188 Note: In other places CTRL-Q does the same as CTRL-V, but here |
189 it doesn't! | |
190 | |
191 CTRL-W n *CTRL-W_n* | |
33223
def9fc5c92d1
patch 9.0.1886: Various Typos
Christian Brabandt <cb@256bit.org>
parents:
31384
diff
changeset
|
192 CTRL-W CTRL-N *CTRL-W_CTRL-N* |
7 | 193 :[N]new [++opt] [+cmd] *:new* |
194 Create a new window and start editing an empty file in it. | |
195 Make new window N high (default is to use half the existing | |
196 height). Reduces the current window height to create room (and | |
197 others, if the 'equalalways' option is set and 'eadirection' | |
198 isn't "hor"). | |
199 Also see |++opt| and |+cmd|. | |
200 If 'fileformats' is not empty, the first format given will be | |
201 used for the new buffer. If 'fileformats' is empty, the | |
202 'fileformat' of the current buffer is used. This can be | |
203 overridden with the |++opt| argument. | |
204 Autocommands are executed in this order: | |
205 1. WinLeave for the current window | |
206 2. WinEnter for the new window | |
207 3. BufLeave for the current buffer | |
208 4. BufEnter for the new buffer | |
3465 | 209 This behaves like a ":split" first, and then an ":enew" |
210 command. | |
7 | 211 |
212 :[N]new [++opt] [+cmd] {file} | |
213 :[N]sp[lit] [++opt] [+cmd] {file} *:split_f* | |
3465 | 214 Create a new window and start editing file {file} in it. This |
23931 | 215 behaves almost like a ":split" first, and then an ":edit" |
216 command, but the alternate file name in the original window is | |
217 set to {file}. | |
7 | 218 If [+cmd] is given, execute the command when the file has been |
219 loaded |+cmd|. | |
220 Also see |++opt|. | |
221 Make new window N high (default is to use half the existing | |
222 height). Reduces the current window height to create room | |
223 (and others, if the 'equalalways' option is set). | |
224 | |
23305 | 225 :[N]vne[w] [++opt] [+cmd] [file] *:vne* *:vnew* |
226 Like |:new|, but split vertically. If 'equalalways' is set | |
227 and 'eadirection' isn't "ver" the windows will be spread out | |
228 horizontally, unless a width was specified. | |
229 | |
19721 | 230 :[N]sv[iew] [++opt] [+cmd] [file] *:sv* *:sview* *splitview* |
7 | 231 Same as ":split", but set 'readonly' option for this buffer. |
232 | |
16944 | 233 :[N]sf[ind] [++opt] [+cmd] {file} *:sf* *:sfi* *:sfind* *splitfind* |
1668 | 234 Same as ":split", but search for {file} in 'path' like in |
235 |:find|. Doesn't split if {file} is not found. | |
7 | 236 |
237 CTRL-W CTRL-^ *CTRL-W_CTRL-^* *CTRL-W_^* | |
15006
1fd8e32532f7
patch 8.1.0514: CTRL-W ^ does not work when alternate buffer has no name
Bram Moolenaar <Bram@vim.org>
parents:
14999
diff
changeset
|
238 CTRL-W ^ Split the current window in two and edit the alternate file. |
1fd8e32532f7
patch 8.1.0514: CTRL-W ^ does not work when alternate buffer has no name
Bram Moolenaar <Bram@vim.org>
parents:
14999
diff
changeset
|
239 When a count N is given, split the current window and edit |
1fd8e32532f7
patch 8.1.0514: CTRL-W ^ does not work when alternate buffer has no name
Bram Moolenaar <Bram@vim.org>
parents:
14999
diff
changeset
|
240 buffer N. Similar to ":sp #" and ":sp #N", but it allows the |
1fd8e32532f7
patch 8.1.0514: CTRL-W ^ does not work when alternate buffer has no name
Bram Moolenaar <Bram@vim.org>
parents:
14999
diff
changeset
|
241 other buffer to be unnamed. This command matches the behavior |
1fd8e32532f7
patch 8.1.0514: CTRL-W ^ does not work when alternate buffer has no name
Bram Moolenaar <Bram@vim.org>
parents:
14999
diff
changeset
|
242 of |CTRL-^|, except that it splits a window first. |
7 | 243 |
11763
21f3930dfe6e
Documentation updates.
Christian Brabandt <cb@256bit.org>
parents:
10449
diff
changeset
|
244 *CTRL-W_:* |
14123 | 245 CTRL-W : Does the same as typing |:| - enter a command line. Useful in a |
11763
21f3930dfe6e
Documentation updates.
Christian Brabandt <cb@256bit.org>
parents:
10449
diff
changeset
|
246 terminal window, where all Vim commands must be preceded with |
14123 | 247 CTRL-W or 'termwinkey'. |
11763
21f3930dfe6e
Documentation updates.
Christian Brabandt <cb@256bit.org>
parents:
10449
diff
changeset
|
248 |
7 | 249 Note that the 'splitbelow' and 'splitright' options influence where a new |
250 window will appear. | |
27036 | 251 *E36* |
252 Creating a window will fail if there is not enough room. Every window needs | |
253 at least one screen line and column, sometimes more. Options 'winminheight' | |
254 and 'winminwidth' are relevant. | |
7 | 255 |
256 *:vert* *:vertical* | |
257 :vert[ical] {cmd} | |
258 Execute {cmd}. If it contains a command that splits a window, | |
30009
b97a870a7c63
patch 9.0.0342: ":wincmd =" equalizes in two directions
Bram Moolenaar <Bram@vim.org>
parents:
29853
diff
changeset
|
259 it will be split vertically. For `vertical wincmd =` windows |
30085 | 260 will be equalized only vertically. |
1123 | 261 Doesn't work for |:execute| and |:normal|. |
7 | 262 |
30009
b97a870a7c63
patch 9.0.0342: ":wincmd =" equalizes in two directions
Bram Moolenaar <Bram@vim.org>
parents:
29853
diff
changeset
|
263 *:hor* *:horizontal* |
b97a870a7c63
patch 9.0.0342: ":wincmd =" equalizes in two directions
Bram Moolenaar <Bram@vim.org>
parents:
29853
diff
changeset
|
264 :hor[izontal] {cmd} |
b97a870a7c63
patch 9.0.0342: ":wincmd =" equalizes in two directions
Bram Moolenaar <Bram@vim.org>
parents:
29853
diff
changeset
|
265 Execute {cmd}. Currently only makes a difference for |
30085 | 266 `horizontal wincmd =`, which will equalize windows only |
30009
b97a870a7c63
patch 9.0.0342: ":wincmd =" equalizes in two directions
Bram Moolenaar <Bram@vim.org>
parents:
29853
diff
changeset
|
267 horizontally. |
b97a870a7c63
patch 9.0.0342: ":wincmd =" equalizes in two directions
Bram Moolenaar <Bram@vim.org>
parents:
29853
diff
changeset
|
268 |
7 | 269 :lefta[bove] {cmd} *:lefta* *:leftabove* |
270 :abo[veleft] {cmd} *:abo* *:aboveleft* | |
271 Execute {cmd}. If it contains a command that splits a window, | |
272 it will be opened left (vertical split) or above (horizontal | |
273 split) the current window. Overrules 'splitbelow' and | |
274 'splitright'. | |
1123 | 275 Doesn't work for |:execute| and |:normal|. |
7 | 276 |
277 :rightb[elow] {cmd} *:rightb* *:rightbelow* | |
278 :bel[owright] {cmd} *:bel* *:belowright* | |
279 Execute {cmd}. If it contains a command that splits a window, | |
280 it will be opened right (vertical split) or below (horizontal | |
281 split) the current window. Overrules 'splitbelow' and | |
282 'splitright'. | |
1123 | 283 Doesn't work for |:execute| and |:normal|. |
7 | 284 |
285 *:topleft* *E442* | |
286 :to[pleft] {cmd} | |
287 Execute {cmd}. If it contains a command that splits a window, | |
288 it will appear at the top and occupy the full width of the Vim | |
289 window. When the split is vertical the window appears at the | |
290 far left and occupies the full height of the Vim window. | |
1123 | 291 Doesn't work for |:execute| and |:normal|. |
7 | 292 |
9737
35ce559b8553
commit https://github.com/vim/vim/commit/bc8801c9317eb721a2ee91322669f2dd5d136380
Christian Brabandt <cb@256bit.org>
parents:
9286
diff
changeset
|
293 *:bo* *:botright* |
7 | 294 :bo[tright] {cmd} |
295 Execute {cmd}. If it contains a command that splits a window, | |
296 it will appear at the bottom and occupy the full width of the | |
297 Vim window. When the split is vertical the window appears at | |
298 the far right and occupies the full height of the Vim window. | |
1123 | 299 Doesn't work for |:execute| and |:normal|. |
7 | 300 |
301 These command modifiers can be combined to make a vertically split window | |
302 occupy the full height. Example: > | |
3082 | 303 :vertical topleft split tags |
7 | 304 Opens a vertically split, full-height window on the "tags" file at the far |
305 left of the Vim window. | |
306 | |
307 | |
308 Closing a window | |
309 ---------------- | |
310 | |
6398 | 311 :q[uit] |
25773 | 312 :{count}q[uit] *:count_quit* |
7 | 313 CTRL-W q *CTRL-W_q* |
314 CTRL-W CTRL-Q *CTRL-W_CTRL-Q* | |
6398 | 315 Without {count}: Quit the current window. If {count} is |
316 given quit the {count} window. | |
20379 | 317 *edit-window* |
318 When quitting the last edit window (not counting help or | |
319 preview windows), exit Vim. | |
18831 | 320 |
6398 | 321 When 'hidden' is set, and there is only one window for the |
322 current buffer, it becomes hidden. When 'hidden' is not set, | |
323 and there is only one window for the current buffer, and the | |
324 buffer was changed, the command fails. | |
18831 | 325 |
6421 | 326 (Note: CTRL-Q does not work on all terminals). |
18831 | 327 |
6421 | 328 If [count] is greater than the last window number the last |
329 window will be closed: > | |
6398 | 330 :1quit " quit the first window |
331 :$quit " quit the last window | |
332 :9quit " quit the last window | |
10301
07d2b5a3b7cc
commit https://github.com/vim/vim/commit/46fceaaa8d1447a9588736d86eb4908214187b08
Christian Brabandt <cb@256bit.org>
parents:
10198
diff
changeset
|
333 " if there are fewer than 9 windows opened |
07d2b5a3b7cc
commit https://github.com/vim/vim/commit/46fceaaa8d1447a9588736d86eb4908214187b08
Christian Brabandt <cb@256bit.org>
parents:
10198
diff
changeset
|
334 :-quit " quit the previous window |
6398 | 335 :+quit " quit the next window |
6421 | 336 :+2quit " quit the second next window |
6398 | 337 < |
20379 | 338 When closing a help window, and this is not the only window, |
339 Vim will try to restore the previous window layout, see | |
340 |:helpclose|. | |
18456 | 341 |
6398 | 342 :q[uit]! |
343 :{count}q[uit]! | |
344 Without {count}: Quit the current window. If {count} is | |
345 given quit the {count} window. | |
7 | 346 |
6398 | 347 If this was the last window for a buffer, any changes to that |
348 buffer are lost. When quitting the last window (not counting | |
349 help windows), exit Vim. The contents of the buffer are lost, | |
350 even when 'hidden' is set. | |
351 | |
352 :clo[se][!] | |
353 :{count}clo[se][!] | |
7 | 354 CTRL-W c *CTRL-W_c* *:clo* *:close* |
6398 | 355 Without {count}: Close the current window. If {count} is |
356 given close the {count} window. | |
357 | |
358 When the 'hidden' option is set, or when the buffer was | |
359 changed and the [!] is used, the buffer becomes hidden (unless | |
360 there is another window editing it). | |
18831 | 361 |
20379 | 362 When there is only one |edit-window| in the current tab page |
363 and there is another tab page, this closes the current tab | |
364 page. |tab-page|. | |
6398 | 365 |
7 | 366 This command fails when: *E444* |
367 - There is only one window on the screen. | |
368 - When 'hidden' is not set, [!] is not used, the buffer has | |
369 changes, and there is no other window on this buffer. | |
370 Changes to the buffer are not written and won't get lost, so | |
371 this is a "safe" command. | |
372 | |
373 CTRL-W CTRL-C *CTRL-W_CTRL-C* | |
374 You might have expected that CTRL-W CTRL-C closes the current | |
375 window, but that does not work, because the CTRL-C cancels the | |
376 command. | |
377 | |
378 *:hide* | |
6398 | 379 :hid[e] |
380 :{count}hid[e] | |
12254 | 381 Without {count}: Quit the current window, unless it is the |
382 last window on the screen. | |
383 If {count} is given quit the {count} window. | |
18831 | 384 |
6398 | 385 The buffer becomes hidden (unless there is another window |
6421 | 386 editing it or 'bufhidden' is "unload", "delete" or "wipe"). |
387 If the window is the last one in the current tab page the tab | |
18831 | 388 page is closed. |tab-page| |
389 | |
6398 | 390 The value of 'hidden' is irrelevant for this command. Changes |
391 to the buffer are not written and won't get lost, so this is a | |
392 "safe" command. | |
7 | 393 |
394 :hid[e] {cmd} Execute {cmd} with 'hidden' is set. The previous value of | |
395 'hidden' is restored after {cmd} has been executed. | |
396 Example: > | |
397 :hide edit Makefile | |
398 < This will edit "Makefile", and hide the current buffer if it | |
399 has any changes. | |
400 | |
6398 | 401 :on[ly][!] |
402 :{count}on[ly][!] | |
7 | 403 CTRL-W o *CTRL-W_o* *E445* |
404 CTRL-W CTRL-O *CTRL-W_CTRL-O* *:on* *:only* | |
6398 | 405 Make the current window the only one on the screen. All other |
25773 | 406 windows are closed. For {count} see the `:quit` command |
407 above |:count_quit|. | |
18831 | 408 |
7 | 409 When the 'hidden' option is set, all buffers in closed windows |
410 become hidden. | |
18831 | 411 |
7 | 412 When 'hidden' is not set, and the 'autowrite' option is set, |
413 modified buffers are written. Otherwise, windows that have | |
414 buffers that are modified are not removed, unless the [!] is | |
415 given, then they become hidden. But modified buffers are | |
416 never abandoned, so changes cannot get lost. | |
417 | |
418 ============================================================================== | |
419 4. Moving cursor to other windows *window-move-cursor* | |
420 | |
421 CTRL-W <Down> *CTRL-W_<Down>* | |
422 CTRL-W CTRL-J *CTRL-W_CTRL-J* *CTRL-W_j* | |
423 CTRL-W j Move cursor to Nth window below current one. Uses the cursor | |
424 position to select between alternatives. | |
425 | |
426 CTRL-W <Up> *CTRL-W_<Up>* | |
427 CTRL-W CTRL-K *CTRL-W_CTRL-K* *CTRL-W_k* | |
428 CTRL-W k Move cursor to Nth window above current one. Uses the cursor | |
429 position to select between alternatives. | |
430 | |
431 CTRL-W <Left> *CTRL-W_<Left>* | |
432 CTRL-W CTRL-H *CTRL-W_CTRL-H* | |
433 CTRL-W <BS> *CTRL-W_<BS>* *CTRL-W_h* | |
434 CTRL-W h Move cursor to Nth window left of current one. Uses the | |
435 cursor position to select between alternatives. | |
436 | |
437 CTRL-W <Right> *CTRL-W_<Right>* | |
438 CTRL-W CTRL-L *CTRL-W_CTRL-L* *CTRL-W_l* | |
439 CTRL-W l Move cursor to Nth window right of current one. Uses the | |
440 cursor position to select between alternatives. | |
441 | |
442 CTRL-W w *CTRL-W_w* *CTRL-W_CTRL-W* | |
443 CTRL-W CTRL-W Without count: move cursor to window below/right of the | |
444 current one. If there is no window below or right, go to | |
445 top-left window. | |
446 With count: go to Nth window (windows are numbered from | |
447 top-left to bottom-right). To obtain the window number see | |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
448 |bufwinnr()| and |winnr()|. When N is larger than the number |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
449 of windows go to the last window. |
7 | 450 |
451 *CTRL-W_W* | |
452 CTRL-W W Without count: move cursor to window above/left of current | |
453 one. If there is no window above or left, go to bottom-right | |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
454 window. With count: go to Nth window, like with CTRL-W w. |
7 | 455 |
456 CTRL-W t *CTRL-W_t* *CTRL-W_CTRL-T* | |
457 CTRL-W CTRL-T Move cursor to top-left window. | |
458 | |
459 CTRL-W b *CTRL-W_b* *CTRL-W_CTRL-B* | |
460 CTRL-W CTRL-B Move cursor to bottom-right window. | |
461 | |
462 CTRL-W p *CTRL-W_p* *CTRL-W_CTRL-P* | |
463 CTRL-W CTRL-P Go to previous (last accessed) window. | |
464 | |
465 *CTRL-W_P* *E441* | |
466 CTRL-W P Go to preview window. When there is no preview window this is | |
467 an error. | |
468 {not available when compiled without the |+quickfix| feature} | |
469 | |
470 If Visual mode is active and the new window is not for the same buffer, the | |
471 Visual mode is ended. If the window is on the same buffer, the cursor | |
472 position is set to keep the same Visual area selected. | |
473 | |
474 *:winc* *:wincmd* | |
475 These commands can also be executed with ":wincmd": | |
476 | |
477 :[count]winc[md] {arg} | |
478 Like executing CTRL-W [count] {arg}. Example: > | |
479 :wincmd j | |
480 < Moves to the window below the current one. | |
481 This command is useful when a Normal mode cannot be used (for | |
482 the |CursorHold| autocommand event). Or when a Normal mode | |
483 command is inconvenient. | |
484 The count can also be a window number. Example: > | |
27903 | 485 :exe nr .. "wincmd w" |
7 | 486 < This goes to window "nr". |
487 | |
488 ============================================================================== | |
489 5. Moving windows around *window-moving* | |
490 | |
491 CTRL-W r *CTRL-W_r* *CTRL-W_CTRL-R* *E443* | |
492 CTRL-W CTRL-R Rotate windows downwards/rightwards. The first window becomes | |
493 the second one, the second one becomes the third one, etc. | |
494 The last window becomes the first window. The cursor remains | |
495 in the same window. | |
496 This only works within the row or column of windows that the | |
497 current window is in. | |
498 | |
499 *CTRL-W_R* | |
500 CTRL-W R Rotate windows upwards/leftwards. The second window becomes | |
501 the first one, the third one becomes the second one, etc. The | |
502 first window becomes the last window. The cursor remains in | |
503 the same window. | |
504 This only works within the row or column of windows that the | |
505 current window is in. | |
506 | |
507 CTRL-W x *CTRL-W_x* *CTRL-W_CTRL-X* | |
508 CTRL-W CTRL-X Without count: Exchange current window with next one. If there | |
509 is no next window, exchange with previous window. | |
510 With count: Exchange current window with Nth window (first | |
511 window is 1). The cursor is put in the other window. | |
512 When vertical and horizontal window splits are mixed, the | |
513 exchange is only done in the row or column of windows that the | |
514 current window is in. | |
515 | |
516 The following commands can be used to change the window layout. For example, | |
517 when there are two vertically split windows, CTRL-W K will change that in | |
518 horizontally split windows. CTRL-W H does it the other way around. | |
519 | |
520 *CTRL-W_K* | |
521 CTRL-W K Move the current window to be at the very top, using the full | |
522 width of the screen. This works like closing the current | |
523 window and then creating another one with ":topleft split", | |
524 except that the current window contents is used for the new | |
525 window. | |
526 | |
527 *CTRL-W_J* | |
528 CTRL-W J Move the current window to be at the very bottom, using the | |
529 full width of the screen. This works like closing the current | |
530 window and then creating another one with ":botright split", | |
531 except that the current window contents is used for the new | |
532 window. | |
533 | |
534 *CTRL-W_H* | |
535 CTRL-W H Move the current window to be at the far left, using the | |
536 full height of the screen. This works like closing the | |
537 current window and then creating another one with | |
24468 | 538 `:vert topleft split`, except that the current window contents |
7 | 539 is used for the new window. |
540 | |
541 *CTRL-W_L* | |
542 CTRL-W L Move the current window to be at the far right, using the full | |
543 height of the screen. This works like closing the | |
544 current window and then creating another one with | |
24468 | 545 `:vert botright split`, except that the current window |
7 | 546 contents is used for the new window. |
547 | |
826 | 548 *CTRL-W_T* |
549 CTRL-W T Move the current window to a new tab page. This fails if | |
550 there is only one window in the current tab page. | |
551 When a count is specified the new tab page will be opened | |
552 before the tab page with this index. Otherwise it comes after | |
553 the current tab page. | |
554 | |
7 | 555 ============================================================================== |
556 6. Window resizing *window-resize* | |
557 | |
558 *CTRL-W_=* | |
559 CTRL-W = Make all windows (almost) equally high and wide, but use | |
560 'winheight' and 'winwidth' for the current window. | |
1123 | 561 Windows with 'winfixheight' set keep their height and windows |
562 with 'winfixwidth' set keep their width. | |
30009
b97a870a7c63
patch 9.0.0342: ":wincmd =" equalizes in two directions
Bram Moolenaar <Bram@vim.org>
parents:
29853
diff
changeset
|
563 To equalize only vertically (make window equally high) use |
31028 | 564 `vertical wincmd =`. |
30009
b97a870a7c63
patch 9.0.0342: ":wincmd =" equalizes in two directions
Bram Moolenaar <Bram@vim.org>
parents:
29853
diff
changeset
|
565 To equalize only horizontally (make window equally wide) use |
31028 | 566 `horizontal wincmd =`. |
7 | 567 |
568 :res[ize] -N *:res* *:resize* *CTRL-W_-* | |
569 CTRL-W - Decrease current window height by N (default 1). | |
2152 | 570 If used after |:vertical|: decrease width by N. |
7 | 571 |
572 :res[ize] +N *CTRL-W_+* | |
573 CTRL-W + Increase current window height by N (default 1). | |
2152 | 574 If used after |:vertical|: increase width by N. |
7 | 575 |
576 :res[ize] [N] | |
577 CTRL-W CTRL-_ *CTRL-W_CTRL-_* *CTRL-W__* | |
578 CTRL-W _ Set current window height to N (default: highest possible). | |
579 | |
18489 | 580 :{winnr}res[ize] [+-]N |
581 Like `:resize` above, but apply the size to window {winnr} | |
582 instead of the current window. | |
583 | |
7 | 584 z{nr}<CR> Set current window height to {nr}. |
585 | |
586 *CTRL-W_<* | |
587 CTRL-W < Decrease current window width by N (default 1). | |
588 | |
589 *CTRL-W_>* | |
590 CTRL-W > Increase current window width by N (default 1). | |
591 | |
24468 | 592 :vert[ical] res[ize] [N] *:vertical-resize* *CTRL-W_bar* |
7 | 593 CTRL-W | Set current window width to N (default: widest possible). |
594 | |
595 You can also resize a window by dragging a status line up or down with the | |
596 mouse. Or by dragging a vertical separator line left or right. This only | |
597 works if the version of Vim that is being used supports the mouse and the | |
598 'mouse' option has been set to enable it. | |
599 | |
600 The option 'winheight' ('wh') is used to set the minimal window height of the | |
601 current window. This option is used each time another window becomes the | |
602 current window. If the option is '0', it is disabled. Set 'winheight' to a | |
603 very large value, e.g., '9999', to make the current window always fill all | |
604 available space. Set it to a reasonable value, e.g., '10', to make editing in | |
605 the current window comfortable. | |
606 | |
607 The equivalent 'winwidth' ('wiw') option is used to set the minimal width of | |
608 the current window. | |
609 | |
610 When the option 'equalalways' ('ea') is set, all the windows are automatically | |
611 made the same size after splitting or closing a window. If you don't set this | |
612 option, splitting a window will reduce the size of the current window and | |
613 leave the other windows the same. When closing a window, the extra lines are | |
614 given to the window above it. | |
615 | |
616 The 'eadirection' option limits the direction in which the 'equalalways' | |
617 option is applied. The default "both" resizes in both directions. When the | |
618 value is "ver" only the heights of windows are equalized. Use this when you | |
619 have manually resized a vertically split window and want to keep this width. | |
620 Likewise, "hor" causes only the widths of windows to be equalized. | |
621 | |
622 The option 'cmdheight' ('ch') is used to set the height of the command-line. | |
623 If you are annoyed by the |hit-enter| prompt for long messages, set this | |
624 option to 2 or 3. | |
625 | |
626 If there is only one window, resizing that window will also change the command | |
627 line height. If there are several windows, resizing the current window will | |
628 also change the height of the window below it (and sometimes the window above | |
629 it). | |
630 | |
631 The minimal height and width of a window is set with 'winminheight' and | |
632 'winminwidth'. These are hard values, a window will never become smaller. | |
633 | |
31166
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
634 |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
635 WinScrolled and WinResized autocommands ~ |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
636 *win-scrolled-resized* |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
637 If you want to get notified of changes in window sizes, the |WinResized| |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
638 autocommand event can be used. |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
639 If you want to get notified of text in windows scrolling vertically or |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
640 horizontally, the |WinScrolled| autocommand event can be used. This will also |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
641 trigger in window size changes. |
31383 | 642 Exception: the events will not be triggered when the text scrolls for |
643 'incsearch'. | |
31166
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
644 *WinResized-event* |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
645 The |WinResized| event is triggered after updating the display, several |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
646 windows may have changed size then. A list of the IDs of windows that changed |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
647 since last time is provided in the v:event.windows variable, for example: |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
648 [1003, 1006] |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
649 *WinScrolled-event* |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
650 The |WinScrolled| event is triggered after |WinResized|, and also if a window |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
651 was scrolled. That can be vertically (the text at the top of the window |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
652 changed) or horizontally (when 'wrap' is off or when the first displayed part |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
653 of the first line changes). Note that |WinScrolled| will trigger many more |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
654 times than |WinResized|, it may slow down editing a bit. |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
655 |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
656 The information provided by |WinScrolled| is a dictionary for each window that |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
657 has changes, using the window ID as the key, and a total count of the changes |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
658 with the key "all". Example value for |v:event| (|Vim9| syntax): |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
659 { |
31384
992bfd3aee3f
patch 9.0.1025: WinScrolled is not triggered when filler lines change
Bram Moolenaar <Bram@vim.org>
parents:
31383
diff
changeset
|
660 all: {width: 0, height: 2, leftcol: 0, skipcol: 0, topline: 1, topfill: 0}, |
992bfd3aee3f
patch 9.0.1025: WinScrolled is not triggered when filler lines change
Bram Moolenaar <Bram@vim.org>
parents:
31383
diff
changeset
|
661 1003: {width: 0, height: -1, leftcol: 0, skipcol: 0, topline: 0, topfill: 0}, |
992bfd3aee3f
patch 9.0.1025: WinScrolled is not triggered when filler lines change
Bram Moolenaar <Bram@vim.org>
parents:
31383
diff
changeset
|
662 1006: {width: 0, height: 1, leftcol: 0, skipcol: 0, topline: 1, topfill: 0}, |
31166
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
663 } |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
664 |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
665 Note that the "all" entry has the absolute values of the individual windows |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
666 accumulated. |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
667 |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
668 If you need more information about what changed, or you want to "debounce" the |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
669 events (not handle every event to avoid doing too much work), you may want to |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
670 use the `winlayout()` and `getwininfo()` functions. |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
671 |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
672 |WinScrolled| and |WinResized| do not trigger when the first autocommand is |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
673 added, only after the first scroll or resize. They may trigger when switching |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
674 to another tab page. |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
675 |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
676 The commands executed are expected to not cause window size or scroll changes. |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
677 If this happens anyway, the event will trigger again very soon. In other |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
678 words: Just before triggering the event, the current sizes and scroll |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
679 positions are stored and used to decide whether there was a change. |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
680 *E1312* |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
681 It is not allowed to change the window layout here (split, close or move |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
682 windows). |
a86ee6c0309e
patch 9.0.0917: the WinScrolled autocommand event is not enough
Bram Moolenaar <Bram@vim.org>
parents:
31028
diff
changeset
|
683 |
7 | 684 ============================================================================== |
685 7. Argument and buffer list commands *buffer-list* | |
686 | |
687 args list buffer list meaning ~ | |
688 1. :[N]argument [N] 11. :[N]buffer [N] to arg/buf N | |
689 2. :[N]next [file ..] 12. :[N]bnext [N] to Nth next arg/buf | |
690 3. :[N]Next [N] 13. :[N]bNext [N] to Nth previous arg/buf | |
691 4. :[N]previous [N] 14. :[N]bprevious [N] to Nth previous arg/buf | |
692 5. :rewind / :first 15. :brewind / :bfirst to first arg/buf | |
693 6. :last 16. :blast to last arg/buf | |
694 7. :all 17. :ball edit all args/buffers | |
695 18. :unhide edit all loaded buffers | |
696 19. :[N]bmod [N] to Nth modified buf | |
697 | |
698 split & args list split & buffer list meaning ~ | |
699 21. :[N]sargument [N] 31. :[N]sbuffer [N] split + to arg/buf N | |
700 22. :[N]snext [file ..] 32. :[N]sbnext [N] split + to Nth next arg/buf | |
701 23. :[N]sNext [N] 33. :[N]sbNext [N] split + to Nth previous arg/buf | |
702 24. :[N]sprevious [N] 34. :[N]sbprevious [N] split + to Nth previous arg/buf | |
703 25. :srewind / :sfirst 35. :sbrewind / :sbfirst split + to first arg/buf | |
704 26. :slast 36. :sblast split + to last arg/buf | |
237 | 705 27. :sall 37. :sball edit all args/buffers |
7 | 706 38. :sunhide edit all loaded buffers |
707 39. :[N]sbmod [N] split + to Nth modified buf | |
708 | |
709 40. :args list of arguments | |
710 41. :buffers list of buffers | |
711 | |
712 The meaning of [N] depends on the command: | |
12559 | 713 [N] is the number of buffers to go forward/backward on 2/12/22/32, |
714 3/13/23/33, and 4/14/24/34 | |
7 | 715 [N] is an argument number, defaulting to current argument, for 1 and 21 |
716 [N] is a buffer number, defaulting to current buffer, for 11 and 31 | |
717 [N] is a count for 19 and 39 | |
718 | |
719 Note: ":next" is an exception, because it must accept a list of file names | |
720 for compatibility with Vi. | |
721 | |
722 | |
723 The argument list and multiple windows | |
724 -------------------------------------- | |
725 | |
726 The current position in the argument list can be different for each window. | |
727 Remember that when doing ":e file", the position in the argument list stays | |
728 the same, but you are not editing the file at that position. To indicate | |
729 this, the file message (and the title, if you have one) shows | |
730 "(file (N) of M)", where "(N)" is the current position in the file list, and | |
731 "M" the number of files in the file list. | |
732 | |
733 All the entries in the argument list are added to the buffer list. Thus, you | |
734 can also get to them with the buffer list commands, like ":bnext". | |
735 | |
736 :[N]al[l][!] [N] *:al* *:all* *:sal* *:sall* | |
737 :[N]sal[l][!] [N] | |
738 Rearrange the screen to open one window for each argument. | |
739 All other windows are closed. When a count is given, this is | |
740 the maximum number of windows to open. | |
699 | 741 With the |:tab| modifier open a tab page for each argument. |
742 When there are more arguments than 'tabpagemax' further ones | |
743 become split windows in the last tab page. | |
7 | 744 When the 'hidden' option is set, all buffers in closed windows |
745 become hidden. | |
746 When 'hidden' is not set, and the 'autowrite' option is set, | |
747 modified buffers are written. Otherwise, windows that have | |
748 buffers that are modified are not removed, unless the [!] is | |
749 given, then they become hidden. But modified buffers are | |
750 never abandoned, so changes cannot get lost. | |
751 [N] is the maximum number of windows to open. 'winheight' | |
752 also limits the number of windows opened ('winwidth' if | |
753 |:vertical| was prepended). | |
754 Buf/Win Enter/Leave autocommands are not executed for the new | |
755 windows here, that's only done when they are really entered. | |
17571 | 756 If autocommands change the window layout while this command is |
757 busy an error will be given. *E249* | |
7 | 758 |
759 :[N]sa[rgument][!] [++opt] [+cmd] [N] *:sa* *:sargument* | |
760 Short for ":split | argument [N]": split window and go to Nth | |
761 argument. But when there is no such argument, the window is | |
762 not split. Also see |++opt| and |+cmd|. | |
763 | |
764 :[N]sn[ext][!] [++opt] [+cmd] [file ..] *:sn* *:snext* | |
765 Short for ":split | [N]next": split window and go to Nth next | |
766 argument. But when there is no next file, the window is not | |
767 split. Also see |++opt| and |+cmd|. | |
768 | |
769 :[N]spr[evious][!] [++opt] [+cmd] [N] *:spr* *:sprevious* | |
770 :[N]sN[ext][!] [++opt] [+cmd] [N] *:sN* *:sNext* | |
771 Short for ":split | [N]Next": split window and go to Nth | |
772 previous argument. But when there is no previous file, the | |
773 window is not split. Also see |++opt| and |+cmd|. | |
774 | |
775 *:sre* *:srewind* | |
776 :sre[wind][!] [++opt] [+cmd] | |
777 Short for ":split | rewind": split window and go to first | |
778 argument. But when there is no argument list, the window is | |
779 not split. Also see |++opt| and |+cmd|. | |
780 | |
781 *:sfir* *:sfirst* | |
168 | 782 :sfir[st] [++opt] [+cmd] |
7 | 783 Same as ":srewind". |
784 | |
785 *:sla* *:slast* | |
786 :sla[st][!] [++opt] [+cmd] | |
787 Short for ":split | last": split window and go to last | |
788 argument. But when there is no argument list, the window is | |
789 not split. Also see |++opt| and |+cmd|. | |
790 | |
791 *:dr* *:drop* | |
1702 | 792 :dr[op] [++opt] [+cmd] {file} .. |
7 | 793 Edit the first {file} in a window. |
794 - If the file is already open in a window change to that | |
795 window. | |
796 - If the file is not open in a window edit the file in the | |
797 current window. If the current buffer can't be |abandon|ed, | |
798 the window is split first. | |
10449
222b1432814e
commit https://github.com/vim/vim/commit/5162822914372fc916a93f85848c0c82209e7cec
Christian Brabandt <cb@256bit.org>
parents:
10301
diff
changeset
|
799 - Windows that are not in the argument list or are not full |
222b1432814e
commit https://github.com/vim/vim/commit/5162822914372fc916a93f85848c0c82209e7cec
Christian Brabandt <cb@256bit.org>
parents:
10301
diff
changeset
|
800 width will be closed if possible. |
7 | 801 The |argument-list| is set, like with the |:next| command. |
802 The purpose of this command is that it can be used from a | |
803 program that wants Vim to edit another file, e.g., a debugger. | |
819 | 804 When using the |:tab| modifier each argument is opened in a |
805 tab page. The last window is used if it's empty. | |
1702 | 806 Also see |++opt| and |+cmd|. |
7 | 807 |
808 ============================================================================== | |
809 8. Do a command in all buffers or windows *list-repeat* | |
810 | |
811 *:windo* | |
6474 | 812 :[range]windo {cmd} Execute {cmd} in each window or if [range] is given |
813 only in windows for which the window number lies in | |
814 the [range]. It works like doing this: > | |
7 | 815 CTRL-W t |
816 :{cmd} | |
817 CTRL-W w | |
818 :{cmd} | |
819 etc. | |
685 | 820 < This only operates in the current tab page. |
674 | 821 When an error is detected on one window, further |
7 | 822 windows will not be visited. |
823 The last window (or where an error occurred) becomes | |
824 the current window. | |
825 {cmd} can contain '|' to concatenate several commands. | |
826 {cmd} must not open or close windows or reorder them. | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16023
diff
changeset
|
827 |
7092
64e30831fa42
commit https://github.com/vim/vim/commit/aa23b379421aa214e6543b06c974594a25799b09
Christian Brabandt <cb@256bit.org>
parents:
6951
diff
changeset
|
828 Also see |:tabdo|, |:argdo|, |:bufdo|, |:cdo|, |:ldo|, |
64e30831fa42
commit https://github.com/vim/vim/commit/aa23b379421aa214e6543b06c974594a25799b09
Christian Brabandt <cb@256bit.org>
parents:
6951
diff
changeset
|
829 |:cfdo| and |:lfdo| |
7 | 830 |
831 *:bufdo* | |
6474 | 832 :[range]bufdo[!] {cmd} Execute {cmd} in each buffer in the buffer list or if |
833 [range] is given only for buffers for which their | |
7924
00d64eb49ce1
commit https://github.com/vim/vim/commit/681baaf4a4c81418693dcafb81421a8614832e91
Christian Brabandt <cb@256bit.org>
parents:
7245
diff
changeset
|
834 buffer number is in the [range]. It works like doing |
6474 | 835 this: > |
7 | 836 :bfirst |
837 :{cmd} | |
838 :bnext | |
839 :{cmd} | |
840 etc. | |
841 < When the current file can't be |abandon|ed and the [!] | |
842 is not present, the command fails. | |
843 When an error is detected on one buffer, further | |
844 buffers will not be visited. | |
845 Unlisted buffers are skipped. | |
846 The last buffer (or where an error occurred) becomes | |
847 the current buffer. | |
848 {cmd} can contain '|' to concatenate several commands. | |
849 {cmd} must not delete buffers or add buffers to the | |
850 buffer list. | |
851 Note: While this command is executing, the Syntax | |
852 autocommand event is disabled by adding it to | |
853 'eventignore'. This considerably speeds up editing | |
854 each buffer. | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16023
diff
changeset
|
855 |
7092
64e30831fa42
commit https://github.com/vim/vim/commit/aa23b379421aa214e6543b06c974594a25799b09
Christian Brabandt <cb@256bit.org>
parents:
6951
diff
changeset
|
856 Also see |:tabdo|, |:argdo|, |:windo|, |:cdo|, |:ldo|, |
64e30831fa42
commit https://github.com/vim/vim/commit/aa23b379421aa214e6543b06c974594a25799b09
Christian Brabandt <cb@256bit.org>
parents:
6951
diff
changeset
|
857 |:cfdo| and |:lfdo| |
7 | 858 |
859 Examples: > | |
860 | |
24278 | 861 :windo set nolist foldcolumn=0 | normal! zn |
7 | 862 |
863 This resets the 'list' option and disables folding in all windows. > | |
864 | |
865 :bufdo set fileencoding= | update | |
866 | |
867 This resets the 'fileencoding' in each buffer and writes it if this changed | |
868 the buffer. The result is that all buffers will use the 'encoding' encoding | |
24278 | 869 (if conversion succeeds). |
7 | 870 |
871 ============================================================================== | |
872 9. Tag or file name under the cursor *window-tag* | |
873 | |
874 *:sta* *:stag* | |
875 :sta[g][!] [tagname] | |
876 Does ":tag[!] [tagname]" and splits the window for the found | |
877 tag. See also |:tag|. | |
878 | |
879 CTRL-W ] *CTRL-W_]* *CTRL-W_CTRL-]* | |
880 CTRL-W CTRL-] Split current window in two. Use identifier under cursor as a | |
6259 | 881 tag and jump to it in the new upper window. |
882 In Visual mode uses the Visually selected text as a tag. | |
883 Make new window N high. | |
7 | 884 |
885 *CTRL-W_g]* | |
886 CTRL-W g ] Split current window in two. Use identifier under cursor as a | |
887 tag and perform ":tselect" on it in the new upper window. | |
6259 | 888 In Visual mode uses the Visually selected text as a tag. |
7 | 889 Make new window N high. |
890 | |
891 *CTRL-W_g_CTRL-]* | |
892 CTRL-W g CTRL-] Split current window in two. Use identifier under cursor as a | |
6259 | 893 tag and perform ":tjump" on it in the new upper window. |
894 In Visual mode uses the Visually selected text as a tag. | |
895 Make new window N high. | |
7 | 896 |
897 CTRL-W f *CTRL-W_f* *CTRL-W_CTRL-F* | |
898 CTRL-W CTRL-F Split current window in two. Edit file name under cursor. | |
820 | 899 Like ":split gf", but window isn't split if the file does not |
7 | 900 exist. |
901 Uses the 'path' variable as a list of directory names where to | |
902 look for the file. Also the path for current file is | |
903 used to search for the file name. | |
904 If the name is a hypertext link that looks like | |
905 "type://machine/path", only "/path" is used. | |
906 If a count is given, the count'th matching file is edited. | |
907 | |
681 | 908 CTRL-W F *CTRL-W_F* |
909 Split current window in two. Edit file name under cursor and | |
910 jump to the line number following the file name. See |gF| for | |
911 details on how the line number is obtained. | |
912 | |
820 | 913 CTRL-W gf *CTRL-W_gf* |
914 Open a new tab page and edit the file name under the cursor. | |
915 Like "tab split" and "gf", but the new tab page isn't created | |
916 if the file does not exist. | |
917 | |
839 | 918 CTRL-W gF *CTRL-W_gF* |
919 Open a new tab page and edit the file name under the cursor | |
920 and jump to the line number following the file name. Like | |
921 "tab split" and "gF", but the new tab page isn't created if | |
922 the file does not exist. | |
923 | |
16023 | 924 CTRL-W gt *CTRL-W_gt* |
925 Go to next tab page, same as `gt`. | |
926 | |
927 CTRL-W gT *CTRL-W_gT* | |
928 Go to previous tab page, same as `gT`. | |
929 | |
7 | 930 Also see |CTRL-W_CTRL-I|: open window for an included file that includes |
931 the keyword under the cursor. | |
932 | |
933 ============================================================================== | |
934 10. The preview window *preview-window* | |
935 | |
936 The preview window is a special window to show (preview) another file. It is | |
937 normally a small window used to show an include file or definition of a | |
938 function. | |
939 {not available when compiled without the |+quickfix| feature} | |
940 | |
731 | 941 There can be only one preview window (per tab page). It is created with one |
942 of the commands below. The 'previewheight' option can be set to specify the | |
943 height of the preview window when it's opened. The 'previewwindow' option is | |
944 set in the preview window to be able to recognize it. The 'winfixheight' | |
945 option is set to have it keep the same height when opening/closing other | |
946 windows. | |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
16944
diff
changeset
|
947 *preview-popup* |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
16944
diff
changeset
|
948 Alternatively, a popup window can be used by setting the 'previewpopup' |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
16944
diff
changeset
|
949 option. When set, it overrules the 'previewwindow' and 'previewheight' |
28379 | 950 settings. The option is a comma-separated list of values: |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
16944
diff
changeset
|
951 height maximum height of the popup |
17433 | 952 width maximum width of the popup |
17909 | 953 highlight highlight group of the popup (default is Pmenu) |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
16944
diff
changeset
|
954 Example: > |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
16944
diff
changeset
|
955 :set previewpopup=height:10,width:60 |
17632
5278e5a2a4e3
patch 8.1.1813: ATTENTION prompt for a preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17571
diff
changeset
|
956 |
5278e5a2a4e3
patch 8.1.1813: ATTENTION prompt for a preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17571
diff
changeset
|
957 A few peculiarities: |
5278e5a2a4e3
patch 8.1.1813: ATTENTION prompt for a preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17571
diff
changeset
|
958 - If the file is in a buffer already, it will be re-used. This will allow for |
5278e5a2a4e3
patch 8.1.1813: ATTENTION prompt for a preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17571
diff
changeset
|
959 editing the file while it's visible in the popup window. |
5278e5a2a4e3
patch 8.1.1813: ATTENTION prompt for a preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17571
diff
changeset
|
960 - No ATTENTION dialog will be used, since you can't edit the file in the popup |
5278e5a2a4e3
patch 8.1.1813: ATTENTION prompt for a preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17571
diff
changeset
|
961 window. However, if you later open the same buffer in a normal window, you |
5278e5a2a4e3
patch 8.1.1813: ATTENTION prompt for a preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17571
diff
changeset
|
962 may not notice it's edited elsewhere. And when then using ":edit" to |
5278e5a2a4e3
patch 8.1.1813: ATTENTION prompt for a preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17571
diff
changeset
|
963 trigger the ATTENTION and responding "A" for Abort, the preview window will |
5278e5a2a4e3
patch 8.1.1813: ATTENTION prompt for a preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17571
diff
changeset
|
964 become empty. |
5278e5a2a4e3
patch 8.1.1813: ATTENTION prompt for a preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17571
diff
changeset
|
965 |
7 | 966 *:pta* *:ptag* |
967 :pta[g][!] [tagname] | |
968 Does ":tag[!] [tagname]" and shows the found tag in a | |
969 "Preview" window without changing the current buffer or cursor | |
237 | 970 position. If a "Preview" window already exists, it is re-used |
7 | 971 (like a help window is). If a new one is opened, |
972 'previewheight' is used for the height of the window. See | |
973 also |:tag|. | |
974 See below for an example. |CursorHold-example| | |
975 Small difference from |:tag|: When [tagname] is equal to the | |
976 already displayed tag, the position in the matching tag list | |
977 is not reset. This makes the CursorHold example work after a | |
978 |:ptnext|. | |
979 | |
980 CTRL-W z *CTRL-W_z* | |
981 CTRL-W CTRL-Z *CTRL-W_CTRL-Z* *:pc* *:pclose* | |
982 :pc[lose][!] Close any "Preview" window currently open. When the 'hidden' | |
983 option is set, or when the buffer was changed and the [!] is | |
984 used, the buffer becomes hidden (unless there is another | |
985 window editing it). The command fails if any "Preview" buffer | |
986 cannot be closed. See also |:close|. | |
987 | |
988 *:pp* *:ppop* | |
989 :[count]pp[op][!] | |
990 Does ":[count]pop[!]" in the preview window. See |:pop| and | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16023
diff
changeset
|
991 |:ptag|. |
7 | 992 |
993 CTRL-W } *CTRL-W_}* | |
994 Use identifier under cursor as a tag and perform a :ptag on | |
237 | 995 it. Make the new Preview window (if required) N high. If N is |
7 | 996 not given, 'previewheight' is used. |
997 | |
998 CTRL-W g } *CTRL-W_g}* | |
999 Use identifier under cursor as a tag and perform a :ptjump on | |
237 | 1000 it. Make the new Preview window (if required) N high. If N is |
7 | 1001 not given, 'previewheight' is used. |
1002 | |
1003 *:ped* *:pedit* | |
1004 :ped[it][!] [++opt] [+cmd] {file} | |
1005 Edit {file} in the preview window. The preview window is | |
1006 opened like with |:ptag|. The current window and cursor | |
1007 position isn't changed. Useful example: > | |
1008 :pedit +/fputc /usr/include/stdio.h | |
1009 < | |
1010 *:ps* *:psearch* | |
1011 :[range]ps[earch][!] [count] [/]pattern[/] | |
1012 Works like |:ijump| but shows the found match in the preview | |
1013 window. The preview window is opened like with |:ptag|. The | |
1014 current window and cursor position isn't changed. Useful | |
1015 example: > | |
1016 :psearch popen | |
1017 < Like with the |:ptag| command, you can use this to | |
1018 automatically show information about the word under the | |
1019 cursor. This is less clever than using |:ptag|, but you don't | |
1020 need a tags file and it will also find matches in system | |
1021 include files. Example: > | |
27903 | 1022 :au! CursorHold *.[ch] ++nested exe "silent! psearch " .. expand("<cword>") |
7 | 1023 < Warning: This can be slow. |
1024 | |
1025 Example *CursorHold-example* > | |
1026 | |
27903 | 1027 :au! CursorHold *.[ch] ++nested exe "silent! ptag " .. expand("<cword>") |
7 | 1028 |
1029 This will cause a ":ptag" to be executed for the keyword under the cursor, | |
1030 when the cursor hasn't moved for the time set with 'updatetime'. The "nested" | |
1031 makes other autocommands be executed, so that syntax highlighting works in the | |
1032 preview window. The "silent!" avoids an error message when the tag could not | |
1033 be found. Also see |CursorHold|. To disable this again: > | |
1034 | |
1035 :au! CursorHold | |
1036 | |
1037 A nice addition is to highlight the found tag, avoid the ":ptag" when there | |
1038 is no word under the cursor, and a few other things: > | |
1039 | |
22171 | 1040 :au! CursorHold *.[ch] ++nested call PreviewWord() |
7 | 1041 :func PreviewWord() |
1042 : if &previewwindow " don't do this in the preview window | |
1043 : return | |
1044 : endif | |
1045 : let w = expand("<cword>") " get the word under cursor | |
1046 : if w =~ '\a' " if the word contains a letter | |
1047 : | |
1048 : " Delete any existing highlight before showing another tag | |
1049 : silent! wincmd P " jump to preview window | |
27903 | 1050 : if &previewwindow " if we really get there... |
7 | 1051 : match none " delete existing highlight |
1052 : wincmd p " back to old window | |
1053 : endif | |
1054 : | |
1055 : " Try displaying a matching tag for the word under the cursor | |
1056 : try | |
27903 | 1057 : exe "ptag " .. w |
7 | 1058 : catch |
1059 : return | |
1060 : endtry | |
1061 : | |
1062 : silent! wincmd P " jump to preview window | |
1063 : if &previewwindow " if we really get there... | |
1064 : if has("folding") | |
1065 : silent! .foldopen " don't want a closed fold | |
1066 : endif | |
1067 : call search("$", "b") " to end of previous line | |
1068 : let w = substitute(w, '\\', '\\\\', "") | |
27903 | 1069 : call search('\<\V' .. w .. '\>') " position cursor on match |
7 | 1070 : " Add a match highlight to the word at this position |
1071 : hi previewWord term=bold ctermbg=green guibg=green | |
27903 | 1072 : exe 'match previewWord "\%' .. line(".") .. 'l\%' .. col(".") .. 'c\k*"' |
7 | 1073 : wincmd p " back to old window |
1074 : endif | |
1075 : endif | |
1076 :endfun | |
1077 | |
1078 ============================================================================== | |
1079 11. Using hidden buffers *buffer-hidden* | |
1080 | |
1081 A hidden buffer is not displayed in a window, but is still loaded into memory. | |
1082 This makes it possible to jump from file to file, without the need to read or | |
1083 write the file every time you get another buffer in a window. | |
1084 | |
1085 *:buffer-!* | |
1086 If the option 'hidden' ('hid') is set, abandoned buffers are kept for all | |
1087 commands that start editing another file: ":edit", ":next", ":tag", etc. The | |
1088 commands that move through the buffer list sometimes make the current buffer | |
1089 hidden although the 'hidden' option is not set. This happens when a buffer is | |
1090 modified, but is forced (with '!') to be removed from a window, and | |
1091 'autowrite' is off or the buffer can't be written. | |
1092 | |
1093 You can make a hidden buffer not hidden by starting to edit it with any | |
28843
cd68a630f0d0
Update runtime files and translations
Bram Moolenaar <Bram@vim.org>
parents:
28379
diff
changeset
|
1094 command, or by deleting it with the ":bdelete" command. |
7 | 1095 |
1096 The 'hidden' is global, it is used for all buffers. The 'bufhidden' option | |
1097 can be used to make an exception for a specific buffer. It can take these | |
1098 values: | |
1099 <empty> Use the value of 'hidden'. | |
1100 hide Hide this buffer, also when 'hidden' is not set. | |
1101 unload Don't hide but unload this buffer, also when 'hidden' | |
1102 is set. | |
1103 delete Delete the buffer. | |
1104 | |
1105 *hidden-quit* | |
1106 When you try to quit Vim while there is a hidden, modified buffer, you will | |
1107 get an error message and Vim will make that buffer the current buffer. You | |
1108 can then decide to write this buffer (":wq") or quit without writing (":q!"). | |
1109 Be careful: there may be more hidden, modified buffers! | |
1110 | |
1111 A buffer can also be unlisted. This means it exists, but it is not in the | |
1112 list of buffers. |unlisted-buffer| | |
1113 | |
1114 | |
6945 | 1115 :files[!] [flags] *:files* |
1116 :buffers[!] [flags] *:buffers* *:ls* | |
1117 :ls[!] [flags] | |
1118 Show all buffers. Example: | |
7 | 1119 |
3920 | 1120 1 #h "/test/text" line 1 ~ |
1121 2u "asdf" line 0 ~ | |
1122 3 %a + "version.c" line 1 ~ | |
7 | 1123 |
1124 When the [!] is included the list will show unlisted buffers | |
1125 (the term "unlisted" is a bit confusing then...). | |
1126 | |
1127 Each buffer has a unique number. That number will not change, | |
6583 | 1128 thus you can always go to a specific buffer with ":buffer N" |
1129 or "N CTRL-^", where N is the buffer number. | |
7 | 1130 |
16859
0154363d3b98
patch 8.1.1431: popup window listed as "Scratch"
Bram Moolenaar <Bram@vim.org>
parents:
16808
diff
changeset
|
1131 For the file name these special values are used: |
0154363d3b98
patch 8.1.1431: popup window listed as "Scratch"
Bram Moolenaar <Bram@vim.org>
parents:
16808
diff
changeset
|
1132 [Prompt] |prompt-buffer| |
0154363d3b98
patch 8.1.1431: popup window listed as "Scratch"
Bram Moolenaar <Bram@vim.org>
parents:
16808
diff
changeset
|
1133 [Popup] buffer of a |popup-window| |
0154363d3b98
patch 8.1.1431: popup window listed as "Scratch"
Bram Moolenaar <Bram@vim.org>
parents:
16808
diff
changeset
|
1134 [Scratch] 'buftype' is "nofile" |
0154363d3b98
patch 8.1.1431: popup window listed as "Scratch"
Bram Moolenaar <Bram@vim.org>
parents:
16808
diff
changeset
|
1135 [No Name] no file name specified |
0154363d3b98
patch 8.1.1431: popup window listed as "Scratch"
Bram Moolenaar <Bram@vim.org>
parents:
16808
diff
changeset
|
1136 For a |terminal-window| buffer the status is used. |
0154363d3b98
patch 8.1.1431: popup window listed as "Scratch"
Bram Moolenaar <Bram@vim.org>
parents:
16808
diff
changeset
|
1137 |
7 | 1138 Indicators (chars in the same column are mutually exclusive): |
1139 u an unlisted buffer (only displayed when [!] is used) | |
1140 |unlisted-buffer| | |
1141 % the buffer in the current window | |
1142 # the alternate buffer for ":e #" and CTRL-^ | |
1143 a an active buffer: it is loaded and visible | |
1144 h a hidden buffer: It is loaded, but currently not | |
1145 displayed in a window |hidden-buffer| | |
1146 - a buffer with 'modifiable' off | |
1147 = a readonly buffer | |
12254 | 1148 R a terminal buffer with a running job |
1149 F a terminal buffer with a finished job | |
12499 | 1150 ? a terminal buffer without a job: `:terminal NONE` |
7 | 1151 + a modified buffer |
1152 x a buffer with read errors | |
1153 | |
6945 | 1154 [flags] can be a combination of the following characters, |
1155 which restrict the buffers to be listed: | |
1156 + modified buffers | |
1157 - buffers with 'modifiable' off | |
1158 = readonly buffers | |
1159 a active buffers | |
7245
8896150aba23
commit https://github.com/vim/vim/commit/e392eb41f8dfc01bd13634e534ac6b4d505326f4
Christian Brabandt <cb@256bit.org>
parents:
7100
diff
changeset
|
1160 u unlisted buffers (overrides the "!") |
6945 | 1161 h hidden buffers |
1162 x buffers with a read error | |
1163 % current buffer | |
1164 # alternate buffer | |
13555
78ead137b2ad
patch 8.0.1651: cannot filter :ls output for terminal buffers
Christian Brabandt <cb@256bit.org>
parents:
13268
diff
changeset
|
1165 R terminal buffers with a running job |
78ead137b2ad
patch 8.0.1651: cannot filter :ls output for terminal buffers
Christian Brabandt <cb@256bit.org>
parents:
13268
diff
changeset
|
1166 F terminal buffers with a finished job |
78ead137b2ad
patch 8.0.1651: cannot filter :ls output for terminal buffers
Christian Brabandt <cb@256bit.org>
parents:
13268
diff
changeset
|
1167 ? terminal buffers without a job: `:terminal NONE` |
18463
18d7337b6837
patch 8.1.2225: the "last used" info of a buffer is under used
Bram Moolenaar <Bram@vim.org>
parents:
18456
diff
changeset
|
1168 t show time last used and sort buffers |
6945 | 1169 Combining flags means they are "and"ed together, e.g.: |
1170 h+ hidden buffers which are modified | |
1171 a+ active buffers which are modified | |
1172 | |
9975
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
9908
diff
changeset
|
1173 When using |:filter| the pattern is matched against the |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
9908
diff
changeset
|
1174 displayed buffer name, e.g.: > |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
9908
diff
changeset
|
1175 filter /\.vim/ ls |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
9908
diff
changeset
|
1176 < |
7 | 1177 *:bad* *:badd* |
1178 :bad[d] [+lnum] {fname} | |
21825 | 1179 Add file name {fname} to the buffer list, without loading it, |
1180 if it wasn't listed yet. If the buffer was previously | |
1181 deleted, not wiped, it will be made listed again. | |
7 | 1182 If "lnum" is specified, the cursor will be positioned at that |
237 | 1183 line when the buffer is first entered. Note that other |
7 | 1184 commands after the + will be ignored. |
1185 | |
22840
7c1e2e3f2d8d
patch 8.2.1967: the session file does not restore the alternate file
Bram Moolenaar <Bram@vim.org>
parents:
22171
diff
changeset
|
1186 *:balt* |
7c1e2e3f2d8d
patch 8.2.1967: the session file does not restore the alternate file
Bram Moolenaar <Bram@vim.org>
parents:
22171
diff
changeset
|
1187 :balt [+lnum] {fname} |
7c1e2e3f2d8d
patch 8.2.1967: the session file does not restore the alternate file
Bram Moolenaar <Bram@vim.org>
parents:
22171
diff
changeset
|
1188 Like `:badd` and also set the alternate file for the current |
7c1e2e3f2d8d
patch 8.2.1967: the session file does not restore the alternate file
Bram Moolenaar <Bram@vim.org>
parents:
22171
diff
changeset
|
1189 window to {fname}. |
7c1e2e3f2d8d
patch 8.2.1967: the session file does not restore the alternate file
Bram Moolenaar <Bram@vim.org>
parents:
22171
diff
changeset
|
1190 |
7 | 1191 :[N]bd[elete][!] *:bd* *:bdel* *:bdelete* *E516* |
1192 :bd[elete][!] [N] | |
1193 Unload buffer [N] (default: current buffer) and delete it from | |
1194 the buffer list. If the buffer was changed, this fails, | |
1195 unless when [!] is specified, in which case changes are lost. | |
1196 The file remains unaffected. Any windows for this buffer are | |
1197 closed. If buffer [N] is the current buffer, another buffer | |
1198 will be displayed instead. This is the most recent entry in | |
1199 the jump list that points into a loaded buffer. | |
1200 Actually, the buffer isn't completely deleted, it is removed | |
1201 from the buffer list |unlisted-buffer| and option values, | |
1202 variables and mappings/abbreviations for the buffer are | |
6417 | 1203 cleared. Examples: > |
1204 :.,$-bdelete " delete buffers from the current one to | |
1205 " last but one | |
1206 :%bdelete " delete all buffers | |
1207 < | |
7 | 1208 |
1209 :bdelete[!] {bufname} *E93* *E94* | |
13818
28ac7914b2b6
Update runtime files and translations
Christian Brabandt <cb@256bit.org>
parents:
13555
diff
changeset
|
1210 Like ":bdelete[!] [N]", but buffer given by name, see |
28ac7914b2b6
Update runtime files and translations
Christian Brabandt <cb@256bit.org>
parents:
13555
diff
changeset
|
1211 |{bufname}|. |
7 | 1212 |
1213 :bdelete[!] N1 N2 ... | |
1214 Do ":bdelete[!]" for buffer N1, N2, etc. The arguments can be | |
1215 buffer numbers or buffer names (but not buffer names that are | |
1216 a number). Insert a backslash before a space in a buffer | |
1217 name. | |
1218 | |
1219 :N,Mbdelete[!] Do ":bdelete[!]" for all buffers in the range N to M | |
1220 |inclusive|. | |
1221 | |
1222 :[N]bw[ipeout][!] *:bw* *:bwipe* *:bwipeout* *E517* | |
1223 :bw[ipeout][!] {bufname} | |
1224 :N,Mbw[ipeout][!] | |
1225 :bw[ipeout][!] N1 N2 ... | |
683 | 1226 Like |:bdelete|, but really delete the buffer. Everything |
1227 related to the buffer is lost. All marks in this buffer | |
1228 become invalid, option settings are lost, etc. Don't use this | |
6417 | 1229 unless you know what you are doing. Examples: > |
1230 :.+,$bwipeout " wipe out all buffers after the current | |
1231 " one | |
1232 :%bwipeout " wipe out all buffers | |
1233 < | |
7 | 1234 |
1235 :[N]bun[load][!] *:bun* *:bunload* *E515* | |
1236 :bun[load][!] [N] | |
1237 Unload buffer [N] (default: current buffer). The memory | |
1238 allocated for this buffer will be freed. The buffer remains | |
1239 in the buffer list. | |
1240 If the buffer was changed, this fails, unless when [!] is | |
1241 specified, in which case the changes are lost. | |
1242 Any windows for this buffer are closed. If buffer [N] is the | |
1243 current buffer, another buffer will be displayed instead. | |
1244 This is the most recent entry in the jump list that points | |
1245 into a loaded buffer. | |
1246 | |
1247 :bunload[!] {bufname} | |
13818
28ac7914b2b6
Update runtime files and translations
Christian Brabandt <cb@256bit.org>
parents:
13555
diff
changeset
|
1248 Like ":bunload[!] [N]", but buffer given by name. |
28ac7914b2b6
Update runtime files and translations
Christian Brabandt <cb@256bit.org>
parents:
13555
diff
changeset
|
1249 Also see |{bufname}|. |
7 | 1250 |
1251 :N,Mbunload[!] Do ":bunload[!]" for all buffers in the range N to M | |
1252 |inclusive|. | |
1253 | |
1254 :bunload[!] N1 N2 ... | |
1255 Do ":bunload[!]" for buffer N1, N2, etc. The arguments can be | |
1256 buffer numbers or buffer names (but not buffer names that are | |
1257 a number). Insert a backslash before a space in a buffer | |
1258 name. | |
1259 | |
6230 | 1260 :[N]b[uffer][!] [+cmd] [N] *:b* *:bu* *:buf* *:buffer* *E86* |
7 | 1261 Edit buffer [N] from the buffer list. If [N] is not given, |
1262 the current buffer remains being edited. See |:buffer-!| for | |
1263 [!]. This will also edit a buffer that is not in the buffer | |
1264 list, without setting the 'buflisted' flag. | |
26438 | 1265 The notation with single quotes does not work here, |
1266 `:buf 12'345'` uses 12'345 as a buffer name. | |
7100
f717d96a39b3
commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents:
7092
diff
changeset
|
1267 Also see |+cmd|. |
7 | 1268 |
13818
28ac7914b2b6
Update runtime files and translations
Christian Brabandt <cb@256bit.org>
parents:
13555
diff
changeset
|
1269 :[N]b[uffer][!] [+cmd] {bufname} *{bufname}* |
28ac7914b2b6
Update runtime files and translations
Christian Brabandt <cb@256bit.org>
parents:
13555
diff
changeset
|
1270 Edit buffer for {bufname} from the buffer list. A partial |
28ac7914b2b6
Update runtime files and translations
Christian Brabandt <cb@256bit.org>
parents:
13555
diff
changeset
|
1271 name also works, so long as it is unique in the list of |
28ac7914b2b6
Update runtime files and translations
Christian Brabandt <cb@256bit.org>
parents:
13555
diff
changeset
|
1272 buffers. |
28ac7914b2b6
Update runtime files and translations
Christian Brabandt <cb@256bit.org>
parents:
13555
diff
changeset
|
1273 Note that a buffer whose name is a number cannot be referenced |
28ac7914b2b6
Update runtime files and translations
Christian Brabandt <cb@256bit.org>
parents:
13555
diff
changeset
|
1274 by that name; use the buffer number instead. |
28ac7914b2b6
Update runtime files and translations
Christian Brabandt <cb@256bit.org>
parents:
13555
diff
changeset
|
1275 Insert a backslash before a space in a buffer name. |
28ac7914b2b6
Update runtime files and translations
Christian Brabandt <cb@256bit.org>
parents:
13555
diff
changeset
|
1276 See |:buffer-!| for [!]. |
28ac7914b2b6
Update runtime files and translations
Christian Brabandt <cb@256bit.org>
parents:
13555
diff
changeset
|
1277 This will also edit a buffer that is not in the buffer list, |
28ac7914b2b6
Update runtime files and translations
Christian Brabandt <cb@256bit.org>
parents:
13555
diff
changeset
|
1278 without setting the 'buflisted' flag. |
7100
f717d96a39b3
commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents:
7092
diff
changeset
|
1279 Also see |+cmd|. |
7 | 1280 |
6230 | 1281 :[N]sb[uffer] [+cmd] [N] *:sb* *:sbuffer* |
7 | 1282 Split window and edit buffer [N] from the buffer list. If [N] |
1283 is not given, the current buffer is edited. Respects the | |
1284 "useopen" setting of 'switchbuf' when splitting. This will | |
1285 also edit a buffer that is not in the buffer list, without | |
1286 setting the 'buflisted' flag. | |
7100
f717d96a39b3
commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents:
7092
diff
changeset
|
1287 Also see |+cmd|. |
7 | 1288 |
6230 | 1289 :[N]sb[uffer] [+cmd] {bufname} |
13818
28ac7914b2b6
Update runtime files and translations
Christian Brabandt <cb@256bit.org>
parents:
13555
diff
changeset
|
1290 Split window and edit buffer for |{bufname}| from the buffer |
7 | 1291 list. This will also edit a buffer that is not in the buffer |
1292 list, without setting the 'buflisted' flag. | |
648 | 1293 Note: If what you want to do is split the buffer, make a copy |
1294 under another name, you can do it this way: > | |
1295 :w foobar | sp # | |
7100
f717d96a39b3
commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents:
7092
diff
changeset
|
1296 < Also see |+cmd|. |
7 | 1297 |
6230 | 1298 :[N]bn[ext][!] [+cmd] [N] *:bn* *:bnext* *E87* |
7 | 1299 Go to [N]th next buffer in buffer list. [N] defaults to one. |
1300 Wraps around the end of the buffer list. | |
1301 See |:buffer-!| for [!]. | |
7100
f717d96a39b3
commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents:
7092
diff
changeset
|
1302 Also see |+cmd|. |
7 | 1303 If you are in a help buffer, this takes you to the next help |
1304 buffer (if there is one). Similarly, if you are in a normal | |
1305 (non-help) buffer, this takes you to the next normal buffer. | |
1306 This is so that if you have invoked help, it doesn't get in | |
237 | 1307 the way when you're browsing code/text buffers. The next three |
7 | 1308 commands also work like this. |
1309 | |
1310 *:sbn* *:sbnext* | |
6230 | 1311 :[N]sbn[ext] [+cmd] [N] |
7 | 1312 Split window and go to [N]th next buffer in buffer list. |
1313 Wraps around the end of the buffer list. Uses 'switchbuf' | |
7100
f717d96a39b3
commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents:
7092
diff
changeset
|
1314 Also see |+cmd|. |
7 | 1315 |
6230 | 1316 :[N]bN[ext][!] [+cmd] [N] *:bN* *:bNext* *:bp* *:bprevious* *E88* |
1317 :[N]bp[revious][!] [+cmd] [N] | |
7 | 1318 Go to [N]th previous buffer in buffer list. [N] defaults to |
1319 one. Wraps around the start of the buffer list. | |
1320 See |:buffer-!| for [!] and 'switchbuf'. | |
7100
f717d96a39b3
commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents:
7092
diff
changeset
|
1321 Also see |+cmd|. |
7 | 1322 |
6230 | 1323 :[N]sbN[ext] [+cmd] [N] *:sbN* *:sbNext* *:sbp* *:sbprevious* |
1324 :[N]sbp[revious] [+cmd] [N] | |
7 | 1325 Split window and go to [N]th previous buffer in buffer list. |
1326 Wraps around the start of the buffer list. | |
1327 Uses 'switchbuf'. | |
7100
f717d96a39b3
commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents:
7092
diff
changeset
|
1328 Also see |+cmd|. |
7 | 1329 |
16944 | 1330 :br[ewind][!] [+cmd] *:br* *:bre* *:brewind* |
6230 | 1331 Go to first buffer in buffer list. If the buffer list is |
7 | 1332 empty, go to the first unlisted buffer. |
1333 See |:buffer-!| for [!]. | |
1334 | |
6230 | 1335 :bf[irst] [+cmd] *:bf* *:bfirst* |
1336 Same as |:brewind|. | |
1337 Also see |+cmd|. | |
7 | 1338 |
6230 | 1339 :sbr[ewind] [+cmd] *:sbr* *:sbrewind* |
1340 Split window and go to first buffer in buffer list. If the | |
7 | 1341 buffer list is empty, go to the first unlisted buffer. |
1342 Respects the 'switchbuf' option. | |
6230 | 1343 Also see |+cmd|. |
7 | 1344 |
6230 | 1345 :sbf[irst] [+cmd] *:sbf* *:sbfirst* |
1346 Same as ":sbrewind". | |
7 | 1347 |
6230 | 1348 :bl[ast][!] [+cmd] *:bl* *:blast* |
1349 Go to last buffer in buffer list. If the buffer list is | |
7 | 1350 empty, go to the last unlisted buffer. |
1351 See |:buffer-!| for [!]. | |
1352 | |
6230 | 1353 :sbl[ast] [+cmd] *:sbl* *:sblast* |
1354 Split window and go to last buffer in buffer list. If the | |
7 | 1355 buffer list is empty, go to the last unlisted buffer. |
1356 Respects 'switchbuf' option. | |
1357 | |
6230 | 1358 :[N]bm[odified][!] [+cmd] [N] *:bm* *:bmodified* *E84* |
7 | 1359 Go to [N]th next modified buffer. Note: this command also |
1360 finds unlisted buffers. If there is no modified buffer the | |
1361 command fails. | |
1362 | |
6230 | 1363 :[N]sbm[odified] [+cmd] [N] *:sbm* *:sbmodified* |
7 | 1364 Split window and go to [N]th next modified buffer. |
1365 Respects 'switchbuf' option. | |
1366 Note: this command also finds buffers not in the buffer list. | |
1367 | |
1368 :[N]unh[ide] [N] *:unh* *:unhide* *:sun* *:sunhide* | |
1369 :[N]sun[hide] [N] | |
1370 Rearrange the screen to open one window for each loaded buffer | |
1371 in the buffer list. When a count is given, this is the | |
1372 maximum number of windows to open. | |
1373 | |
1374 :[N]ba[ll] [N] *:ba* *:ball* *:sba* *:sball* | |
1375 :[N]sba[ll] [N] Rearrange the screen to open one window for each buffer in | |
1376 the buffer list. When a count is given, this is the maximum | |
1377 number of windows to open. 'winheight' also limits the number | |
1378 of windows opened ('winwidth' if |:vertical| was prepended). | |
1379 Buf/Win Enter/Leave autocommands are not executed for the new | |
1380 windows here, that's only done when they are really entered. | |
1123 | 1381 When the |:tab| modifier is used new windows are opened in a |
699 | 1382 new tab, up to 'tabpagemax'. |
7 | 1383 |
1384 Note: All the commands above that start editing another buffer, keep the | |
1385 'readonly' flag as it was. This differs from the ":edit" command, which sets | |
1386 the 'readonly' flag each time the file is read. | |
1387 | |
1388 ============================================================================== | |
1389 12. Special kinds of buffers *special-buffers* | |
1390 | |
1391 Instead of containing the text of a file, buffers can also be used for other | |
1392 purposes. A few options can be set to change the behavior of a buffer: | |
1393 'bufhidden' what happens when the buffer is no longer displayed | |
1394 in a window. | |
1395 'buftype' what kind of a buffer this is | |
1396 'swapfile' whether the buffer will have a swap file | |
1397 'buflisted' buffer shows up in the buffer list | |
1398 | |
1399 A few useful kinds of a buffer: | |
1400 | |
648 | 1401 quickfix Used to contain the error list or the location list. See |
1402 |:cwindow| and |:lwindow|. This command sets the 'buftype' | |
1403 option to "quickfix". You are not supposed to change this! | |
1404 'swapfile' is off. | |
7 | 1405 |
1406 help Contains a help file. Will only be created with the |:help| | |
1407 command. The flag that indicates a help buffer is internal | |
1408 and can't be changed. The 'buflisted' option will be reset | |
1409 for a help buffer. | |
1410 | |
11763
21f3930dfe6e
Documentation updates.
Christian Brabandt <cb@256bit.org>
parents:
10449
diff
changeset
|
1411 terminal A terminal window buffer, see |terminal|. The contents cannot |
21f3930dfe6e
Documentation updates.
Christian Brabandt <cb@256bit.org>
parents:
10449
diff
changeset
|
1412 be read or changed until the job ends. |
21f3930dfe6e
Documentation updates.
Christian Brabandt <cb@256bit.org>
parents:
10449
diff
changeset
|
1413 |
140 | 1414 directory Displays directory contents. Can be used by a file explorer |
7 | 1415 plugin. The buffer is created with these settings: > |
632 | 1416 :setlocal buftype=nowrite |
1417 :setlocal bufhidden=delete | |
1418 :setlocal noswapfile | |
7 | 1419 < The buffer name is the name of the directory and is adjusted |
1420 when using the |:cd| command. | |
1421 | |
26089
c544eacaf066
patch 8.2.3578: manipulating highlighting is complicated
Bram Moolenaar <Bram@vim.org>
parents:
25773
diff
changeset
|
1422 *scratch-buffer* |
7 | 1423 scratch Contains text that can be discarded at any time. It is kept |
1424 when closing the window, it must be deleted explicitly. | |
1425 Settings: > | |
632 | 1426 :setlocal buftype=nofile |
1427 :setlocal bufhidden=hide | |
1428 :setlocal noswapfile | |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
1429 < The buffer name can be used to identify the buffer, if you |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
1430 give it a meaningful name. |
7 | 1431 |
1432 *unlisted-buffer* | |
1433 unlisted The buffer is not in the buffer list. It is not used for | |
1434 normal editing, but to show a help file, remember a file name | |
1435 or marks. The ":bdelete" command will also set this option, | |
1436 thus it doesn't completely delete the buffer. Settings: > | |
632 | 1437 :setlocal nobuflisted |
7 | 1438 < |
1439 | |
14519 | 1440 vim:tw=78:ts=8:noet:ft=help:norl: |