annotate runtime/doc/usr_42.txt @ 13831:1f95ec5de238 v8.0.1787

patch 8.0.1787: cannot insert the whole cursor line commit https://github.com/vim/vim/commit/e2c8d8392684a940cc5608acc73ff47486bd7b92 Author: Bram Moolenaar <Bram@vim.org> Date: Tue May 1 19:24:03 2018 +0200 patch 8.0.1787: cannot insert the whole cursor line Problem: Cannot insert the whole cursor line. Solution: Make CTRL-R CTRL-L work. (Andy Massimino, closes https://github.com/vim/vim/issues/2857)
author Christian Brabandt <cb@256bit.org>
date Tue, 01 May 2018 19:30:06 +0200
parents 9f48eab77d62
children 1174611ad715
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10198
9f48eab77d62 commit https://github.com/vim/vim/commit/bb76f24af2010943387ce696a7092175b4ecccf2
Christian Brabandt <cb@256bit.org>
parents: 5690
diff changeset
1 *usr_42.txt* For Vim version 8.0. Last change: 2008 May 05
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3 VIM USER MANUAL - by Bram Moolenaar
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5 Add new menus
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8 By now you know that Vim is very flexible. This includes the menus used in
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
9 the GUI. You can define your own menu entries to make certain commands easily
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
10 accessible. This is for mouse-happy users only.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
11
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
12 |42.1| Introduction
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
13 |42.2| Menu commands
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
14 |42.3| Various
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
15 |42.4| Toolbar and popup menus
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
16
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
17 Next chapter: |usr_43.txt| Using filetypes
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
18 Previous chapter: |usr_41.txt| Write a Vim script
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
19 Table of contents: |usr_toc.txt|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
20
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
21 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
22 *42.1* Introduction
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
23
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
24 The menus that Vim uses are defined in the file "$VIMRUNTIME/menu.vim". If
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
25 you want to write your own menus, you might first want to look through that
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
26 file.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
27 To define a menu item, use the ":menu" command. The basic form of this
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
28 command is as follows: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
29
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
30 :menu {menu-item} {keys}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
31
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
32 The {menu-item} describes where on the menu to put the item. A typical
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
33 {menu-item} is "File.Save", which represents the item "Save" under the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
34 "File" menu. A dot is used to separate the names. Example: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
35
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
36 :menu File.Save :update<CR>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
37
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
38 The ":update" command writes the file when it was modified.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
39 You can add another level: "Edit.Settings.Shiftwidth" defines a submenu
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
40 "Settings" under the "Edit" menu, with an item "Shiftwidth". You could use
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
41 even deeper levels. Don't use this too much, you need to move the mouse quite
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
42 a bit to use such an item.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
43 The ":menu" command is very similar to the ":map" command: the left side
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
44 specifies how the item is triggered and the right hand side defines the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
45 characters that are executed. {keys} are characters, they are used just like
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
46 you would have typed them. Thus in Insert mode, when {keys} is plain text,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
47 that text is inserted.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
48
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
49
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
50 ACCELERATORS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
51
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
52 The ampersand character (&) is used to indicate an accelerator. For instance,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
53 you can use Alt-F to select "File" and S to select "Save". (The 'winaltkeys'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
54 option may disable this though!). Therefore, the {menu-item} looks like
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
55 "&File.&Save". The accelerator characters will be underlined in the menu.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
56 You must take care that each key is used only once in each menu. Otherwise
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
57 you will not know which of the two will actually be used. Vim doesn't warn
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
58 you for this.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
59
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
60
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
61 PRIORITIES
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
62
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
63 The actual definition of the File.Save menu item is as follows: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
64
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
65 :menu 10.340 &File.&Save<Tab>:w :confirm w<CR>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
66
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
67 The number 10.340 is called the priority number. It is used by the editor to
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
68 decide where it places the menu item. The first number (10) indicates the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
69 position on the menu bar. Lower numbered menus are positioned to the left,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
70 higher numbers to the right.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
71 These are the priorities used for the standard menus:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
72
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
73 10 20 40 50 60 70 9999
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
74
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
75 +------------------------------------------------------------+
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
76 | File Edit Tools Syntax Buffers Window Help |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
77 +------------------------------------------------------------+
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
78
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
79 Notice that the Help menu is given a very high number, to make it appear on
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
80 the far right.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
81 The second number (340) determines the location of the item within the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
82 pull-down menu. Lower numbers go on top, higher number on the bottom. These
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
83 are the priorities in the File menu:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
84
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
85 +-----------------+
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
86 10.310 |Open... |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
87 10.320 |Split-Open... |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
88 10.325 |New |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
89 10.330 |Close |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
90 10.335 |---------------- |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
91 10.340 |Save |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
92 10.350 |Save As... |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
93 10.400 |---------------- |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
94 10.410 |Split Diff with |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
95 10.420 |Split Patched By |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
96 10.500 |---------------- |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
97 10.510 |Print |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
98 10.600 |---------------- |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
99 10.610 |Save-Exit |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
100 10.620 |Exit |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
101 +-----------------+
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
102
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
103 Notice that there is room in between the numbers. This is where you can
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
104 insert your own items, if you really want to (it's often better to leave the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
105 standard menus alone and add a new menu for your own items).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
106 When you create a submenu, you can add another ".number" to the priority.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
107 Thus each name in {menu-item} has its priority number.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
108
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
109
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
110 SPECIAL CHARACTERS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
111
236
4707450c2b33 updated for version 7.0066
vimboss
parents: 7
diff changeset
112 The {menu-item} in this example is "&File.&Save<Tab>:w". This brings up an
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
113 important point: {menu-item} must be one word. If you want to put a dot,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
114 space or tabs in the name, you either use the <> notation (<Space> and <Tab>,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
115 for instance) or use the backslash (\) escape. >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
116
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
117 :menu 10.305 &File.&Do\ It\.\.\. :exit<CR>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
118
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
119 In this example, the name of the menu item "Do It..." contains a space and the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
120 command is ":exit<CR>".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
121
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
122 The <Tab> character in a menu name is used to separate the part that defines
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
123 the menu name from the part that gives a hint to the user. The part after the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
124 <Tab> is displayed right aligned in the menu. In the File.Save menu the name
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
125 used is "&File.&Save<Tab>:w". Thus the menu name is "File.Save" and the hint
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
126 is ":w".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
127
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
128
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
129 SEPARATORS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
130
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
131 The separator lines, used to group related menu items together, can be defined
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
132 by using a name that starts and ends in a '-'. For example "-sep-". When
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
133 using several separators the names must be different. Otherwise the names
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
134 don't matter.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
135 The command from a separator will never be executed, but you have to define
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
136 one anyway. A single colon will do. Example: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
137
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
138 :amenu 20.510 Edit.-sep3- :
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
139
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
140 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
141 *42.2* Menu commands
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
142
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
143 You can define menu items that exist for only certain modes. This works just
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
144 like the variations on the ":map" command:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
145
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
146 :menu Normal, Visual and Operator-pending mode
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
147 :nmenu Normal mode
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
148 :vmenu Visual mode
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
149 :omenu Operator-pending mode
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
150 :menu! Insert and Command-line mode
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
151 :imenu Insert mode
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
152 :cmenu Command-line mode
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
153 :amenu All modes
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
154
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
155 To avoid that the commands of a menu item are being mapped, use the command
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
156 ":noremenu", ":nnoremenu", ":anoremenu", etc.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
157
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
158
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
159 USING :AMENU
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
160
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
161 The ":amenu" command is a bit different. It assumes that the {keys} you
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
162 give are to be executed in Normal mode. When Vim is in Visual or Insert mode
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
163 when the menu is used, Vim first has to go back to Normal mode. ":amenu"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
164 inserts a CTRL-C or CTRL-O for you. For example, if you use this command:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
165 >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
166 :amenu 90.100 Mine.Find\ Word *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
167
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
168 Then the resulting menu commands will be:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
169
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
170 Normal mode: *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
171 Visual mode: CTRL-C *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
172 Operator-pending mode: CTRL-C *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
173 Insert mode: CTRL-O *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
174 Command-line mode: CTRL-C *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
175
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
176 When in Command-line mode the CTRL-C will abandon the command typed so far.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
177 In Visual and Operator-pending mode CTRL-C will stop the mode. The CTRL-O in
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
178 Insert mode will execute the command and then return to Insert mode.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
179 CTRL-O only works for one command. If you need to use two or more
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
180 commands, put them in a function and call that function. Example: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
181
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
182 :amenu Mine.Next\ File :call <SID>NextFile()<CR>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
183 :function <SID>NextFile()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
184 : next
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
185 : 1/^Code
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
186 :endfunction
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
187
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
188 This menu entry goes to the next file in the argument list with ":next". Then
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
189 it searches for the line that starts with "Code".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
190 The <SID> before the function name is the script ID. This makes the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
191 function local to the current Vim script file. This avoids problems when a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
192 function with the same name is defined in another script file. See |<SID>|.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
193
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
194
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
195 SILENT MENUS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
196
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
197 The menu executes the {keys} as if you typed them. For a ":" command this
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
198 means you will see the command being echoed on the command line. If it's a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
199 long command, the hit-Enter prompt will appear. That can be very annoying!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
200 To avoid this, make the menu silent. This is done with the <silent>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
201 argument. For example, take the call to NextFile() in the previous example.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
202 When you use this menu, you will see this on the command line:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
203
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
204 :call <SNR>34_NextFile() ~
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
205
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
206 To avoid this text on the command line, insert "<silent>" as the first
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
207 argument: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
208
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
209 :amenu <silent> Mine.Next\ File :call <SID>NextFile()<CR>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
210
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
211 Don't use "<silent>" too often. It is not needed for short commands. If you
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
212 make a menu for someone else, being able the see the executed command will
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
213 give him a hint about what he could have typed, instead of using the mouse.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
214
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
215
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
216 LISTING MENUS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
217
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
218 When a menu command is used without a {keys} part, it lists the already
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
219 defined menus. You can specify a {menu-item}, or part of it, to list specific
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
220 menus. Example: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
221
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
222 :amenu
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
223
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
224 This lists all menus. That's a long list! Better specify the name of a menu
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
225 to get a shorter list: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
226
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
227 :amenu Edit
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
228
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
229 This lists only the "Edit" menu items for all modes. To list only one
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
230 specific menu item for Insert mode: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
231
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
232 :imenu Edit.Undo
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
233
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
234 Take care that you type exactly the right name. Case matters here. But the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
235 '&' for accelerators can be omitted. The <Tab> and what comes after it can be
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
236 left out as well.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
237
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
238
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
239 DELETING MENUS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
240
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
241 To delete a menu, the same command is used as for listing, but with "menu"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
242 changed to "unmenu". Thus ":menu" becomes, ":unmenu", ":nmenu" becomes
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
243 ":nunmenu", etc. To delete the "Tools.Make" item for Insert mode: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
244
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
245 :iunmenu Tools.Make
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
246
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
247 You can delete a whole menu, with all its items, by using the menu name.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
248 Example: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
249
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
250 :aunmenu Syntax
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
251
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
252 This deletes the Syntax menu and all the items in it.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
253
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
254 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
255 *42.3* Various
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
256
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
257 You can change the appearance of the menus with flags in 'guioptions'. In the
1620
73fe8baea242 updated for version 7.2a
vimboss
parents: 1244
diff changeset
258 default value they are all included, except "M". You can remove a flag with a
73fe8baea242 updated for version 7.2a
vimboss
parents: 1244
diff changeset
259 command like: >
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
260
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
261 :set guioptions-=m
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
262 <
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
263 m When removed the menubar is not displayed.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
264
1620
73fe8baea242 updated for version 7.2a
vimboss
parents: 1244
diff changeset
265 M When added the default menus are not loaded.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
266
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
267 g When removed the inactive menu items are not made grey
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
268 but are completely removed. (Does not work on all
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
269 systems.)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
270
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
271 t When removed the tearoff feature is not enabled.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
272
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
273 The dotted line at the top of a menu is not a separator line. When you select
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
274 this item, the menu is "teared-off": It is displayed in a separate window.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
275 This is called a tearoff menu. This is useful when you use the same menu
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
276 often.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
277
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
278 For translating menu items, see |:menutrans|.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
279
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
280 Since the mouse has to be used to select a menu item, it is a good idea to use
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
281 the ":browse" command for selecting a file. And ":confirm" to get a dialog
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
282 instead of an error message, e.g., when the current buffer contains changes.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
283 These two can be combined: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
284
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
285 :amenu File.Open :browse confirm edit<CR>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
286
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
287 The ":browse" makes a file browser appear to select the file to edit. The
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
288 ":confirm" will pop up a dialog when the current buffer has changes. You can
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
289 then select to save the changes, throw them away or cancel the command.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
290 For more complicated items, the confirm() and inputdialog() functions can
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
291 be used. The default menus contain a few examples.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
292
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
293 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
294 *42.4* Toolbar and popup menus
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
295
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
296 There are two special menus: ToolBar and PopUp. Items that start with these
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
297 names do not appear in the normal menu bar.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
298
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
299
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
300 TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
301
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
302 The toolbar appears only when the "T" flag is included in the 'guioptions'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
303 option.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
304 The toolbar uses icons rather than text to represent the command. For
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
305 example, the {menu-item} named "ToolBar.New" causes the "New" icon to appear
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
306 on the toolbar.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
307 The Vim editor has 28 built-in icons. You can find a table here:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
308 |builtin-tools|. Most of them are used in the default toolbar. You can
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
309 redefine what these items do (after the default menus are setup).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
310 You can add another bitmap for a toolbar item. Or define a new toolbar
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
311 item with a bitmap. For example, define a new toolbar item with: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
312
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
313 :tmenu ToolBar.Compile Compile the current file
5690
40f18a1c1592 updated for version 7.4.191
Bram Moolenaar <bram@vim.org>
parents: 5294
diff changeset
314 :amenu ToolBar.Compile :!cc %:S -o %:r:S<CR>
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
315
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
316 Now you need to create the icon. For MS-Windows it must be in bitmap format,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
317 with the name "Compile.bmp". For Unix XPM format is used, the file name is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
318 "Compile.xpm". The size must be 18 by 18 pixels. On MS-Windows other sizes
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
319 can be used as well, but it will look ugly.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
320 Put the bitmap in the directory "bitmaps" in one of the directories from
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
321 'runtimepath'. E.g., for Unix "~/.vim/bitmaps/Compile.xpm".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
322
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
323 You can define tooltips for the items in the toolbar. A tooltip is a short
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
324 text that explains what a toolbar item will do. For example "Open file". It
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
325 appears when the mouse pointer is on the item, without moving for a moment.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
326 This is very useful if the meaning of the picture isn't that obvious.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
327 Example: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
328
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
329 :tmenu ToolBar.Make Run make in the current directory
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
330 <
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
331 Note:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
332 Pay attention to the case used. "Toolbar" and "toolbar" are different
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
333 from "ToolBar"!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
334
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
335 To remove a tooltip, use the |:tunmenu| command.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
336
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
337 The 'toolbar' option can be used to display text instead of a bitmap, or both
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
338 text and a bitmap. Most people use just the bitmap, since the text takes
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
339 quite a bit of space.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
340
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
341
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
342 POPUP MENU
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
343
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
344 The popup menu pops up where the mouse pointer is. On MS-Windows you activate
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
345 it by clicking the right mouse button. Then you can select an item with the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
346 left mouse button. On Unix the popup menu is used by pressing and holding the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
347 right mouse button.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
348 The popup menu only appears when the 'mousemodel' has been set to "popup"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
349 or "popup_setpos". The difference between the two is that "popup_setpos"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
350 moves the cursor to the mouse pointer position. When clicking inside a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
351 selection, the selection will be used unmodified. When there is a selection
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
352 but you click outside of it, the selection is removed.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
353 There is a separate popup menu for each mode. Thus there are never grey
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
354 items like in the normal menus.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
355
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
356 What is the meaning of life, the universe and everything? *42*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
357 Douglas Adams, the only person who knew what this question really was about is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
358 now dead, unfortunately. So now you might wonder what the meaning of death
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
359 is...
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
360
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
361 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
362
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
363 Next chapter: |usr_43.txt| Using filetypes
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
364
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
365 Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: