Mercurial > vim
annotate runtime/doc/gui.txt @ 20572:8dd549c6de33
Added tag v8.2.0839 for changeset 5995db0fe84a88c809e5dc959029cb79da35e06c
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 29 May 2020 22:45:06 +0200 |
parents | bceeded72898 |
children | 0db0640e16e0 |
rev | line source |
---|---|
19721 | 1 *gui.txt* For Vim version 8.2. Last change: 2020 Mar 16 |
7 | 2 |
3 | |
4 VIM REFERENCE MANUAL by Bram Moolenaar | |
5 | |
6 | |
7 Vim's Graphical User Interface *gui* *GUI* | |
8 | |
9 1. Starting the GUI |gui-start| | |
10 2. Scrollbars |gui-scrollbars| | |
11 3. Mouse Control |gui-mouse| | |
12 4. Making GUI Selections |gui-selections| | |
13 5. Menus |menus| | |
16439
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
14 6. Font |gui-font| |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
15 7. Extras |gui-extras| |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
16 8. Shell Commands |gui-shell| |
7 | 17 |
18 Other GUI documentation: | |
19 |gui_x11.txt| For specific items of the X11 GUI. | |
20 |gui_w32.txt| For specific items of the Win32 GUI. | |
21 | |
22 | |
23 ============================================================================== | |
24 1. Starting the GUI *gui-start* *E229* *E233* | |
25 | |
26 First you must make sure you actually have a version of Vim with the GUI code | |
694 | 27 included. You can check this with the ":version" command, it says "with xxx |
8218
3456e2ebebd4
commit https://github.com/vim/vim/commit/9892189d2e7ab94b750f99e6da4cbfc3c8014517
Christian Brabandt <cb@256bit.org>
parents:
5697
diff
changeset
|
28 GUI", where "xxx" is X11-Motif, X11-Athena, Photon, GTK2, GTK3, etc., or |
694 | 29 "MS-Windows 32 bit GUI version". |
7 | 30 |
31 How to start the GUI depends on the system used. Mostly you can run the | |
32 GUI version of Vim with: | |
33 gvim [options] [files...] | |
34 | |
35 The X11 version of Vim can run both in GUI and in non-GUI mode. See | |
36 |gui-x11-start|. | |
37 | |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
38 *gui-init* *gvimrc* *.gvimrc* *_gvimrc* *$MYGVIMRC* |
819 | 39 The gvimrc file is where GUI-specific startup commands should be placed. It |
40 is always sourced after the |vimrc| file. If you have one then the $MYGVIMRC | |
41 environment variable has its name. | |
42 | |
7 | 43 When the GUI starts up initializations are carried out, in this order: |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
44 - The 'term' option is set to "builtin_gui" and terminal options are reset to |
667 | 45 their default value for the GUI |terminal-options|. |
7 | 46 - If the system menu file exists, it is sourced. The name of this file is |
47 normally "$VIMRUNTIME/menu.vim". You can check this with ":version". Also | |
48 see |$VIMRUNTIME|. To skip loading the system menu include 'M' in | |
49 'guioptions'. *buffers-menu* *no_buffers_menu* | |
50 The system menu file includes a "Buffers" menu. If you don't want this, set | |
51 the "no_buffers_menu" variable in your .vimrc (not .gvimrc!): > | |
52 :let no_buffers_menu = 1 | |
53 < NOTE: Switching on syntax highlighting also loads the menu file, thus | |
54 disabling the Buffers menu must be done before ":syntax on". | |
55 The path names are truncated to 35 characters. You can truncate them at a | |
56 different length, for example 50, like this: > | |
57 :let bmenu_max_pathlen = 50 | |
58 - If the "-U {gvimrc}" command-line option has been used when starting Vim, | |
59 the {gvimrc} file will be read for initializations. The following | |
42 | 60 initializations are skipped. When {gvimrc} is "NONE" no file will be read |
61 for initializations. | |
7 | 62 - For Unix and MS-Windows, if the system gvimrc exists, it is sourced. The |
63 name of this file is normally "$VIM/gvimrc". You can check this with | |
64 ":version". Also see |$VIM|. | |
65 - The following are tried, and only the first one that exists is used: | |
66 - If the GVIMINIT environment variable exists and is not empty, it is | |
67 executed as an Ex command. | |
68 - If the user gvimrc file exists, it is sourced. The name of this file is | |
69 normally "$HOME/.gvimrc". You can check this with ":version". | |
12254 | 70 - For Win32, $HOME is set by Vim if needed, see |$HOME-windows|. |
7 | 71 - When a "_gvimrc" file is not found, ".gvimrc" is tried too. And vice |
72 versa. | |
819 | 73 The name of the first file found is stored in $MYGVIMRC, unless it was |
74 already set. | |
7 | 75 - If the 'exrc' option is set (which is NOT the default) the file ./.gvimrc |
76 is sourced, if it exists and isn't the same file as the system or user | |
77 gvimrc file. If this file is not owned by you, some security restrictions | |
78 apply. When ".gvimrc" is not found, "_gvimrc" is tried too. For Macintosh | |
79 and DOS/Win32 "_gvimrc" is tried first. | |
80 | |
81 NOTE: All but the first one are not carried out if Vim was started with | |
11763
21f3930dfe6e
Documentation updates.
Christian Brabandt <cb@256bit.org>
parents:
10198
diff
changeset
|
82 "-u NONE" or "-u DEFAULTS" and no "-U" argument was given, or when started |
21f3930dfe6e
Documentation updates.
Christian Brabandt <cb@256bit.org>
parents:
10198
diff
changeset
|
83 with "-U NONE". |
7 | 84 |
85 All this happens AFTER the normal Vim initializations, like reading your | |
86 .vimrc file. See |initialization|. | |
87 But the GUI window is only opened after all the initializations have been | |
88 carried out. If you want some commands to be executed just after opening the | |
89 GUI window, use the |GUIEnter| autocommand event. Example: > | |
465 | 90 :autocmd GUIEnter * winpos 100 50 |
7 | 91 |
92 You can use the gvimrc files to set up your own customized menus (see |:menu|) | |
93 and initialize other things that you may want to set up differently from the | |
94 terminal version. | |
95 | |
96 Recommended place for your personal GUI initializations: | |
4863
c4d4f0fc12b9
updated for version 7.3.1178
Bram Moolenaar <bram@vim.org>
parents:
3082
diff
changeset
|
97 Unix $HOME/.gvimrc or $HOME/.vim/gvimrc |
18912
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
98 Win32 $HOME/_gvimrc, $HOME/vimfiles/gvimrc |
4863
c4d4f0fc12b9
updated for version 7.3.1178
Bram Moolenaar <bram@vim.org>
parents:
3082
diff
changeset
|
99 or $VIM/_gvimrc |
c4d4f0fc12b9
updated for version 7.3.1178
Bram Moolenaar <bram@vim.org>
parents:
3082
diff
changeset
|
100 Amiga s:.gvimrc, home:.gvimrc, home:vimfiles:gvimrc |
c4d4f0fc12b9
updated for version 7.3.1178
Bram Moolenaar <bram@vim.org>
parents:
3082
diff
changeset
|
101 or $VIM/.gvimrc |
19526
22f0dda71638
patch 8.2.0320: no Haiku support
Bram Moolenaar <Bram@vim.org>
parents:
18912
diff
changeset
|
102 Haiku $HOME/config/settings/vim/gvimrc |
4863
c4d4f0fc12b9
updated for version 7.3.1178
Bram Moolenaar <bram@vim.org>
parents:
3082
diff
changeset
|
103 |
c4d4f0fc12b9
updated for version 7.3.1178
Bram Moolenaar <bram@vim.org>
parents:
3082
diff
changeset
|
104 The personal initialization files are searched in the order specified above |
c4d4f0fc12b9
updated for version 7.3.1178
Bram Moolenaar <bram@vim.org>
parents:
3082
diff
changeset
|
105 and only the first one that is found is read. |
7 | 106 |
107 There are a number of options which only have meaning in the GUI version of | |
108 Vim. These are 'guicursor', 'guifont', 'guipty' and 'guioptions'. They are | |
109 documented in |options.txt| with all the other options. | |
110 | |
862 | 111 If using the Motif or Athena version of the GUI (but not for the GTK+ or |
11 | 112 Win32 version), a number of X resources are available. See |gui-resources|. |
7 | 113 |
114 Another way to set the colors for different occasions is with highlight | |
115 groups. The "Normal" group is used to set the background and foreground | |
116 colors. Example (which looks nice): > | |
117 | |
118 :highlight Normal guibg=grey90 | |
119 | |
120 The "guibg" and "guifg" settings override the normal background and | |
121 foreground settings. The other settings for the Normal highlight group are | |
122 not used. Use the 'guifont' option to set the font. | |
123 | |
124 Also check out the 'guicursor' option, to set the colors for the cursor in | |
125 various modes. | |
126 | |
127 Vim tries to make the window fit on the screen when it starts up. This avoids | |
128 that you can't see part of it. On the X Window System this requires a bit of | |
129 guesswork. You can change the height that is used for the window title and a | |
130 task bar with the 'guiheadroom' option. | |
131 | |
132 *:winp* *:winpos* *E188* | |
133 :winp[os] | |
134 Display current position of the top left corner of the GUI vim | |
135 window in pixels. Does not work in all versions. | |
13437 | 136 Also see |getwinpos()|, |getwinposx()| and |getwinposy()|. |
7 | 137 |
138 :winp[os] {X} {Y} *E466* | |
139 Put the GUI vim window at the given {X} and {Y} coordinates. | |
140 The coordinates should specify the position in pixels of the | |
141 top left corner of the window. Does not work in all versions. | |
142 Does work in an (new) xterm |xterm-color|. | |
143 When the GUI window has not been opened yet, the values are | |
144 remembered until the window is opened. The position is | |
145 adjusted to make the window fit on the screen (if possible). | |
146 | |
147 *:win* *:winsize* *E465* | |
148 :win[size] {width} {height} | |
149 Set the window height to {width} by {height} characters. | |
150 Obsolete, use ":set lines=11 columns=22". | |
151 If you get less lines than expected, check the 'guiheadroom' | |
152 option. | |
153 | |
154 If you are running the X Window System, you can get information about the | |
5697 | 155 window Vim is running in with these commands: > |
7 | 156 :!xwininfo -id $WINDOWID |
5697 | 157 :!xprop -id $WINDOWID |
158 :execute '!xwininfo -id ' . v:windowid | |
159 :execute '!xprop -id ' . v:windowid | |
3082 | 160 < |
161 *gui-IME* *iBus* | |
162 Input methods for international characters in X that rely on the XIM | |
163 framework, most notably iBus, have been known to produce undesirable results | |
12785 | 164 in gvim. These may include an inability to enter spaces, or long delays |
3082 | 165 between typing a character and it being recognized by the application. |
166 | |
167 One workaround that has been successful, for unknown reasons, is to prevent | |
168 gvim from forking into the background by starting it with the |-f| argument. | |
7 | 169 |
170 ============================================================================== | |
171 2. Scrollbars *gui-scrollbars* | |
172 | |
98 | 173 There are vertical scrollbars and a horizontal scrollbar. You may |
7 | 174 configure which ones appear with the 'guioptions' option. |
175 | |
176 The interface looks like this (with ":set guioptions=mlrb"): | |
177 | |
2642 | 178 +------------------------------+ ` |
179 | File Edit Help | <- Menu bar (m) ` | |
180 +-+--------------------------+-+ ` | |
181 |^| |^| ` | |
182 |#| Text area. |#| ` | |
183 | | | | ` | |
184 |v|__________________________|v| ` | |
185 Normal status line -> |-+ File.c 5,2 +-| ` | |
186 between Vim windows |^|""""""""""""""""""""""""""|^| ` | |
187 | | | | ` | |
188 | | Another file buffer. | | ` | |
189 | | | | ` | |
190 |#| |#| ` | |
191 Left scrollbar (l) -> |#| |#| <- Right ` | |
192 |#| |#| scrollbar (r) ` | |
193 | | | | ` | |
194 |v| |v| ` | |
195 +-+--------------------------+-+ ` | |
196 | |< #### >| | <- Bottom ` | |
197 +-+--------------------------+-+ scrollbar (b) ` | |
7 | 198 |
199 Any of the scrollbar or menu components may be turned off by not putting the | |
200 appropriate letter in the 'guioptions' string. The bottom scrollbar is | |
201 only useful when 'nowrap' is set. | |
202 | |
203 | |
204 VERTICAL SCROLLBARS *gui-vert-scroll* | |
205 | |
206 Each Vim window has a scrollbar next to it which may be scrolled up and down | |
207 to move through the text in that buffer. The size of the scrollbar-thumb | |
208 indicates the fraction of the buffer which can be seen in the window. | |
209 When the scrollbar is dragged all the way down, the last line of the file | |
210 will appear in the top of the window. | |
211 | |
212 If a window is shrunk to zero height (by the growth of another window) its | |
236 | 213 scrollbar disappears. It reappears when the window is restored. |
7 | 214 |
215 If a window is vertically split, it will get a scrollbar when it is the | |
216 current window and when, taking the middle of the current window and drawing a | |
217 vertical line, this line goes through the window. | |
218 When there are scrollbars on both sides, and the middle of the current window | |
219 is on the left half, the right scrollbar column will contain scrollbars for | |
220 the rightmost windows. The same happens on the other side. | |
221 | |
222 | |
223 HORIZONTAL SCROLLBARS *gui-horiz-scroll* | |
224 | |
225 The horizontal scrollbar (at the bottom of the Vim GUI) may be used to | |
226 scroll text sideways when the 'wrap' option is turned off. The | |
227 scrollbar-thumb size is such that the text of the longest visible line may be | |
228 scrolled as far as possible left and right. The cursor is moved when | |
229 necessary, it must remain on a visible character (unless 'virtualedit' is | |
230 set). | |
231 | |
98 | 232 Computing the length of the longest visible line takes quite a bit of |
233 computation, and it has to be done every time something changes. If this | |
234 takes too much time or you don't like the cursor jumping to another line, | |
235 include the 'h' flag in 'guioptions'. Then the scrolling is limited by the | |
236 text of the current cursor line. | |
7 | 237 |
238 *athena-intellimouse* | |
239 If you have an Intellimouse and an X server that supports using the wheel, | |
240 then you can use the wheel to scroll the text up and down in gvim. This works | |
241 with XFree86 4.0 and later, and with some older versions when you add patches. | |
242 See |scroll-mouse-wheel|. | |
243 | |
244 For older versions of XFree86 you must patch your X server. The following | |
245 page has a bit of information about using the Intellimouse on Linux as well as | |
246 links to the patches and X server binaries (may not have the one you need | |
247 though): | |
248 http://www.inria.fr/koala/colas/mouse-wheel-scroll/ | |
249 | |
250 ============================================================================== | |
251 3. Mouse Control *gui-mouse* | |
252 | |
253 The mouse only works if the appropriate flag in the 'mouse' option is set. | |
254 When the GUI is switched on, and 'mouse' wasn't set yet, the 'mouse' option is | |
255 automatically set to "a", enabling it for all modes except for the | |
256 |hit-enter| prompt. If you don't want this, a good place to change the | |
257 'mouse' option is the "gvimrc" file. | |
258 | |
259 Other options that are relevant: | |
260 'mousefocus' window focus follows mouse pointer |gui-mouse-focus| | |
261 'mousemodel' what mouse button does which action | |
262 'mousehide' hide mouse pointer while typing text | |
263 'selectmode' whether to start Select mode or Visual mode | |
264 | |
265 A quick way to set these is with the ":behave" command. | |
266 *:behave* *:be* | |
267 :be[have] {model} Set behavior for mouse and selection. Valid | |
268 arguments are: | |
269 mswin MS-Windows behavior | |
270 xterm Xterm behavior | |
271 | |
272 Using ":behave" changes these options: | |
273 option mswin xterm ~ | |
274 'selectmode' "mouse,key" "" | |
275 'mousemodel' "popup" "extend" | |
276 'keymodel' "startsel,stopsel" "" | |
277 'selection' "exclusive" "inclusive" | |
278 | |
279 In the $VIMRUNTIME directory, there is a script called |mswin.vim|, which will | |
280 also map a few keys to the MS-Windows cut/copy/paste commands. This is NOT | |
281 compatible, since it uses the CTRL-V, CTRL-X and CTRL-C keys. If you don't | |
282 mind, use this command: > | |
283 :so $VIMRUNTIME/mswin.vim | |
284 | |
285 For scrolling with a wheel on a mouse, see |scroll-mouse-wheel|. | |
286 | |
287 | |
288 3.1 Moving Cursor with Mouse *gui-mouse-move* | |
289 | |
290 Click the left mouse button somewhere in a text buffer where you want the | |
291 cursor to go, and it does! | |
292 This works in when 'mouse' contains ~ | |
293 Normal mode 'n' or 'a' | |
294 Visual mode 'v' or 'a' | |
295 Insert mode 'i' or 'a' | |
296 | |
297 Select mode is handled like Visual mode. | |
298 | |
299 You may use this with an operator such as 'd' to delete text from the current | |
300 cursor position to the position you point to with the mouse. That is, you hit | |
301 'd' and then click the mouse somewhere. | |
302 | |
303 *gui-mouse-focus* | |
304 The 'mousefocus' option can be set to make the keyboard focus follow the | |
305 mouse pointer. This means that the window where the mouse pointer is, is the | |
306 active window. Warning: this doesn't work very well when using a menu, | |
307 because the menu command will always be applied to the top window. | |
308 | |
309 If you are on the ':' line (or '/' or '?'), then clicking the left or right | |
310 mouse button will position the cursor on the ':' line (if 'mouse' contains | |
18639 | 311 'c' or 'a'). |
7 | 312 |
313 In any situation the middle mouse button may be clicked to paste the current | |
314 selection. | |
315 | |
316 | |
317 3.2 Selection with Mouse *gui-mouse-select* | |
318 | |
319 The mouse can be used to start a selection. How depends on the 'mousemodel' | |
320 option: | |
321 'mousemodel' is "extend": use the right mouse button | |
322 'mousemodel' is "popup": use the left mouse button, while keeping the Shift | |
323 key pressed. | |
324 | |
325 If there was no selection yet, this starts a selection from the old cursor | |
326 position to the position pointed to with the mouse. If there already is a | |
327 selection then the closest end will be extended. | |
328 | |
329 If 'selectmode' contains "mouse", then the selection will be in Select mode. | |
330 This means that typing normal text will replace the selection. See | |
331 |Select-mode|. Otherwise, the selection will be in Visual mode. | |
332 | |
333 Double clicking may be done to make the selection word-wise, triple clicking | |
334 makes it line-wise, and quadruple clicking makes it rectangular block-wise. | |
335 | |
336 See |gui-selections| on how the selection is used. | |
337 | |
338 | |
339 3.3 Other Text Selection with Mouse *gui-mouse-modeless* | |
340 *modeless-selection* | |
341 A different kind of selection is used when: | |
342 - in Command-line mode | |
343 - in the Command-line window and pointing in another window | |
344 - at the |hit-enter| prompt | |
345 - whenever the current mode is not in the 'mouse' option | |
346 - when holding the CTRL and SHIFT keys in the GUI | |
1619 | 347 |
7 | 348 Since Vim continues like the selection isn't there, and there is no mode |
349 associated with the selection, this is called modeless selection. Any text in | |
350 the Vim window can be selected. Select the text by pressing the left mouse | |
351 button at the start, drag to the end and release. To extend the selection, | |
352 use the right mouse button when 'mousemodel' is "extend", or the left mouse | |
353 button with the shift key pressed when 'mousemodel' is "popup". | |
354 The selection is removed when the selected text is scrolled or changed. | |
1619 | 355 |
7 | 356 On the command line CTRL-Y can be used to copy the selection into the |
1619 | 357 clipboard. To do this from Insert mode, use CTRL-O : CTRL-Y <CR>. When |
358 'guioptions' contains a or A (default on X11), the selection is automatically | |
359 copied to the "* register. | |
360 | |
361 The middle mouse button can then paste the text. On non-X11 systems, you can | |
362 use CTRL-R +. | |
7 | 363 |
364 | |
365 3.4 Using Mouse on Status Lines *gui-mouse-status* | |
366 | |
367 Clicking the left or right mouse button on the status line below a Vim | |
368 window makes that window the current window. This actually happens on button | |
369 release (to be able to distinguish a click from a drag action). | |
370 | |
371 With the left mouse button a status line can be dragged up and down, thus | |
372 resizing the windows above and below it. This does not change window focus. | |
373 | |
374 The same can be used on the vertical separator: click to give the window left | |
375 of it focus, drag left and right to make windows wider and narrower. | |
376 | |
377 | |
378 3.5 Various Mouse Clicks *gui-mouse-various* | |
379 | |
380 <S-LeftMouse> Search forward for the word under the mouse click. | |
381 When 'mousemodel' is "popup" this starts or extends a | |
382 selection. | |
383 <S-RightMouse> Search backward for the word under the mouse click. | |
384 <C-LeftMouse> Jump to the tag name under the mouse click. | |
385 <C-RightMouse> Jump back to position before the previous tag jump | |
386 (same as "CTRL-T") | |
387 | |
388 | |
389 3.6 Mouse Mappings *gui-mouse-mapping* | |
390 | |
391 The mouse events, complete with modifiers, may be mapped. Eg: > | |
392 :map <S-LeftMouse> <RightMouse> | |
393 :map <S-LeftDrag> <RightDrag> | |
394 :map <S-LeftRelease> <RightRelease> | |
395 :map <2-S-LeftMouse> <2-RightMouse> | |
396 :map <2-S-LeftDrag> <2-RightDrag> | |
397 :map <2-S-LeftRelease> <2-RightRelease> | |
398 :map <3-S-LeftMouse> <3-RightMouse> | |
399 :map <3-S-LeftDrag> <3-RightDrag> | |
400 :map <3-S-LeftRelease> <3-RightRelease> | |
401 :map <4-S-LeftMouse> <4-RightMouse> | |
402 :map <4-S-LeftDrag> <4-RightDrag> | |
403 :map <4-S-LeftRelease> <4-RightRelease> | |
404 These mappings make selection work the way it probably should in a Motif | |
405 application, with shift-left mouse allowing for extending the visual area | |
406 rather than the right mouse button. | |
407 | |
408 Mouse mapping with modifiers does not work for modeless selection. | |
409 | |
410 | |
411 3.7 Drag and drop *drag-n-drop* | |
412 | |
413 You can drag and drop one or more files into the Vim window, where they will | |
414 be opened as if a |:drop| command was used. | |
415 | |
416 If you hold down Shift while doing this, Vim changes to the first dropped | |
417 file's directory. If you hold Ctrl Vim will always split a new window for the | |
418 file. Otherwise it's only done if the current buffer has been changed. | |
419 | |
420 You can also drop a directory on Vim. This starts the explorer plugin for | |
421 that directory (assuming it was enabled, otherwise you'll get an error | |
422 message). Keep Shift pressed to change to the directory instead. | |
423 | |
424 If Vim happens to be editing a command line, the names of the dropped files | |
425 and directories will be inserted at the cursor. This allows you to use these | |
426 names with any Ex command. Special characters (space, tab, double quote and | |
427 '|'; backslash on non-MS-Windows systems) will be escaped. | |
428 | |
429 ============================================================================== | |
430 4. Making GUI Selections *gui-selections* | |
431 | |
432 *quotestar* | |
433 You may make selections with the mouse (see |gui-mouse-select|), or by using | |
434 Vim's Visual mode (see |v|). If 'a' is present in 'guioptions', then | |
435 whenever a selection is started (Visual or Select mode), or when the selection | |
436 is changed, Vim becomes the owner of the windowing system's primary selection | |
437 (on MS-Windows the |gui-clipboard| is used; under X11, the |x11-selection| is | |
438 used - you should read whichever of these is appropriate now). | |
439 | |
440 *clipboard* | |
441 There is a special register for storing this selection, it is the "* | |
442 register. Nothing is put in here unless the information about what text is | |
236 | 443 selected is about to change (e.g. with a left mouse click somewhere), or when |
7 | 444 another application wants to paste the selected text. Then the text is put |
445 in the "* register. For example, to cut a line and make it the current | |
446 selection/put it on the clipboard: > | |
447 | |
448 "*dd | |
449 | |
450 Similarly, when you want to paste a selection from another application, e.g., | |
451 by clicking the middle mouse button, the selection is put in the "* register | |
452 first, and then 'put' like any other register. For example, to put the | |
453 selection (contents of the clipboard): > | |
454 | |
455 "*p | |
456 | |
457 When using this register under X11, also see |x11-selection|. This also | |
458 explains the related "+ register. | |
459 | |
460 Note that when pasting text from one Vim into another separate Vim, the type | |
461 of selection (character, line, or block) will also be copied. For other | |
462 applications the type is always character. However, if the text gets | |
463 transferred via the |x11-cut-buffer|, the selection type is ALWAYS lost. | |
464 | |
465 When the "unnamed" string is included in the 'clipboard' option, the unnamed | |
466 register is the same as the "* register. Thus you can yank to and paste the | |
467 selection without prepending "* to commands. | |
468 | |
469 ============================================================================== | |
470 5. Menus *menus* | |
471 | |
472 For an introduction see |usr_42.txt| in the user manual. | |
473 | |
474 | |
475 5.1 Using Menus *using-menus* | |
476 | |
477 Basically, menus can be used just like mappings. You can define your own | |
478 menus, as many as you like. | |
479 Long-time Vim users won't use menus much. But the power is in adding your own | |
480 menus and menu items. They are most useful for things that you can't remember | |
481 what the key sequence was. | |
482 | |
483 For creating menus in a different language, see |:menutrans|. | |
12756
3b26420fc639
Long overdue runtime update.
Christian Brabandt <cb@256bit.org>
parents:
12559
diff
changeset
|
484 If you don't want to use menus at all, see |'go-M'|. |
7 | 485 |
486 *menu.vim* | |
487 The default menus are read from the file "$VIMRUNTIME/menu.vim". See | |
488 |$VIMRUNTIME| for where the path comes from. You can set up your own menus. | |
489 Starting off with the default set is a good idea. You can add more items, or, | |
490 if you don't like the defaults at all, start with removing all menus | |
491 |:unmenu-all|. You can also avoid the default menus being loaded by adding | |
492 this line to your .vimrc file (NOT your .gvimrc file!): > | |
493 :let did_install_default_menus = 1 | |
494 If you also want to avoid the Syntax menu: > | |
495 :let did_install_syntax_menu = 1 | |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
496 The first item in the Syntax menu can be used to show all available filetypes |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
497 in the menu (which can take a bit of time to load). If you want to have all |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
498 filetypes already present at startup, add: > |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
499 :let do_syntax_sel_menu = 1 |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
500 |
12804
6687b321fb91
patch 8.0.1279: initializing menus can be slow
Christian Brabandt <cb@256bit.org>
parents:
12785
diff
changeset
|
501 The following menuitems show all available color schemes, keymaps and compiler |
6687b321fb91
patch 8.0.1279: initializing menus can be slow
Christian Brabandt <cb@256bit.org>
parents:
12785
diff
changeset
|
502 settings: |
6687b321fb91
patch 8.0.1279: initializing menus can be slow
Christian Brabandt <cb@256bit.org>
parents:
12785
diff
changeset
|
503 Edit > Color Scheme ~ |
6687b321fb91
patch 8.0.1279: initializing menus can be slow
Christian Brabandt <cb@256bit.org>
parents:
12785
diff
changeset
|
504 Edit > Keymap ~ |
6687b321fb91
patch 8.0.1279: initializing menus can be slow
Christian Brabandt <cb@256bit.org>
parents:
12785
diff
changeset
|
505 Tools > Set Compiler ~ |
6687b321fb91
patch 8.0.1279: initializing menus can be slow
Christian Brabandt <cb@256bit.org>
parents:
12785
diff
changeset
|
506 However, they can also take a bit of time to load, because they search all |
6687b321fb91
patch 8.0.1279: initializing menus can be slow
Christian Brabandt <cb@256bit.org>
parents:
12785
diff
changeset
|
507 related files from the directories in 'runtimepath'. Therefore they are |
6687b321fb91
patch 8.0.1279: initializing menus can be slow
Christian Brabandt <cb@256bit.org>
parents:
12785
diff
changeset
|
508 loaded lazily (by the |CursorHold| event), or you can also load them manually. |
6687b321fb91
patch 8.0.1279: initializing menus can be slow
Christian Brabandt <cb@256bit.org>
parents:
12785
diff
changeset
|
509 If you want to have all these items already present at startup, add: > |
6687b321fb91
patch 8.0.1279: initializing menus can be slow
Christian Brabandt <cb@256bit.org>
parents:
12785
diff
changeset
|
510 :let do_no_lazyload_menus = 1 |
6687b321fb91
patch 8.0.1279: initializing menus can be slow
Christian Brabandt <cb@256bit.org>
parents:
12785
diff
changeset
|
511 |
12756
3b26420fc639
Long overdue runtime update.
Christian Brabandt <cb@256bit.org>
parents:
12559
diff
changeset
|
512 Note that the menu.vim is sourced when `:syntax on` or `:filetype on` is |
3b26420fc639
Long overdue runtime update.
Christian Brabandt <cb@256bit.org>
parents:
12559
diff
changeset
|
513 executed or after your .vimrc file is sourced. This means that the 'encoding' |
3b26420fc639
Long overdue runtime update.
Christian Brabandt <cb@256bit.org>
parents:
12559
diff
changeset
|
514 option and the language of messages (`:language messages`) must be set before |
3b26420fc639
Long overdue runtime update.
Christian Brabandt <cb@256bit.org>
parents:
12559
diff
changeset
|
515 that (if you want to change them). |
3b26420fc639
Long overdue runtime update.
Christian Brabandt <cb@256bit.org>
parents:
12559
diff
changeset
|
516 |
7 | 517 *console-menus* |
518 Although this documentation is in the GUI section, you can actually use menus | |
519 in console mode too. You will have to load |menu.vim| explicitly then, it is | |
520 not done by default. You can use the |:emenu| command and command-line | |
521 completion with 'wildmenu' to access the menu entries almost like a real menu | |
522 system. To do this, put these commands in your .vimrc file: > | |
523 :source $VIMRUNTIME/menu.vim | |
524 :set wildmenu | |
525 :set cpo-=< | |
526 :set wcm=<C-Z> | |
527 :map <F4> :emenu <C-Z> | |
528 Pressing <F4> will start the menu. You can now use the cursor keys to select | |
529 a menu entry. Hit <Enter> to execute it. Hit <Esc> if you want to cancel. | |
530 This does require the |+menu| feature enabled at compile time. | |
531 | |
532 *tear-off-menus* | |
8218
3456e2ebebd4
commit https://github.com/vim/vim/commit/9892189d2e7ab94b750f99e6da4cbfc3c8014517
Christian Brabandt <cb@256bit.org>
parents:
5697
diff
changeset
|
533 GTK+ 2 and Motif support Tear-off menus. These are sort of sticky menus or |
7 | 534 pop-up menus that are present all the time. If the resizing does not work |
535 correctly, this may be caused by using something like "Vim*geometry" in the | |
536 defaults. Use "Vim.geometry" instead. | |
537 | |
8218
3456e2ebebd4
commit https://github.com/vim/vim/commit/9892189d2e7ab94b750f99e6da4cbfc3c8014517
Christian Brabandt <cb@256bit.org>
parents:
5697
diff
changeset
|
538 As to GTK+ 3, tear-off menus have been deprecated since GTK+ 3.4. |
3456e2ebebd4
commit https://github.com/vim/vim/commit/9892189d2e7ab94b750f99e6da4cbfc3c8014517
Christian Brabandt <cb@256bit.org>
parents:
5697
diff
changeset
|
539 Accordingly, they are disabled if gvim is linked against GTK+ 3.4 or later. |
3456e2ebebd4
commit https://github.com/vim/vim/commit/9892189d2e7ab94b750f99e6da4cbfc3c8014517
Christian Brabandt <cb@256bit.org>
parents:
5697
diff
changeset
|
540 |
7 | 541 The Win32 GUI version emulates Motif's tear-off menus. Actually, a Motif user |
542 will spot the differences easily, but hopefully they're just as useful. You | |
543 can also use the |:tearoff| command together with |hidden-menus| to create | |
544 floating menus that do not appear on the main menu bar. | |
545 | |
546 | |
547 5.2 Creating New Menus *creating-menus* | |
548 | |
14952
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
549 *:me* *:menu* *:noreme* *:noremenu* |
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
550 *:am* *:amenu* *:an* *:anoremenu* |
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
551 *:nme* *:nmenu* *:nnoreme* *:nnoremenu* |
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
552 *:ome* *:omenu* *:onoreme* *:onoremenu* |
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
553 *:vme* *:vmenu* *:vnoreme* *:vnoremenu* |
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
554 *:xme* *:xmenu* *:xnoreme* *:xnoremenu* |
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
555 *:sme* *:smenu* *:snoreme* *:snoremenu* |
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
556 *:ime* *:imenu* *:inoreme* *:inoremenu* |
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
557 *:cme* *:cmenu* *:cnoreme* *:cnoremenu* |
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
558 *:tlm* *:tlmenu* *:tln* *:tlnoremenu* |
7 | 559 *E330* *E327* *E331* *E336* *E333* |
1120 | 560 *E328* *E329* *E337* *E792* |
7 | 561 To create a new menu item, use the ":menu" commands. They are mostly like |
18594 | 562 the ":map" set of commands (see |map-modes|), but the first argument is a menu |
563 item name, given as a path of menus and submenus with a '.' between them, | |
564 e.g.: > | |
7 | 565 |
566 :menu File.Save :w<CR> | |
567 :inoremenu File.Save <C-O>:w<CR> | |
568 :menu Edit.Big\ Changes.Delete\ All\ Spaces :%s/[ ^I]//g<CR> | |
569 | |
570 This last one will create a new item in the menu bar called "Edit", holding | |
571 the mouse button down on this will pop up a menu containing the item | |
572 "Big Changes", which is a sub-menu containing the item "Delete All Spaces", | |
573 which when selected, performs the operation. | |
574 | |
14952
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
575 To create a menu for terminal mode, use |:tlmenu| instead of |:tmenu| unlike |
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
576 key mapping (|:tmap|). This is because |:tmenu| is already used for defining |
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
577 tooltips for menus. See |terminal-typing|. |
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
578 |
7 | 579 Special characters in a menu name: |
580 | |
19657
da791e5c0139
patch 8.2.0385: menu functionality insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19526
diff
changeset
|
581 *menu-shortcut* |
7 | 582 & The next character is the shortcut key. Make sure each |
583 shortcut key is only used once in a (sub)menu. If you want to | |
584 insert a literal "&" in the menu name use "&&". | |
19657
da791e5c0139
patch 8.2.0385: menu functionality insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19526
diff
changeset
|
585 *menu-text* |
7 | 586 <Tab> Separates the menu name from right-aligned text. This can be |
587 used to show the equivalent typed command. The text "<Tab>" | |
588 can be used here for convenience. If you are using a real | |
1235 | 589 tab, don't forget to put a backslash before it! |
7 | 590 Example: > |
591 | |
592 :amenu &File.&Open<Tab>:e :browse e<CR> | |
593 | |
594 [typed literally] | |
595 With the shortcut "F" (while keeping the <Alt> key pressed), and then "O", | |
596 this menu can be used. The second part is shown as "Open :e". The ":e" | |
597 is right aligned, and the "O" is underlined, to indicate it is the shortcut. | |
598 | |
14952
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
599 The ":amenu" command can be used to define menu entries for all modes at once, |
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
600 except for Terminal mode. To make the command work correctly, a character is |
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
601 automatically inserted for some modes: |
7 | 602 mode inserted appended ~ |
603 Normal nothing nothing | |
604 Visual <C-C> <C-\><C-G> | |
2152 | 605 Insert <C-\><C-O> |
7 | 606 Cmdline <C-C> <C-\><C-G> |
607 Op-pending <C-C> <C-\><C-G> | |
608 | |
609 Appending CTRL-\ CTRL-G is for going back to insert mode when 'insertmode' is | |
610 set. |CTRL-\_CTRL-G| | |
611 | |
612 Example: > | |
613 | |
614 :amenu File.Next :next^M | |
615 | |
616 is equal to: > | |
617 | |
618 :nmenu File.Next :next^M | |
619 :vmenu File.Next ^C:next^M^\^G | |
2152 | 620 :imenu File.Next ^\^O:next^M |
7 | 621 :cmenu File.Next ^C:next^M^\^G |
622 :omenu File.Next ^C:next^M^\^G | |
623 | |
624 Careful: In Insert mode this only works for a SINGLE Normal mode command, | |
625 because of the CTRL-O. If you have two or more commands, you will need to use | |
626 the ":imenu" command. For inserting text in any mode, you can use the | |
627 expression register: > | |
628 | |
629 :amenu Insert.foobar "='foobar'<CR>P | |
630 | |
631 Note that the '<' and 'k' flags in 'cpoptions' also apply here (when | |
632 included they make the <> form and raw key codes not being recognized). | |
633 | |
634 Note that <Esc> in Cmdline mode executes the command, like in a mapping. This | |
635 is Vi compatible. Use CTRL-C to quit Cmdline mode. | |
636 | |
637 *:menu-<silent>* *:menu-silent* | |
638 To define a menu which will not be echoed on the command line, add | |
639 "<silent>" as the first argument. Example: > | |
640 :menu <silent> Settings.Ignore\ case :set ic<CR> | |
641 The ":set ic" will not be echoed when using this menu. Messages from the | |
642 executed command are still given though. To shut them up too, add a ":silent" | |
643 in the executed command: > | |
644 :menu <silent> Search.Header :exe ":silent normal /Header\r"<CR> | |
859 | 645 "<silent>" may also appear just after "<special>" or "<script>". |
646 | |
647 *:menu-<special>* *:menu-special* | |
648 Define a menu with <> notation for special keys, even though the "<" flag | |
649 may appear in 'cpoptions'. This is useful if the side effect of setting | |
650 'cpoptions' is not desired. Example: > | |
651 :menu <special> Search.Header /Header<CR> | |
652 "<special>" must appear as the very first argument to the ":menu" command or | |
653 just after "<silent>" or "<script>". | |
654 | |
7 | 655 *:menu-<script>* *:menu-script* |
656 The "to" part of the menu will be inspected for mappings. If you don't want | |
657 this, use the ":noremenu" command (or the similar one for a specific mode). | |
658 If you do want to use script-local mappings, add "<script>" as the very first | |
859 | 659 argument to the ":menu" command or just after "<silent>" or "<special>". |
7 | 660 |
661 *menu-priority* | |
662 You can give a priority to a menu. Menus with a higher priority go more to | |
663 the right. The priority is given as a number before the ":menu" command. | |
664 Example: > | |
665 :80menu Buffer.next :bn<CR> | |
666 | |
667 The default menus have these priorities: | |
668 File 10 | |
669 Edit 20 | |
670 Tools 40 | |
671 Syntax 50 | |
672 Buffers 60 | |
673 Window 70 | |
674 Help 9999 | |
675 | |
676 When no or zero priority is given, 500 is used. | |
677 The priority for the PopUp menu is not used. | |
678 | |
679 The Help menu will be placed on the far right side of the menu bar on systems | |
8218
3456e2ebebd4
commit https://github.com/vim/vim/commit/9892189d2e7ab94b750f99e6da4cbfc3c8014517
Christian Brabandt <cb@256bit.org>
parents:
5697
diff
changeset
|
680 which support this (Motif and GTK+). For GTK+ 2 and 3, this is not done |
3456e2ebebd4
commit https://github.com/vim/vim/commit/9892189d2e7ab94b750f99e6da4cbfc3c8014517
Christian Brabandt <cb@256bit.org>
parents:
5697
diff
changeset
|
681 anymore because right-aligning the Help menu is now discouraged UI design. |
7 | 682 |
683 You can use a priority higher than 9999, to make it go after the Help menu, | |
684 but that is non-standard and is discouraged. The highest possible priority is | |
685 about 32000. The lowest is 1. | |
686 | |
687 *sub-menu-priority* | |
688 The same mechanism can be used to position a sub-menu. The priority is then | |
689 given as a dot-separated list of priorities, before the menu name: > | |
690 :menu 80.500 Buffer.next :bn<CR> | |
691 Giving the sub-menu priority is only needed when the item is not to be put | |
692 in a normal position. For example, to put a sub-menu before the other items: > | |
693 :menu 80.100 Buffer.first :brew<CR> | |
694 Or to put a sub-menu after the other items, and further items with default | |
695 priority will be put before it: > | |
696 :menu 80.900 Buffer.last :blast<CR> | |
697 When a number is missing, the default value 500 will be used: > | |
698 :menu .900 myMenu.test :echo "text"<CR> | |
699 The menu priority is only used when creating a new menu. When it already | |
700 existed, e.g., in another mode, the priority will not change. Thus, the | |
701 priority only needs to be given the first time a menu is used. | |
702 An exception is the PopUp menu. There is a separate menu for each mode | |
703 (Normal, Op-pending, Visual, Insert, Cmdline). The order in each of these | |
704 menus can be different. This is different from menu-bar menus, which have | |
705 the same order for all modes. | |
706 NOTE: sub-menu priorities currently don't work for all versions of the GUI. | |
707 | |
708 *menu-separator* *E332* | |
709 Menu items can be separated by a special item that inserts some space between | |
710 items. Depending on the system this is displayed as a line or a dotted line. | |
711 These items must start with a '-' and end in a '-'. The part in between is | |
712 used to give it a unique name. Priorities can be used as with normal items. | |
713 Example: > | |
714 :menu Example.item1 :do something | |
715 :menu Example.-Sep- : | |
716 :menu Example.item2 :do something different | |
717 Note that the separator also requires a rhs. It doesn't matter what it is, | |
718 because the item will never be selected. Use a single colon to keep it | |
719 simple. | |
720 | |
721 *gui-toolbar* | |
11 | 722 The toolbar is currently available in the Win32, Athena, Motif, GTK+ (X11), |
862 | 723 and Photon GUI. It should turn up in other GUIs in due course. The |
236 | 724 default toolbar is setup in menu.vim. |
725 The display of the toolbar is controlled by the 'guioptions' letter 'T'. You | |
7 | 726 can thus have menu & toolbar together, or either on its own, or neither. |
2207
b17bbfa96fa0
Add the settabvar() and gettabvar() functions.
Bram Moolenaar <bram@vim.org>
parents:
2154
diff
changeset
|
727 The appearance is controlled by the 'toolbar' option. You can choose between |
7 | 728 an image, text or both. |
729 | |
730 *toolbar-icon* | |
731 The toolbar is defined as a special menu called ToolBar, which only has one | |
732 level. Vim interprets the items in this menu as follows: | |
733 1) If an "icon=" argument was specified, the file with this name is used. | |
734 The file can either be specified with the full path or with the base name. | |
735 In the last case it is searched for in the "bitmaps" directory in | |
236 | 736 'runtimepath', like in point 3. Examples: > |
7 | 737 :amenu icon=/usr/local/pixmaps/foo_icon.xpm ToolBar.Foo :echo "Foo"<CR> |
738 :amenu icon=FooIcon ToolBar.Foo :echo "Foo"<CR> | |
739 < Note that in the first case the extension is included, while in the second | |
740 case it is omitted. | |
741 If the file cannot be opened the next points are tried. | |
742 A space in the file name must be escaped with a backslash. | |
743 A menu priority must come _after_ the icon argument: > | |
744 :amenu icon=foo 1.42 ToolBar.Foo :echo "42!"<CR> | |
745 2) An item called 'BuiltIn##', where ## is a number, is taken as number ## of | |
236 | 746 the built-in bitmaps available in Vim. Currently there are 31 numbered |
7 | 747 from 0 to 30 which cover most common editing operations |builtin-tools|. > |
748 :amenu ToolBar.BuiltIn22 :call SearchNext("back")<CR> | |
749 3) An item with another name is first searched for in the directory | |
750 "bitmaps" in 'runtimepath'. If found, the bitmap file is used as the | |
751 toolbar button image. Note that the exact filename is OS-specific: For | |
752 example, under Win32 the command > | |
753 :amenu ToolBar.Hello :echo "hello"<CR> | |
754 < would find the file 'hello.bmp'. Under GTK+/X11 it is 'Hello.xpm'. With | |
755 GTK+ 2 the files 'Hello.png', 'Hello.xpm' and 'Hello.bmp' are checked for | |
756 existence, and the first one found would be used. | |
757 For MS-Windows and GTK+ 2 the bitmap is scaled to fit the button. For | |
758 MS-Windows a size of 18 by 18 pixels works best. | |
759 For MS-Windows the bitmap should have 16 colors with the standard palette. | |
760 The light grey pixels will be changed to the Window frame color and the | |
761 dark grey pixels to the window shadow color. More colors might also work, | |
762 depending on your system. | |
763 4) If the bitmap is still not found, Vim checks for a match against its list | |
764 of built-in names. Each built-in button image has a name. | |
765 So the command > | |
766 :amenu ToolBar.Open :e | |
767 < will show the built-in "open a file" button image if no open.bmp exists. | |
768 All the built-in names can be seen used in menu.vim. | |
769 5) If all else fails, a blank, but functioning, button is displayed. | |
770 | |
771 *builtin-tools* | |
772 nr Name Normal action ~ | |
773 00 New open new window | |
774 01 Open browse for file to open in current window | |
775 02 Save write buffer to file | |
776 03 Undo undo last change | |
777 04 Redo redo last undone change | |
778 05 Cut delete selected text to clipboard | |
779 06 Copy copy selected text to clipboard | |
780 07 Paste paste text from clipboard | |
781 08 Print print current buffer | |
782 09 Help open a buffer on Vim's builtin help | |
783 10 Find start a search command | |
784 11 SaveAll write all modified buffers to file | |
785 12 SaveSesn write session file for current situation | |
786 13 NewSesn write new session file | |
787 14 LoadSesn load session file | |
788 15 RunScript browse for file to run as a Vim script | |
789 16 Replace prompt for substitute command | |
790 17 WinClose close current window | |
791 18 WinMax make current window use many lines | |
792 19 WinMin make current window use few lines | |
793 20 WinSplit split current window | |
794 21 Shell start a shell | |
795 22 FindPrev search again, backward | |
796 23 FindNext search again, forward | |
797 24 FindHelp prompt for word to search help for | |
798 25 Make run make and jump to first error | |
799 26 TagJump jump to tag under the cursor | |
800 27 RunCtags build tags for files in current directory | |
801 28 WinVSplit split current window vertically | |
802 29 WinMaxWidth make current window use many columns | |
803 30 WinMinWidth make current window use few columns | |
804 | |
805 *hidden-menus* *win32-hidden-menus* | |
806 In the Win32 and GTK+ GUI, starting a menu name with ']' excludes that menu | |
807 from the main menu bar. You must then use the |:popup| or |:tearoff| command | |
808 to display it. | |
809 | |
12499 | 810 *window-toolbar* *WinBar* |
12487
3f16cf18386c
patch 8.0.1123: cannot define a toolbar for a window
Christian Brabandt <cb@256bit.org>
parents:
12254
diff
changeset
|
811 Each window can have a local toolbar. This uses the first line of the window, |
12499 | 812 thus reduces the space for the text by one line. The items in the toolbar |
813 must start with "WinBar". | |
12487
3f16cf18386c
patch 8.0.1123: cannot define a toolbar for a window
Christian Brabandt <cb@256bit.org>
parents:
12254
diff
changeset
|
814 |
12499 | 815 Only text can be used. When using Unicode, special characters can be used to |
12487
3f16cf18386c
patch 8.0.1123: cannot define a toolbar for a window
Christian Brabandt <cb@256bit.org>
parents:
12254
diff
changeset
|
816 make the items look like icons. |
3f16cf18386c
patch 8.0.1123: cannot define a toolbar for a window
Christian Brabandt <cb@256bit.org>
parents:
12254
diff
changeset
|
817 |
3f16cf18386c
patch 8.0.1123: cannot define a toolbar for a window
Christian Brabandt <cb@256bit.org>
parents:
12254
diff
changeset
|
818 If the items do not fit then the last ones cannot be used. The toolbar does |
3f16cf18386c
patch 8.0.1123: cannot define a toolbar for a window
Christian Brabandt <cb@256bit.org>
parents:
12254
diff
changeset
|
819 not wrap. |
3f16cf18386c
patch 8.0.1123: cannot define a toolbar for a window
Christian Brabandt <cb@256bit.org>
parents:
12254
diff
changeset
|
820 |
12559 | 821 Note that Vim may be in any mode when executing these commands. The menu |
822 should be defined for Normal mode and will be executed without changing the | |
823 current mode. Thus if the current window is in Visual mode and the menu | |
824 command does not intentionally change the mode, Vim will remain in Visual | |
825 mode. Best is to use `:nnoremenu` to avoid side effects. | |
826 | |
12487
3f16cf18386c
patch 8.0.1123: cannot define a toolbar for a window
Christian Brabandt <cb@256bit.org>
parents:
12254
diff
changeset
|
827 Example for debugger tools: > |
12559 | 828 nnoremenu 1.10 WinBar.Step :Step<CR> |
829 nnoremenu 1.20 WinBar.Next :Next<CR> | |
830 nnoremenu 1.30 WinBar.Finish :Finish<CR> | |
831 nnoremenu 1.40 WinBar.Cont :Continue<CR> | |
12487
3f16cf18386c
patch 8.0.1123: cannot define a toolbar for a window
Christian Brabandt <cb@256bit.org>
parents:
12254
diff
changeset
|
832 < |
3f16cf18386c
patch 8.0.1123: cannot define a toolbar for a window
Christian Brabandt <cb@256bit.org>
parents:
12254
diff
changeset
|
833 The window toolbar uses the ToolbarLine and ToolbarButton highlight groups. |
3f16cf18386c
patch 8.0.1123: cannot define a toolbar for a window
Christian Brabandt <cb@256bit.org>
parents:
12254
diff
changeset
|
834 |
12499 | 835 When splitting the window the window toolbar is not copied to the new window. |
836 | |
7 | 837 *popup-menu* |
862 | 838 In the Win32, GTK+, Motif, Athena and Photon GUI, you can define the |
434 | 839 special menu "PopUp". This is the menu that is displayed when the right mouse |
840 button is pressed, if 'mousemodel' is set to popup or popup_setpos. | |
12487
3f16cf18386c
patch 8.0.1123: cannot define a toolbar for a window
Christian Brabandt <cb@256bit.org>
parents:
12254
diff
changeset
|
841 Example: > |
3f16cf18386c
patch 8.0.1123: cannot define a toolbar for a window
Christian Brabandt <cb@256bit.org>
parents:
12254
diff
changeset
|
842 nnoremenu 1.40 PopUp.&Paste "+gP |
3f16cf18386c
patch 8.0.1123: cannot define a toolbar for a window
Christian Brabandt <cb@256bit.org>
parents:
12254
diff
changeset
|
843 menu PopUp |
7 | 844 |
845 | |
846 5.3 Showing What Menus Are Mapped To *showing-menus* | |
847 | |
848 To see what an existing menu is mapped to, use just one argument after the | |
849 menu commands (just like you would with the ":map" commands). If the menu | |
850 specified is a submenu, then all menus under that hierarchy will be shown. | |
851 If no argument is given after :menu at all, then ALL menu items are shown | |
236 | 852 for the appropriate mode (e.g., Command-line mode for :cmenu). |
7 | 853 |
854 Special characters in the list, just before the rhs: | |
855 * The menu was defined with "nore" to disallow remapping. | |
856 & The menu was defined with "<script>" to allow remapping script-local | |
857 mappings only. | |
19721 | 858 s The menu was defined with "<silent>" to avoid showing what it is |
859 mapped to when triggered. | |
7 | 860 - The menu was disabled. |
861 | |
862 Note that hitting <Tab> while entering a menu name after a menu command may | |
863 be used to complete the name of the menu item. | |
864 | |
865 | |
866 5.4 Executing Menus *execute-menus* | |
867 | |
868 *:em* *:emenu* *E334* *E335* | |
869 :[range]em[enu] {menu} Execute {menu} from the command line. | |
870 The default is to execute the Normal mode | |
871 menu. If a range is specified, it executes | |
872 the Visual mode menu. | |
873 If used from <c-o>, it executes the | |
874 insert-mode menu Eg: > | |
875 :emenu File.Exit | |
876 | |
14952
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
877 :[range]em[enu] {mode} {menu} Like above, but execute the menu for {mode}: |
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
878 'n': |:nmenu| Normal mode |
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
879 'v': |:vmenu| Visual mode |
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
880 's': |:smenu| Select mode |
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
881 'o': |:omenu| Operator-pending mode |
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
882 't': |:tlmenu| Terminal mode |
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
883 'i': |:imenu| Insert mode |
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
884 'c': |:cmenu| Cmdline mode |
15033 | 885 |
14952
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
886 |
7 | 887 If the console-mode vim has been compiled with WANT_MENU defined, you can |
888 use :emenu to access useful menu items you may have got used to from GUI | |
889 mode. See 'wildmenu' for an option that works well with this. See | |
890 |console-menus| for an example. | |
891 | |
892 When using a range, if the lines match with '<,'>, then the menu is executed | |
893 using the last visual selection. | |
894 | |
895 | |
896 5.5 Deleting Menus *delete-menus* | |
897 | |
898 *:unme* *:unmenu* | |
899 *:aun* *:aunmenu* | |
900 *:nunme* *:nunmenu* | |
901 *:ounme* *:ounmenu* | |
902 *:vunme* *:vunmenu* | |
788 | 903 *:xunme* *:xunmenu* |
904 *:sunme* *:sunmenu* | |
7 | 905 *:iunme* *:iunmenu* |
906 *:cunme* *:cunmenu* | |
14952
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
907 *:tlu* *:tlunmenu* |
7 | 908 To delete a menu item or a whole submenu, use the unmenu commands, which are |
909 analogous to the unmap commands. Eg: > | |
910 :unmenu! Edit.Paste | |
911 | |
912 This will remove the Paste item from the Edit menu for Insert and | |
913 Command-line modes. | |
914 | |
915 Note that hitting <Tab> while entering a menu name after an umenu command | |
916 may be used to complete the name of the menu item for the appropriate mode. | |
917 | |
918 To remove all menus use: *:unmenu-all* > | |
919 :unmenu * " remove all menus in Normal and visual mode | |
920 :unmenu! * " remove all menus in Insert and Command-line mode | |
15375
6012cc6936f7
patch 8.1.0695: internal error when using :popup
Bram Moolenaar <Bram@vim.org>
parents:
15033
diff
changeset
|
921 :aunmenu * " remove all menus in all modes, except for Terminal |
6012cc6936f7
patch 8.1.0695: internal error when using :popup
Bram Moolenaar <Bram@vim.org>
parents:
15033
diff
changeset
|
922 " mode |
6012cc6936f7
patch 8.1.0695: internal error when using :popup
Bram Moolenaar <Bram@vim.org>
parents:
15033
diff
changeset
|
923 :tlunmenu * " remove all menus in Terminal mode |
7 | 924 |
925 If you want to get rid of the menu bar: > | |
926 :set guioptions-=m | |
927 | |
928 | |
929 5.6 Disabling Menus *disable-menus* | |
930 | |
931 *:menu-disable* *:menu-enable* | |
932 If you do not want to remove a menu, but disable it for a moment, this can be | |
933 done by adding the "enable" or "disable" keyword to a ":menu" command. | |
934 Examples: > | |
935 :menu disable &File.&Open\.\.\. | |
936 :amenu enable * | |
937 :amenu disable &Tools.* | |
938 | |
939 The command applies to the modes as used with all menu commands. Note that | |
940 characters like "&" need to be included for translated names to be found. | |
941 When the argument is "*", all menus are affected. Otherwise the given menu | |
942 name and all existing submenus below it are affected. | |
943 | |
944 | |
945 5.7 Examples for Menus *menu-examples* | |
946 | |
947 Here is an example on how to add menu items with menu's! You can add a menu | |
948 item for the keyword under the cursor. The register "z" is used. > | |
949 | |
950 :nmenu Words.Add\ Var wb"zye:menu! Words.<C-R>z <C-R>z<CR> | |
951 :nmenu Words.Remove\ Var wb"zye:unmenu! Words.<C-R>z<CR> | |
952 :vmenu Words.Add\ Var "zy:menu! Words.<C-R>z <C-R>z <CR> | |
953 :vmenu Words.Remove\ Var "zy:unmenu! Words.<C-R>z<CR> | |
954 :imenu Words.Add\ Var <Esc>wb"zye:menu! Words.<C-R>z <C-R>z<CR>a | |
955 :imenu Words.Remove\ Var <Esc>wb"zye:unmenu! Words.<C-R>z<CR>a | |
956 | |
957 (the rhs is in <> notation, you can copy/paste this text to try out the | |
958 mappings, or put these lines in your gvimrc; "<C-R>" is CTRL-R, "<CR>" is | |
959 the <CR> key. |<>|) | |
960 | |
19657
da791e5c0139
patch 8.2.0385: menu functionality insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19526
diff
changeset
|
961 *tooltips* *menu-tips* |
7 | 962 5.8 Tooltips & Menu tips |
963 | |
964 See section |42.4| in the user manual. | |
965 | |
966 *:tmenu* *:tm* | |
967 :tm[enu] {menupath} {rhs} Define a tip for a menu or tool. {only in | |
968 X11 and Win32 GUI} | |
969 | |
970 :tm[enu] [menupath] List menu tips. {only in X11 and Win32 GUI} | |
971 | |
972 *:tunmenu* *:tu* | |
973 :tu[nmenu] {menupath} Remove a tip for a menu or tool. | |
974 {only in X11 and Win32 GUI} | |
975 | |
14952
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
976 Note: To create menus for terminal mode, use |:tlmenu| instead. |
405309f9dd13
patch 8.1.0487: no menus specifically for the terminal window
Bram Moolenaar <Bram@vim.org>
parents:
14421
diff
changeset
|
977 |
7 | 978 When a tip is defined for a menu item, it appears in the command-line area |
979 when the mouse is over that item, much like a standard Windows menu hint in | |
236 | 980 the status bar. (Except when Vim is in Command-line mode, when of course |
7 | 981 nothing is displayed.) |
982 When a tip is defined for a ToolBar item, it appears as a tooltip when the | |
983 mouse pauses over that button, in the usual fashion. Use the |hl-Tooltip| | |
984 highlight group to change its colors. | |
985 | |
986 A "tip" can be defined for each menu item. For example, when defining a menu | |
987 item like this: > | |
988 :amenu MyMenu.Hello :echo "Hello"<CR> | |
989 The tip is defined like this: > | |
990 :tmenu MyMenu.Hello Displays a greeting. | |
991 And delete it with: > | |
992 :tunmenu MyMenu.Hello | |
993 | |
236 | 994 Tooltips are currently only supported for the X11 and Win32 GUI. However, they |
7 | 995 should appear for the other gui platforms in the not too distant future. |
996 | |
997 The ":tmenu" command works just like other menu commands, it uses the same | |
998 arguments. ":tunmenu" deletes an existing menu tip, in the same way as the | |
999 other unmenu commands. | |
1000 | |
1001 If a menu item becomes invalid (i.e. its actions in all modes are deleted) Vim | |
1002 deletes the menu tip (and the item) for you. This means that :aunmenu deletes | |
1003 a menu item - you don't need to do a :tunmenu as well. | |
1004 | |
1005 | |
1006 5.9 Popup Menus | |
1007 | |
1008 In the Win32 and GTK+ GUI, you can cause a menu to popup at the cursor. | |
1009 This behaves similarly to the PopUp menus except that any menu tree can | |
1010 be popped up. | |
1011 | |
1012 This command is for backwards compatibility, using it is discouraged, because | |
1013 it behaves in a strange way. | |
1014 | |
1015 *:popup* *:popu* | |
1016 :popu[p] {name} Popup the menu {name}. The menu named must | |
1017 have at least one subentry, but need not | |
1018 appear on the menu-bar (see |hidden-menus|). | |
13437 | 1019 {only available for Win32 and GTK GUI or in |
17909 | 1020 the terminal} |
7 | 1021 |
398 | 1022 :popu[p]! {name} Like above, but use the position of the mouse |
1023 pointer instead of the cursor. | |
13437 | 1024 In the terminal this is the last known |
1025 position, which is usually at the last click | |
14006 | 1026 or release (mouse movement is irrelevant). |
398 | 1027 |
7 | 1028 Example: > |
1029 :popup File | |
398 | 1030 will make the "File" menu (if there is one) appear at the text cursor (mouse |
1031 pointer if ! was used). > | |
7 | 1032 |
1033 :amenu ]Toolbar.Make :make<CR> | |
1034 :popup ]Toolbar | |
1035 This creates a popup menu that doesn't exist on the main menu-bar. | |
1036 | |
13437 | 1037 Note that in the GUI the :popup command will return immediately, before a |
1038 selection has been made. In the terminal the commands waits for the user to | |
1039 make a selection. | |
1040 | |
7 | 1041 Note that a menu that starts with ']' will not be displayed. |
1042 | |
1043 ============================================================================== | |
16439
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1044 6. Font |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1045 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1046 This section describes font related options. |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1047 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1048 GUIFONT *gui-font* |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1049 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1050 'guifont' is the option that tells Vim what font to use. In its simplest form |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1051 the value is just one font name. It can also be a list of font names |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1052 separated with commas. The first valid font is used. When no valid font can |
16808 | 1053 be found you will get an error message. |
16439
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1054 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1055 On systems where 'guifontset' is supported (X11) and 'guifontset' is not |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1056 empty, then 'guifont' is not used. See |xfontset|. |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1057 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1058 Note: As to the GTK GUIs, no error is given against any invalid names, and the |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1059 first element of the list is always picked up and made use of. This is |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1060 because, instead of identifying a given name with a font, the GTK GUIs use it |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1061 to construct a pattern and try to look up a font which best matches the |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1062 pattern among available fonts, and this way, the matching never fails. An |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1063 invalid name doesn't matter because a number of font properties other than |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1064 name will do to get the matching done. |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1065 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1066 Spaces after a comma are ignored. To include a comma in a font name precede |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1067 it with a backslash. Setting an option requires an extra backslash before a |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1068 space and a backslash. See also |option-backslash|. For example: > |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1069 :set guifont=Screen15,\ 7x13,font\\,with\\,commas |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1070 will make Vim try to use the font "Screen15" first, and if it fails it will |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1071 try to use "7x13" and then "font,with,commas" instead. |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1072 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1073 If none of the fonts can be loaded, Vim will keep the current setting. If an |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1074 empty font list is given, Vim will try using other resource settings (for X, |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1075 it will use the Vim.font resource), and finally it will try some builtin |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1076 default which should always be there ("7x13" in the case of X). The font |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1077 names given should be "normal" fonts. Vim will try to find the related bold |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1078 and italic fonts. |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1079 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1080 For Win32, GTK, Motif, Mac OS and Photon: > |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1081 :set guifont=* |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1082 will bring up a font requester, where you can pick the font you want. |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1083 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1084 The font name depends on the GUI used. See |setting-guifont| for a way to set |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1085 'guifont' for various systems. |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1086 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1087 For the GTK+ 2 and 3 GUIs, the font name looks like this: > |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1088 :set guifont=Andale\ Mono\ 11 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1089 That's all. XLFDs are not used. For Chinese this is reported to work well: > |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1090 if has("gui_gtk2") |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1091 set guifont=Bitstream\ Vera\ Sans\ Mono\ 12,Fixed\ 12 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1092 set guifontwide=Microsoft\ Yahei\ 12,WenQuanYi\ Zen\ Hei\ 12 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1093 endif |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1094 < |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1095 (Replace gui_gtk2 with gui_gtk3 for the GTK+ 3 GUI) |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1096 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1097 For Mac OSX you can use something like this: > |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1098 :set guifont=Monaco:h10 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1099 Also see 'macatsui', it can help fix display problems. |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1100 *E236* |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1101 Note that the fonts must be mono-spaced (all characters have the same width). |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1102 An exception is GTK: all fonts are accepted, but mono-spaced fonts look best. |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1103 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1104 To preview a font on X11, you might be able to use the "xfontsel" program. |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1105 The "xlsfonts" program gives a list of all available fonts. |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1106 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1107 For the Win32 GUI *E244* *E245* |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1108 - Takes these options in the font name (use a ':' to separate the options): |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1109 hXX - height is XX (points, can be floating-point) |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1110 wXX - width is XX (points, can be floating-point) |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1111 WXX - weight is XX (see Note on Weights below) |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1112 b - bold. This is equivalent to setting the weight to 700. |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1113 i - italic |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1114 u - underline |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1115 s - strikeout |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1116 cXX - character set XX. Valid charsets are: ANSI, ARABIC, BALTIC, |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1117 CHINESEBIG5, DEFAULT, EASTEUROPE, GB2312, GREEK, HANGEUL, |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1118 HEBREW, JOHAB, MAC, OEM, RUSSIAN, SHIFTJIS, SYMBOL, THAI, |
16808 | 1119 TURKISH and VIETNAMESE. Normally you would use "cDEFAULT". |
16439
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1120 qXX - quality XX. Valid quality names are: PROOF, DRAFT, ANTIALIASED, |
16808 | 1121 NONANTIALIASED, CLEARTYPE and DEFAULT. Normally you would use |
16439
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1122 "qDEFAULT". |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1123 Some quality values are not supported in legacy OSs. |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1124 - A '_' can be used in the place of a space, so you don't need to use |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1125 backslashes to escape the spaces. |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1126 Examples: > |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1127 :set guifont=courier_new:h12:w5:b:cRUSSIAN |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1128 :set guifont=Andale_Mono:h7.5:w4.5 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1129 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1130 See also |font-sizes|. |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1131 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1132 Note on Weights: Fonts often come with a variety of weights. "Normal" weights |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1133 in Windows have a value of 400 and, left unspecified, this is the value that |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1134 will be used when attempting to find fonts. Windows will often match fonts |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1135 based on their weight with higher priority than the font name which means a |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1136 Book or Medium variant of a font might be used despite specifying a Light or |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1137 ExtraLight variant. If you are experiencing heavier weight substitution, then |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1138 explicitly setting a lower weight value may mitigate against this unwanted |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1139 substitution. |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1140 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1141 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1142 GUIFONTWIDE *gui-fontwide* |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1143 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1144 When not empty, 'guifontwide' specifies a comma-separated list of fonts to be |
16808 | 1145 used for double-width characters. The first font that can be loaded is used. |
16439
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1146 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1147 Note: The size of these fonts must be exactly twice as wide as the one |
16808 | 1148 specified with 'guifont' and the same height. If there is a mismatch then the |
1149 text will not be drawn correctly. | |
16439
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1150 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1151 All GUI versions but GTK+: |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1152 |
16808 | 1153 'guifontwide' is only used when 'encoding' is set to "utf-8" and 'guifontset' |
1154 is empty or invalid. | |
1155 When 'guifont' is set and a valid font is found in it and 'guifontwide' is | |
1156 empty Vim will attempt to find a matching double-width font and set | |
1157 'guifontwide' to it. | |
16439
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1158 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1159 GTK+ GUI only: *guifontwide_gtk* |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1160 |
16808 | 1161 If set and valid, 'guifontwide' is always used for double width characters, |
1162 even if 'encoding' is not set to "utf-8". | |
16439
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1163 Vim does not attempt to find an appropriate value for 'guifontwide' |
16808 | 1164 automatically. If 'guifontwide' is empty Pango/Xft will choose the font for |
1165 characters not available in 'guifont'. Thus you do not need to set | |
1166 'guifontwide' at all unless you want to override the choice made by Pango/Xft. | |
16439
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1167 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1168 Windows +multibyte only: *guifontwide_win_mbyte* |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1169 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1170 If set and valid, 'guifontwide' is used for IME instead of 'guifont'. |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1171 |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1172 ============================================================================== |
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1173 7. Extras *gui-extras* |
7 | 1174 |
1175 This section describes other features which are related to the GUI. | |
1176 | |
1177 - With the GUI, there is no wait for one second after hitting escape, because | |
1178 the key codes don't start with <Esc>. | |
1179 | |
1180 - Typing ^V followed by a special key in the GUI will insert "<Key>", since | |
1181 the internal string used is meaningless. Modifiers may also be held down to | |
1182 get "<Modifiers-Key>". | |
1183 | |
1184 - In the GUI, the modifiers SHIFT, CTRL, and ALT (or META) may be used within | |
16808 | 1185 mappings of special keys and mouse events. |
1186 E.g.: :map <M-LeftDrag> <LeftDrag> | |
7 | 1187 |
1188 - In the GUI, several normal keys may have modifiers in mappings etc, these | |
1189 are <Space>, <Tab>, <NL>, <CR>, <Esc>. | |
1190 | |
1191 - To check in a Vim script if the GUI is being used, you can use something | |
1192 like this: > | |
1193 | |
1194 if has("gui_running") | |
1195 echo "yes, we have a GUI" | |
1196 else | |
1197 echo "Boring old console" | |
1198 endif | |
8 | 1199 < *setting-guifont* |
1200 - When you use the same vimrc file on various systems, you can use something | |
1201 like this to set options specifically for each type of GUI: > | |
1202 | |
1203 if has("gui_running") | |
1204 if has("gui_gtk2") | |
1205 :set guifont=Luxi\ Mono\ 12 | |
1206 elseif has("x11") | |
1207 " Also for GTK 1 | |
1208 :set guifont=*-lucidatypewriter-medium-r-normal-*-*-180-*-*-m-*-* | |
1209 elseif has("gui_win32") | |
1210 :set guifont=Luxi_Mono:h12:cANSI | |
1211 endif | |
1212 endif | |
7 | 1213 |
678 | 1214 A recommended Japanese font is MS Mincho. You can find info here: |
1215 http://www.lexikan.com/mincho.htm | |
1216 | |
7 | 1217 ============================================================================== |
16439
9d20e26dc13c
patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents:
15375
diff
changeset
|
1218 8. Shell Commands *gui-shell* |
7 | 1219 |
1220 For the X11 GUI the external commands are executed inside the gvim window. | |
1221 See |gui-pty|. | |
1222 | |
16808 | 1223 WARNING: Executing an external command from the X11 GUI will not always work. |
1224 "normal" commands like "ls", "grep" and "make" mostly work fine. | |
7 | 1225 Commands that require an intelligent terminal like "less" and "ispell" won't |
1226 work. Some may even hang and need to be killed from another terminal. So be | |
1227 careful! | |
1228 | |
1229 For the Win32 GUI the external commands are executed in a separate window. | |
1230 See |gui-shell-win32|. | |
1231 | |
14421 | 1232 vim:tw=78:sw=4:ts=8:noet:ft=help:norl: |