Mercurial > vim
annotate runtime/doc/term.txt @ 4916:ba328b4a990e v7.3.1203
updated for version 7.3.1203
Problem: Matches from matchadd() might be highlighted incorrectly when they
are at a fixed position and inserting lines. (John Szakmeister)
Solution: Redraw all lines below a change if there are highlighted matches.
(idea by Christian Brabandt)
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Sat, 15 Jun 2013 23:00:30 +0200 |
parents | eb6ab7e78925 |
children | 6ec6b7ff2d43 |
rev | line source |
---|---|
4229 | 1 *term.txt* For Vim version 7.3. Last change: 2013 Mar 13 |
7 | 2 |
3 | |
4 VIM REFERENCE MANUAL by Bram Moolenaar | |
5 | |
6 | |
7 Terminal information *terminal-info* | |
8 | |
9 Vim uses information about the terminal you are using to fill the screen and | |
10 recognize what keys you hit. If this information is not correct, the screen | |
11 may be messed up or keys may not be recognized. The actions which have to be | |
12 performed on the screen are accomplished by outputting a string of | |
13 characters. Special keys produce a string of characters. These strings are | |
14 stored in the terminal options, see |terminal-options|. | |
15 | |
16 NOTE: Most of this is not used when running the |GUI|. | |
17 | |
18 1. Startup |startup-terminal| | |
19 2. Terminal options |terminal-options| | |
20 3. Window size |window-size| | |
21 4. Slow and fast terminals |slow-fast-terminal| | |
22 5. Using the mouse |mouse-using| | |
23 | |
24 ============================================================================== | |
25 1. Startup *startup-terminal* | |
26 | |
27 When Vim is started a default terminal type is assumed. For the Amiga this is | |
28 a standard CLI window, for MS-DOS the pc terminal, for Unix an ansi terminal. | |
29 A few other terminal types are always available, see below |builtin-terms|. | |
30 | |
31 You can give the terminal name with the '-T' Vim argument. If it is not given | |
32 Vim will try to get the name from the TERM environment variable. | |
33 | |
34 *termcap* *terminfo* *E557* *E558* *E559* | |
35 On Unix the terminfo database or termcap file is used. This is referred to as | |
36 "termcap" in all the documentation. At compile time, when running configure, | |
37 the choice whether to use terminfo or termcap is done automatically. When | |
38 running Vim the output of ":version" will show |+terminfo| if terminfo is | |
39 used. Also see |xterm-screens|. | |
40 | |
41 On non-Unix systems a termcap is only available if Vim was compiled with | |
42 TERMCAP defined. | |
43 | |
44 *builtin-terms* *builtin_terms* | |
45 Which builtin terminals are available depends on a few defines in feature.h, | |
46 which need to be set at compile time: | |
47 define output of ":version" terminals builtin ~ | |
48 NO_BUILTIN_TCAPS -builtin_terms none | |
49 SOME_BUILTIN_TCAPS +builtin_terms most common ones (default) | |
50 ALL_BUILTIN_TCAPS ++builtin_terms all available | |
51 | |
52 You can see a list of available builtin terminals with ":set term=xxx" (when | |
53 not running the GUI). Also see |+builtin_terms|. | |
54 | |
55 If the termcap code is included Vim will try to get the strings for the | |
56 terminal you are using from the termcap file and the builtin termcaps. Both | |
57 are always used, if an entry for the terminal you are using is present. Which | |
58 one is used first depends on the 'ttybuiltin' option: | |
59 | |
60 'ttybuiltin' on 1: builtin termcap 2: external termcap | |
61 'ttybuiltin' off 1: external termcap 2: builtin termcap | |
62 | |
63 If an option is missing in one of them, it will be obtained from the other | |
64 one. If an option is present in both, the one first encountered is used. | |
65 | |
66 Which external termcap file is used varies from system to system and may | |
67 depend on the environment variables "TERMCAP" and "TERMPATH". See "man | |
68 tgetent". | |
69 | |
70 Settings depending on terminal *term-dependent-settings* | |
71 | |
72 If you want to set options or mappings, depending on the terminal name, you | |
73 can do this best in your .vimrc. Example: > | |
74 | |
75 if &term == "xterm" | |
76 ... xterm maps and settings ... | |
77 elseif &term =~ "vt10." | |
78 ... vt100, vt102 maps and settings ... | |
79 endif | |
80 < | |
81 *raw-terminal-mode* | |
82 For normal editing the terminal will be put into "raw" mode. The strings | |
83 defined with 't_ti' and 't_ks' will be sent to the terminal. Normally this | |
84 puts the terminal in a state where the termcap codes are valid and activates | |
85 the cursor and function keys. When Vim exits the terminal will be put back | |
86 into the mode it was before Vim started. The strings defined with 't_te' and | |
87 't_ke' will be sent to the terminal. On the Amiga, with commands that execute | |
88 an external command (e.g., "!!"), the terminal will be put into Normal mode | |
89 for a moment. This means that you can stop the output to the screen by | |
90 hitting a printing key. Output resumes when you hit <BS>. | |
91 | |
92 *cs7-problem* | |
93 Note: If the terminal settings are changed after running Vim, you might have | |
94 an illegal combination of settings. This has been reported on Solaris 2.5 | |
95 with "stty cs8 parenb", which is restored as "stty cs7 parenb". Use | |
96 "stty cs8 -parenb -istrip" instead, this is restored correctly. | |
97 | |
98 Some termcap entries are wrong in the sense that after sending 't_ks' the | |
99 cursor keys send codes different from the codes defined in the termcap. To | |
100 avoid this you can set 't_ks' (and 't_ke') to empty strings. This must be | |
101 done during initialization (see |initialization|), otherwise it's too late. | |
102 | |
103 Some termcap entries assume that the highest bit is always reset. For | |
104 example: The cursor-up entry for the Amiga could be ":ku=\E[A:". But the | |
105 Amiga really sends "\233A". This works fine if the highest bit is reset, | |
106 e.g., when using an Amiga over a serial line. If the cursor keys don't work, | |
107 try the entry ":ku=\233A:". | |
108 | |
109 Some termcap entries have the entry ":ku=\E[A:". But the Amiga really sends | |
110 "\233A". On output "\E[" and "\233" are often equivalent, on input they | |
111 aren't. You will have to change the termcap entry, or change the key code with | |
112 the :set command to fix this. | |
113 | |
114 Many cursor key codes start with an <Esc>. Vim must find out if this is a | |
115 single hit of the <Esc> key or the start of a cursor key sequence. It waits | |
116 for a next character to arrive. If it does not arrive within one second a | |
117 single <Esc> is assumed. On very slow systems this may fail, causing cursor | |
118 keys not to work sometimes. If you discover this problem reset the 'timeout' | |
119 option. Vim will wait for the next character to arrive after an <Esc>. If | |
120 you want to enter a single <Esc> you must type it twice. Resetting the | |
121 'esckeys' option avoids this problem in Insert mode, but you lose the | |
122 possibility to use cursor and function keys in Insert mode. | |
123 | |
124 On the Amiga the recognition of window resizing is activated only when the | |
125 terminal name is "amiga" or "builtin_amiga". | |
126 | |
127 Some terminals have confusing codes for the cursor keys. The televideo 925 is | |
128 such a terminal. It sends a CTRL-H for cursor-left. This would make it | |
129 impossible to distinguish a backspace and cursor-left. To avoid this problem | |
130 CTRL-H is never recognized as cursor-left. | |
131 | |
132 *vt100-cursor-keys* *xterm-cursor-keys* | |
133 Other terminals (e.g., vt100 and xterm) have cursor keys that send <Esc>OA, | |
134 <Esc>OB, etc. Unfortunately these are valid commands in insert mode: Stop | |
135 insert, Open a new line above the new one, start inserting 'A', 'B', etc. | |
136 Instead of performing these commands Vim will erroneously recognize this typed | |
137 key sequence as a cursor key movement. To avoid this and make Vim do what you | |
138 want in either case you could use these settings: > | |
139 :set notimeout " don't timeout on mappings | |
140 :set ttimeout " do timeout on terminal key codes | |
141 :set timeoutlen=100 " timeout after 100 msec | |
1621 | 142 This requires the key-codes to be sent within 100 msec in order to recognize |
7 | 143 them as a cursor key. When you type you normally are not that fast, so they |
144 are recognized as individual typed commands, even though Vim receives the same | |
145 sequence of bytes. | |
146 | |
147 *vt100-function-keys* *xterm-function-keys* | |
148 An xterm can send function keys F1 to F4 in two modes: vt100 compatible or | |
179 | 149 not. Because Vim may not know what the xterm is sending, both types of keys |
7 | 150 are recognized. The same happens for the <Home> and <End> keys. |
151 normal vt100 ~ | |
152 <F1> t_k1 <Esc>[11~ <xF1> <Esc>OP *<xF1>-xterm* | |
153 <F2> t_k2 <Esc>[12~ <xF2> <Esc>OQ *<xF2>-xterm* | |
154 <F3> t_k3 <Esc>[13~ <xF3> <Esc>OR *<xF3>-xterm* | |
155 <F4> t_k4 <Esc>[14~ <xF4> <Esc>OS *<xF4>-xterm* | |
156 <Home> t_kh <Esc>[7~ <xHome> <Esc>OH *<xHome>-xterm* | |
157 <End> t_@7 <Esc>[4~ <xEnd> <Esc>OF *<xEnd>-xterm* | |
158 | |
159 When Vim starts, <xF1> is mapped to <F1>, <xF2> to <F2> etc. This means that | |
160 by default both codes do the same thing. If you make a mapping for <xF2>, | |
161 because your terminal does have two keys, the default mapping is overwritten, | |
162 thus you can use the <F2> and <xF2> keys for something different. | |
163 | |
164 *xterm-shifted-keys* | |
165 Newer versions of xterm support shifted function keys and special keys. Vim | |
166 recognizes most of them. Use ":set termcap" to check which are supported and | |
167 what the codes are. Mostly these are not in a termcap, they are only | |
168 supported by the builtin_xterm termcap. | |
169 | |
179 | 170 *xterm-modifier-keys* |
171 Newer versions of xterm support Alt and Ctrl for most function keys. To avoid | |
172 having to add all combinations of Alt, Ctrl and Shift for every key a special | |
173 sequence is recognized at the end of a termcap entry: ";*X". The "X" can be | |
174 any character, often '~' is used. The ";*" stands for an optional modifier | |
175 argument. ";2" is Shift, ";3" is Alt, ";5" is Ctrl and ";9" is Meta (when | |
176 it's different from Alt). They can be combined. Examples: > | |
177 :set <F8>=^[[19;*~ | |
178 :set <Home>=^[[1;*H | |
179 Another speciality about these codes is that they are not overwritten by | |
180 another code. That is to avoid that the codes obtained from xterm directly | |
181 |t_RV| overwrite them. | |
7 | 182 *xterm-scroll-region* |
183 The default termcap entry for xterm on Sun and other platforms does not | |
184 contain the entry for scroll regions. Add ":cs=\E[%i%d;%dr:" to the xterm | |
185 entry in /etc/termcap and everything should work. | |
186 | |
187 *xterm-end-home-keys* | |
188 On some systems (at least on FreeBSD with XFree86 3.1.2) the codes that the | |
189 <End> and <Home> keys send contain a <Nul> character. To make these keys send | |
190 the proper key code, add these lines to your ~/.Xdefaults file: | |
191 | |
192 *VT100.Translations: #override \n\ | |
193 <Key>Home: string("0x1b") string("[7~") \n\ | |
194 <Key>End: string("0x1b") string("[8~") | |
195 | |
196 *xterm-8bit* *xterm-8-bit* | |
197 Xterm can be run in a mode where it uses 8-bit escape sequences. The CSI code | |
198 is used instead of <Esc>[. The advantage is that an <Esc> can quickly be | |
199 recognized in Insert mode, because it can't be confused with the start of a | |
200 special key. | |
201 For the builtin termcap entries, Vim checks if the 'term' option contains | |
202 "8bit" anywhere. It then uses 8-bit characters for the termcap entries, the | |
203 mouse and a few other things. You would normally set $TERM in your shell to | |
204 "xterm-8bit" and Vim picks this up and adjusts to the 8-bit setting | |
205 automatically. | |
206 When Vim receives a response to the |t_RV| (request version) sequence and it | |
207 starts with CSI, it assumes that the terminal is in 8-bit mode and will | |
208 convert all key sequences to their 8-bit variants. | |
209 | |
210 ============================================================================== | |
667 | 211 2. Terminal options *terminal-options* *termcap-options* *E436* |
7 | 212 |
213 The terminal options can be set just like normal options. But they are not | |
214 shown with the ":set all" command. Instead use ":set termcap". | |
215 | |
216 It is always possible to change individual strings by setting the | |
217 appropriate option. For example: > | |
218 :set t_ce=^V^[[K (CTRL-V, <Esc>, [, K) | |
219 | |
220 {Vi: no terminal options. You have to exit Vi, edit the termcap entry and | |
221 try again} | |
222 | |
223 The options are listed below. The associated termcap code is always equal to | |
224 the last two characters of the option name. Only one termcap code is | |
225 required: Cursor motion, 't_cm'. | |
226 | |
227 The options 't_da', 't_db', 't_ms', 't_xs' represent flags in the termcap. | |
228 When the termcap flag is present, the option will be set to "y". But any | |
229 non-empty string means that the flag is set. An empty string means that the | |
230 flag is not set. 't_CS' works like this too, but it isn't a termcap flag. | |
231 | |
232 OUTPUT CODES | |
233 option meaning ~ | |
234 | |
235 t_AB set background color (ANSI) *t_AB* *'t_AB'* | |
236 t_AF set foreground color (ANSI) *t_AF* *'t_AF'* | |
237 t_AL add number of blank lines *t_AL* *'t_AL'* | |
238 t_al add new blank line *t_al* *'t_al'* | |
239 t_bc backspace character *t_bc* *'t_bc'* | |
240 t_cd clear to end of screen *t_cd* *'t_cd'* | |
241 t_ce clear to end of line *t_ce* *'t_ce'* | |
242 t_cl clear screen *t_cl* *'t_cl'* | |
243 t_cm cursor motion (required!) *E437* *t_cm* *'t_cm'* | |
244 t_Co number of colors *t_Co* *'t_Co'* | |
245 t_CS if non-empty, cursor relative to scroll region *t_CS* *'t_CS'* | |
246 t_cs define scrolling region *t_cs* *'t_cs'* | |
247 t_CV define vertical scrolling region *t_CV* *'t_CV'* | |
248 t_da if non-empty, lines from above scroll down *t_da* *'t_da'* | |
249 t_db if non-empty, lines from below scroll up *t_db* *'t_db'* | |
250 t_DL delete number of lines *t_DL* *'t_DL'* | |
251 t_dl delete line *t_dl* *'t_dl'* | |
252 t_fs set window title end (from status line) *t_fs* *'t_fs'* | |
253 t_ke exit "keypad transmit" mode *t_ke* *'t_ke'* | |
254 t_ks start "keypad transmit" mode *t_ks* *'t_ks'* | |
255 t_le move cursor one char left *t_le* *'t_le'* | |
256 t_mb blinking mode *t_mb* *'t_mb'* | |
257 t_md bold mode *t_md* *'t_md'* | |
258 t_me Normal mode (undoes t_mr, t_mb, t_md and color) *t_me* *'t_me'* | |
259 t_mr reverse (invert) mode *t_mr* *'t_mr'* | |
260 *t_ms* *'t_ms'* | |
261 t_ms if non-empty, cursor can be moved in standout/inverse mode | |
262 t_nd non destructive space character *t_nd* *'t_nd'* | |
263 t_op reset to original color pair *t_op* *'t_op'* | |
264 t_RI cursor number of chars right *t_RI* *'t_RI'* | |
265 t_Sb set background color *t_Sb* *'t_Sb'* | |
266 t_Sf set foreground color *t_Sf* *'t_Sf'* | |
267 t_se standout end *t_se* *'t_se'* | |
268 t_so standout mode *t_so* *'t_so'* | |
269 t_sr scroll reverse (backward) *t_sr* *'t_sr'* | |
270 t_te out of "termcap" mode *t_te* *'t_te'* | |
271 t_ti put terminal in "termcap" mode *t_ti* *'t_ti'* | |
272 t_ts set window title start (to status line) *t_ts* *'t_ts'* | |
273 t_ue underline end *t_ue* *'t_ue'* | |
274 t_us underline mode *t_us* *'t_us'* | |
204 | 275 t_Ce undercurl end *t_Ce* *'t_Ce'* |
276 t_Cs undercurl mode *t_Cs* *'t_Cs'* | |
7 | 277 t_ut clearing uses the current background color *t_ut* *'t_ut'* |
278 t_vb visual bell *t_vb* *'t_vb'* | |
279 t_ve cursor visible *t_ve* *'t_ve'* | |
280 t_vi cursor invisible *t_vi* *'t_vi'* | |
281 t_vs cursor very visible *t_vs* *'t_vs'* | |
282 *t_xs* *'t_xs'* | |
283 t_xs if non-empty, standout not erased by overwriting (hpterm) | |
284 t_ZH italics mode *t_ZH* *'t_ZH'* | |
285 t_ZR italics end *t_ZR* *'t_ZR'* | |
286 | |
287 Added by Vim (there are no standard codes for these): | |
288 t_IS set icon text start *t_IS* *'t_IS'* | |
289 t_IE set icon text end *t_IE* *'t_IE'* | |
290 t_WP set window position (Y, X) in pixels *t_WP* *'t_WP'* | |
291 t_WS set window size (height, width) in characters *t_WS* *'t_WS'* | |
856 | 292 t_SI start insert mode (bar cursor shape) *t_SI* *'t_SI'* |
293 t_EI end insert mode (block cursor shape) *t_EI* *'t_EI'* | |
500 | 294 |termcap-cursor-shape| |
7 | 295 t_RV request terminal version string (for xterm) *t_RV* *'t_RV'* |
296 |xterm-8bit| |v:termresponse| |'ttymouse'| |xterm-codes| | |
4229 | 297 t_u7 request cursor position (for xterm) *t_u7* *'t_u7'* |
298 see |'ambiwidth'| | |
7 | 299 |
300 KEY CODES | |
301 Note: Use the <> form if possible | |
302 | |
303 option name meaning ~ | |
304 | |
305 t_ku <Up> arrow up *t_ku* *'t_ku'* | |
306 t_kd <Down> arrow down *t_kd* *'t_kd'* | |
307 t_kr <Right> arrow right *t_kr* *'t_kr'* | |
308 t_kl <Left> arrow left *t_kl* *'t_kl'* | |
180 | 309 <xUp> alternate arrow up *<xUp>* |
310 <xDown> alternate arrow down *<xDown>* | |
311 <xRight> alternate arrow right *<xRight>* | |
312 <xLeft> alternate arrow left *<xLeft>* | |
7 | 313 <S-Up> shift arrow up |
314 <S-Down> shift arrow down | |
315 t_%i <S-Right> shift arrow right *t_%i* *'t_%i'* | |
316 t_#4 <S-Left> shift arrow left *t_#4* *'t_#4'* | |
317 t_k1 <F1> function key 1 *t_k1* *'t_k1'* | |
318 <xF1> alternate F1 *<xF1>* | |
319 t_k2 <F2> function key 2 *<F2>* *t_k2* *'t_k2'* | |
320 <xF2> alternate F2 *<xF2>* | |
321 t_k3 <F3> function key 3 *<F3>* *t_k3* *'t_k3'* | |
322 <xF3> alternate F3 *<xF3>* | |
323 t_k4 <F4> function key 4 *<F4>* *t_k4* *'t_k4'* | |
324 <xF4> alternate F4 *<xF4>* | |
325 t_k5 <F5> function key 5 *<F5>* *t_k5* *'t_k5'* | |
326 t_k6 <F6> function key 6 *<F6>* *t_k6* *'t_k6'* | |
327 t_k7 <F7> function key 7 *<F7>* *t_k7* *'t_k7'* | |
328 t_k8 <F8> function key 8 *<F8>* *t_k8* *'t_k8'* | |
329 t_k9 <F9> function key 9 *<F9>* *t_k9* *'t_k9'* | |
330 t_k; <F10> function key 10 *<F10>* *t_k;* *'t_k;'* | |
4437 | 331 t_F1 <F11> function key 11 *<F11>* *t_F1* *'t_F1'* |
7 | 332 t_F2 <F12> function key 12 *<F12>* *t_F2* *'t_F2'* |
333 t_F3 <F13> function key 13 *<F13>* *t_F3* *'t_F3'* | |
334 t_F4 <F14> function key 14 *<F14>* *t_F4* *'t_F4'* | |
335 t_F5 <F15> function key 15 *<F15>* *t_F5* *'t_F5'* | |
336 t_F6 <F16> function key 16 *<F16>* *t_F6* *'t_F6'* | |
337 t_F7 <F17> function key 17 *<F17>* *t_F7* *'t_F7'* | |
338 t_F8 <F18> function key 18 *<F18>* *t_F8* *'t_F8'* | |
339 t_F9 <F19> function key 19 *<F19>* *t_F9* *'t_F9'* | |
340 <S-F1> shifted function key 1 | |
341 <S-xF1> alternate <S-F1> *<S-xF1>* | |
342 <S-F2> shifted function key 2 *<S-F2>* | |
343 <S-xF2> alternate <S-F2> *<S-xF2>* | |
344 <S-F3> shifted function key 3 *<S-F3>* | |
345 <S-xF3> alternate <S-F3> *<S-xF3>* | |
346 <S-F4> shifted function key 4 *<S-F4>* | |
347 <S-xF4> alternate <S-F4> *<S-xF4>* | |
348 <S-F5> shifted function key 5 *<S-F5>* | |
349 <S-F6> shifted function key 6 *<S-F6>* | |
350 <S-F7> shifted function key 7 *<S-F7>* | |
351 <S-F8> shifted function key 8 *<S-F8>* | |
352 <S-F9> shifted function key 9 *<S-F9>* | |
353 <S-F10> shifted function key 10 *<S-F10>* | |
354 <S-F11> shifted function key 11 *<S-F11>* | |
355 <S-F12> shifted function key 12 *<S-F12>* | |
356 t_%1 <Help> help key *t_%1* *'t_%1'* | |
357 t_&8 <Undo> undo key *t_&8* *'t_&8'* | |
358 t_kI <Insert> insert key *t_kI* *'t_kI'* | |
359 t_kD <Del> delete key *t_kD* *'t_kD'* | |
360 t_kb <BS> backspace key *t_kb* *'t_kb'* | |
4437 | 361 t_kB <S-Tab> back-tab (shift-tab) *<S-Tab>* *t_kB* *'t_kB'* |
7 | 362 t_kh <Home> home key *t_kh* *'t_kh'* |
4437 | 363 t_#2 <S-Home> shifted home key *<S-Home>* *t_#2* *'t_#2'* |
7 | 364 <xHome> alternate home key *<xHome>* |
365 t_@7 <End> end key *t_@7* *'t_@7'* | |
366 t_*7 <S-End> shifted end key *<S-End>* *t_star7* *'t_star7'* | |
367 <xEnd> alternate end key *<xEnd>* | |
368 t_kP <PageUp> page-up key *t_kP* *'t_kP'* | |
369 t_kN <PageDown> page-down key *t_kN* *'t_kN'* | |
370 t_K1 <kHome> keypad home key *t_K1* *'t_K1'* | |
371 t_K4 <kEnd> keypad end key *t_K4* *'t_K4'* | |
372 t_K3 <kPageUp> keypad page-up key *t_K3* *'t_K3'* | |
373 t_K5 <kPageDown> keypad page-down key *t_K5* *'t_K5'* | |
374 t_K6 <kPlus> keypad plus key *<kPlus>* *t_K6* *'t_K6'* | |
375 t_K7 <kMinus> keypad minus key *<kMinus>* *t_K7* *'t_K7'* | |
4437 | 376 t_K8 <kDivide> keypad divide *<kDivide>* *t_K8* *'t_K8'* |
377 t_K9 <kMultiply> keypad multiply *<kMultiply>* *t_K9* *'t_K9'* | |
7 | 378 t_KA <kEnter> keypad enter key *<kEnter>* *t_KA* *'t_KA'* |
379 t_KB <kPoint> keypad decimal point *<kPoint>* *t_KB* *'t_KB'* | |
380 t_KC <k0> keypad 0 *<k0>* *t_KC* *'t_KC'* | |
381 t_KD <k1> keypad 1 *<k1>* *t_KD* *'t_KD'* | |
382 t_KE <k2> keypad 2 *<k2>* *t_KE* *'t_KE'* | |
383 t_KF <k3> keypad 3 *<k3>* *t_KF* *'t_KF'* | |
384 t_KG <k4> keypad 4 *<k4>* *t_KG* *'t_KG'* | |
385 t_KH <k5> keypad 5 *<k5>* *t_KH* *'t_KH'* | |
386 t_KI <k6> keypad 6 *<k6>* *t_KI* *'t_KI'* | |
387 t_KJ <k7> keypad 7 *<k7>* *t_KJ* *'t_KJ'* | |
388 t_KK <k8> keypad 8 *<k8>* *t_KK* *'t_KK'* | |
389 t_KL <k9> keypad 9 *<k9>* *t_KL* *'t_KL'* | |
390 <Mouse> leader of mouse code *<Mouse>* | |
391 | |
392 Note about t_so and t_mr: When the termcap entry "so" is not present the | |
393 entry for "mr" is used. And vice versa. The same is done for "se" and "me". | |
394 If your terminal supports both inversion and standout mode, you can see two | |
395 different modes. If your terminal supports only one of the modes, both will | |
396 look the same. | |
397 | |
33 | 398 *keypad-comma* |
7 | 399 The keypad keys, when they are not mapped, behave like the equivalent normal |
33 | 400 key. There is one exception: if you have a comma on the keypad instead of a |
401 decimal point, Vim will use a dot anyway. Use these mappings to fix that: > | |
402 :noremap <kPoint> , | |
403 :noremap! <kPoint> , | |
404 < *xterm-codes* | |
7 | 405 There is a special trick to obtain the key codes which currently only works |
406 for xterm. When |t_RV| is defined and a response is received which indicates | |
407 an xterm with patchlevel 141 or higher, Vim uses special escape sequences to | |
408 request the key codes directly from the xterm. The responses are used to | |
409 adjust the various t_ codes. This avoids the problem that the xterm can | |
410 produce different codes, depending on the mode it is in (8-bit, VT102, | |
411 VT220, etc.). The result is that codes like <xF1> are no longer needed. | |
412 Note: This is only done on startup. If the xterm options are changed after | |
413 Vim has started, the escape sequences may not be recognized any more. | |
414 | |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
415 *xterm-resize* |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
416 Window resizing with xterm only works if the allowWindowOps resource is |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
417 enabled. On some systems and versions of xterm it's disabled by default |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
418 because someone thought it would be a security issue. It's not clear if this |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
419 is actually the case. |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
420 |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
421 To overrule the default, put this line in your ~/.Xdefaults or |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
422 ~/.Xresources: |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
423 > |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
424 XTerm*allowWindowOps: true |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
425 |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
426 And run "xrdb -merge .Xresources" to make it effective. You can check the |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
427 value with the context menu (right mouse button while CTRL key is pressed), |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
428 there should be a tick at allow-window-ops. |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
429 |
7 | 430 *termcap-colors* |
431 Note about colors: The 't_Co' option tells Vim the number of colors available. | |
432 When it is non-zero, the 't_AB' and 't_AF' options are used to set the color. | |
433 If one of these is not available, 't_Sb' and 't_Sf' are used. 't_me' is used | |
434 to reset to the default colors. | |
435 | |
36 | 436 *termcap-cursor-shape* *termcap-cursor-color* |
437 When Vim enters Insert mode the 't_SI' escape sequence is sent. When leaving | |
438 Insert mode 't_EI' is used. But only if both are defined. This can be used | |
439 to change the shape or color of the cursor in Insert mode. These are not | |
440 standard termcap/terminfo entries, you need to set them yourself. | |
441 Example for an xterm, this changes the color of the cursor: > | |
442 if &term =~ "xterm" | |
443 let &t_SI = "\<Esc>]12;purple\x7" | |
444 let &t_EI = "\<Esc>]12;blue\x7" | |
445 endif | |
446 NOTE: When Vim exits the shape for Normal mode will remain. The shape from | |
447 before Vim started will not be restored. | |
2570
71b56b4e7785
Make the references to features in the help more consistent. (Sylvain Hitier)
Bram Moolenaar <bram@vim.org>
parents:
2561
diff
changeset
|
448 {not available when compiled without the |+cursorshape| feature} |
36 | 449 |
7 | 450 *termcap-title* |
451 The 't_ts' and 't_fs' options are used to set the window title if the terminal | |
452 allows title setting via sending strings. They are sent before and after the | |
453 title string, respectively. Similar 't_IS' and 't_IE' are used to set the | |
454 icon text. These are Vim-internal extensions of the Unix termcap, so they | |
455 cannot be obtained from an external termcap. However, the builtin termcap | |
456 contains suitable entries for xterm and iris-ansi, so you don't need to set | |
457 them here. | |
458 *hpterm* | |
459 If inversion or other highlighting does not work correctly, try setting the | |
460 't_xs' option to a non-empty string. This makes the 't_ce' code be used to | |
461 remove highlighting from a line. This is required for "hpterm". Setting the | |
462 'weirdinvert' option has the same effect as making 't_xs' non-empty, and vice | |
463 versa. | |
464 | |
465 *scroll-region* | |
466 Some termcaps do not include an entry for 'cs' (scroll region), although the | |
467 terminal does support it. For example: xterm on a Sun. You can use the | |
468 builtin_xterm or define t_cs yourself. For example: > | |
469 :set t_cs=^V^[[%i%d;%dr | |
470 Where ^V is CTRL-V and ^[ is <Esc>. | |
471 | |
472 The vertical scroll region t_CV is not a standard termcap code. Vim uses it | |
473 internally in the GUI. But it can also be defined for a terminal, if you can | |
474 find one that supports it. The two arguments are the left and right column of | |
475 the region which to restrict the scrolling to. Just like t_cs defines the top | |
476 and bottom lines. Defining t_CV will make scrolling in vertically split | |
477 windows a lot faster. Don't set t_CV when t_da or t_db is set (text isn't | |
478 cleared when scrolling). | |
479 | |
480 Unfortunately it is not possible to deduce from the termcap how cursor | |
481 positioning should be done when using a scrolling region: Relative to the | |
482 beginning of the screen or relative to the beginning of the scrolling region. | |
483 Most terminals use the first method. A known exception is the MS-DOS console | |
484 (pcterm). The 't_CS' option should be set to any string when cursor | |
485 positioning is relative to the start of the scrolling region. It should be | |
486 set to an empty string otherwise. It defaults to "yes" when 'term' is | |
487 "pcterm". | |
488 | |
489 Note for xterm users: The shifted cursor keys normally don't work. You can | |
490 make them work with the xmodmap command and some mappings in Vim. | |
491 | |
492 Give these commands in the xterm: | |
493 xmodmap -e "keysym Up = Up F13" | |
494 xmodmap -e "keysym Down = Down F16" | |
495 xmodmap -e "keysym Left = Left F18" | |
496 xmodmap -e "keysym Right = Right F19" | |
497 | |
498 And use these mappings in Vim: | |
499 :map <t_F3> <S-Up> | |
500 :map! <t_F3> <S-Up> | |
501 :map <t_F6> <S-Down> | |
502 :map! <t_F6> <S-Down> | |
503 :map <t_F8> <S-Left> | |
504 :map! <t_F8> <S-Left> | |
505 :map <t_F9> <S-Right> | |
506 :map! <t_F9> <S-Right> | |
507 | |
508 Instead of, say, <S-Up> you can use any other command that you want to use the | |
509 shift-cursor-up key for. (Note: To help people that have a Sun keyboard with | |
510 left side keys F14 is not used because it is confused with the undo key; F15 | |
511 is not used, because it does a window-to-front; F17 is not used, because it | |
512 closes the window. On other systems you can probably use them.) | |
513 | |
514 ============================================================================== | |
515 3. Window size *window-size* | |
516 | |
517 [This is about the size of the whole window Vim is using, not a window that is | |
518 created with the ":split" command.] | |
519 | |
520 If you are running Vim on an Amiga and the terminal name is "amiga" or | |
521 "builtin_amiga", the amiga-specific window resizing will be enabled. On Unix | |
522 systems three methods are tried to get the window size: | |
523 | |
524 - an ioctl call (TIOCGSIZE or TIOCGWINSZ, depends on your system) | |
525 - the environment variables "LINES" and "COLUMNS" | |
526 - from the termcap entries "li" and "co" | |
527 | |
528 If everything fails a default size of 24 lines and 80 columns is assumed. If | |
529 a window-resize signal is received the size will be set again. If the window | |
530 size is wrong you can use the 'lines' and 'columns' options to set the | |
531 correct values. | |
532 | |
533 One command can be used to set the screen size: | |
534 | |
535 *:mod* *:mode* *E359* *E362* | |
536 :mod[e] [mode] | |
537 | |
538 Without argument this only detects the screen size and redraws the screen. | |
539 With MS-DOS it is possible to switch screen mode. [mode] can be one of these | |
540 values: | |
541 "bw40" 40 columns black&white | |
542 "c40" 40 columns color | |
543 "bw80" 80 columns black&white | |
544 "c80" 80 columns color (most people use this) | |
545 "mono" 80 columns monochrome | |
546 "c4350" 43 or 50 lines EGA/VGA mode | |
547 number mode number to use, depends on your video card | |
548 | |
549 ============================================================================== | |
550 4. Slow and fast terminals *slow-fast-terminal* | |
551 *slow-terminal* | |
552 | |
553 If you have a fast terminal you may like to set the 'ruler' option. The | |
554 cursor position is shown in the status line. If you are using horizontal | |
555 scrolling ('wrap' option off) consider setting 'sidescroll' to a small | |
556 number. | |
557 | |
558 If you have a slow terminal you may want to reset the 'showcmd' option. | |
559 The command characters will not be shown in the status line. If the terminal | |
560 scrolls very slowly, set the 'scrolljump' to 5 or so. If the cursor is moved | |
561 off the screen (e.g., with "j") Vim will scroll 5 lines at a time. Another | |
562 possibility is to reduce the number of lines that Vim uses with the command | |
563 "z{height}<CR>". | |
564 | |
565 If the characters from the terminal are arriving with more than 1 second | |
566 between them you might want to set the 'timeout' and/or 'ttimeout' option. | |
567 See the "Options" chapter |options|. | |
568 | |
569 If your terminal does not support a scrolling region, but it does support | |
570 insert/delete line commands, scrolling with multiple windows may make the | |
571 lines jump up and down. If you don't want this set the 'ttyfast' option. | |
572 This will redraw the window instead of scroll it. | |
573 | |
574 If your terminal scrolls very slowly, but redrawing is not slow, set the | |
575 'ttyscroll' option to a small number, e.g., 3. This will make Vim redraw the | |
576 screen instead of scrolling, when there are more than 3 lines to be scrolled. | |
577 | |
578 If you are using a color terminal that is slow, use this command: > | |
579 hi NonText cterm=NONE ctermfg=NONE | |
580 This avoids that spaces are sent when they have different attributes. On most | |
581 terminals you can't see this anyway. | |
582 | |
583 If you are using Vim over a slow serial line, you might want to try running | |
584 Vim inside the "screen" program. Screen will optimize the terminal I/O quite | |
585 a bit. | |
586 | |
587 If you are testing termcap options, but you cannot see what is happening, | |
588 you might want to set the 'writedelay' option. When non-zero, one character | |
589 is sent to the terminal at a time (does not work for MS-DOS). This makes the | |
590 screen updating a lot slower, making it possible to see what is happening. | |
591 | |
592 ============================================================================== | |
593 5. Using the mouse *mouse-using* | |
594 | |
595 This section is about using the mouse on a terminal or a terminal window. How | |
596 to use the mouse in a GUI window is explained in |gui-mouse|. For scrolling | |
597 with a mouse wheel see |scroll-mouse-wheel|. | |
598 | |
2207
b17bbfa96fa0
Add the settabvar() and gettabvar() functions.
Bram Moolenaar <bram@vim.org>
parents:
2154
diff
changeset
|
599 Don't forget to enable the mouse with this command: > |
7 | 600 :set mouse=a |
601 Otherwise Vim won't recognize the mouse in all modes (See 'mouse'). | |
602 | |
1621 | 603 Currently the mouse is supported for Unix in an xterm window, in a *BSD |
604 console with |sysmouse|, in a Linux console (with GPM |gpm-mouse|), for | |
605 MS-DOS and in a Windows console. | |
7 | 606 Mouse clicks can be used to position the cursor, select an area and paste. |
607 | |
608 These characters in the 'mouse' option tell in which situations the mouse will | |
609 be used by Vim: | |
610 n Normal mode | |
611 v Visual mode | |
612 i Insert mode | |
613 c Command-line mode | |
614 h all previous modes when in a help file | |
615 a all previous modes | |
616 r for |hit-enter| prompt | |
617 | |
618 The default for 'mouse' is empty, the mouse is not used. Normally you would | |
619 do: > | |
620 :set mouse=a | |
621 to start using the mouse (this is equivalent to setting 'mouse' to "nvich"). | |
622 If you only want to use the mouse in a few modes or also want to use it for | |
623 the two questions you will have to concatenate the letters for those modes. | |
624 For example: > | |
625 :set mouse=nv | |
626 Will make the mouse work in Normal mode and Visual mode. > | |
627 :set mouse=h | |
628 Will make the mouse work in help files only (so you can use "g<LeftMouse>" to | |
629 jump to tags). | |
630 | |
631 Whether the selection that is started with the mouse is in Visual mode or | |
632 Select mode depends on whether "mouse" is included in the 'selectmode' | |
633 option. | |
634 | |
635 In an xterm, with the currently active mode included in the 'mouse' option, | |
636 normal mouse clicks are used by Vim, mouse clicks with the shift or ctrl key | |
637 pressed go to the xterm. With the currently active mode not included in | |
638 'mouse' all mouse clicks go to the xterm. | |
639 | |
640 *xterm-clipboard* | |
641 In the Athena and Motif GUI versions, when running in a terminal and there is | |
642 access to the X-server (DISPLAY is set), the copy and paste will behave like | |
643 in the GUI. If not, the middle mouse button will insert the unnamed register. | |
644 In that case, here is how you copy and paste a piece of text: | |
645 | |
646 Copy/paste with the mouse and Visual mode ('mouse' option must be set, see | |
647 above): | |
648 1. Press left mouse button on first letter of text, move mouse pointer to last | |
649 letter of the text and release the button. This will start Visual mode and | |
650 highlight the selected area. | |
651 2. Press "y" to yank the Visual text in the unnamed register. | |
652 3. Click the left mouse button at the insert position. | |
653 4. Click the middle mouse button. | |
654 | |
655 Shortcut: If the insert position is on the screen at the same time as the | |
656 Visual text, you can do 2, 3 and 4 all in one: Click the middle mouse button | |
657 at the insert position. | |
658 | |
659 Note: When the |-X| command line argument is used, Vim will not connect to the | |
660 X server and copy/paste to the X clipboard (selection) will not work. Use the | |
661 shift key with the mouse buttons to let the xterm do the selection. | |
662 | |
663 *xterm-command-server* | |
664 When the X-server clipboard is available, the command server described in | |
665 |x11-clientserver| can be enabled with the --servername command line argument. | |
666 | |
667 *xterm-copy-paste* | |
668 NOTE: In some (older) xterms, it's not possible to move the cursor past column | |
669 95. This is an xterm problem, not Vim's. Get a newer xterm |color-xterm|. | |
2709 | 670 Now the limit is 223 columns. |
7 | 671 |
672 Copy/paste in xterm with (current mode NOT included in 'mouse'): | |
673 1. Press left mouse button on first letter of text, move mouse pointer to last | |
674 letter of the text and release the button. | |
675 2. Use normal Vim commands to put the cursor at the insert position. | |
676 3. Press "a" to start Insert mode. | |
677 4. Click the middle mouse button. | |
678 5. Press ESC to end Insert mode. | |
679 (The same can be done with anything in 'mouse' if you keep the shift key | |
680 pressed while using the mouse.) | |
681 | |
682 Note: if you lose the 8th bit when pasting (special characters are translated | |
683 into other characters), you may have to do "stty cs8 -istrip -parenb" in your | |
684 shell before starting Vim. | |
685 | |
686 Thus in an xterm the shift and ctrl keys cannot be used with the mouse. Mouse | |
687 commands requiring the CTRL modifier can be simulated by typing the "g" key | |
688 before using the mouse: | |
689 "g<LeftMouse>" is "<C-LeftMouse> (jump to tag under mouse click) | |
690 "g<RightMouse>" is "<C-RightMouse> ("CTRL-T") | |
691 | |
692 *mouse-mode-table* *mouse-overview* | |
693 A short overview of what the mouse buttons do, when 'mousemodel' is "extend": | |
694 | |
695 Normal Mode: | |
696 event position selection change action ~ | |
697 cursor window ~ | |
698 <LeftMouse> yes end yes | |
699 <C-LeftMouse> yes end yes "CTRL-]" (2) | |
700 <S-LeftMouse> yes no change yes "*" (2) *<S-LeftMouse>* | |
701 <LeftDrag> yes start or extend (1) no *<LeftDrag>* | |
702 <LeftRelease> yes start or extend (1) no | |
703 <MiddleMouse> yes if not active no put | |
704 <MiddleMouse> yes if active no yank and put | |
705 <RightMouse> yes start or extend yes | |
600 | 706 <A-RightMouse> yes start or extend blockw. yes *<A-RightMouse>* |
7 | 707 <S-RightMouse> yes no change yes "#" (2) *<S-RightMouse>* |
708 <C-RightMouse> no no change no "CTRL-T" | |
709 <RightDrag> yes extend no *<RightDrag>* | |
710 <RightRelease> yes extend no *<RightRelease>* | |
711 | |
712 Insert or Replace Mode: | |
713 event position selection change action ~ | |
714 cursor window ~ | |
715 <LeftMouse> yes (cannot be active) yes | |
716 <C-LeftMouse> yes (cannot be active) yes "CTRL-O^]" (2) | |
717 <S-LeftMouse> yes (cannot be active) yes "CTRL-O*" (2) | |
718 <LeftDrag> yes start or extend (1) no like CTRL-O (1) | |
719 <LeftRelease> yes start or extend (1) no like CTRL-O (1) | |
720 <MiddleMouse> no (cannot be active) no put register | |
721 <RightMouse> yes start or extend yes like CTRL-O | |
600 | 722 <A-RightMouse> yes start or extend blockw. yes |
7 | 723 <S-RightMouse> yes (cannot be active) yes "CTRL-O#" (2) |
724 <C-RightMouse> no (cannot be active) no "CTRL-O CTRL-T" | |
725 | |
726 In a help window: | |
727 event position selection change action ~ | |
728 cursor window ~ | |
729 <2-LeftMouse> yes (cannot be active) no "^]" (jump to help tag) | |
730 | |
731 When 'mousemodel' is "popup", these are different: | |
732 | |
733 Normal Mode: | |
734 event position selection change action ~ | |
735 cursor window ~ | |
736 <S-LeftMouse> yes start or extend (1) no | |
600 | 737 <A-LeftMouse> yes start or extend blockw. no *<A-LeftMouse>* |
7 | 738 <RightMouse> no popup menu no |
739 | |
740 Insert or Replace Mode: | |
741 event position selection change action ~ | |
742 cursor window ~ | |
743 <S-LeftMouse> yes start or extend (1) no like CTRL-O (1) | |
600 | 744 <A-LeftMouse> yes start or extend blockw. no |
7 | 745 <RightMouse> no popup menu no |
746 | |
747 (1) only if mouse pointer moved since press | |
748 (2) only if click is in same buffer | |
749 | |
750 Clicking the left mouse button causes the cursor to be positioned. If the | |
751 click is in another window that window is made the active window. When | |
752 editing the command-line the cursor can only be positioned on the | |
753 command-line. When in Insert mode Vim remains in Insert mode. If 'scrolloff' | |
754 is set, and the cursor is positioned within 'scrolloff' lines from the window | |
755 border, the text is scrolled. | |
756 | |
757 A selection can be started by pressing the left mouse button on the first | |
758 character, moving the mouse to the last character, then releasing the mouse | |
759 button. You will not always see the selection until you release the button, | |
760 only in some versions (GUI, MS-DOS, WIN32) will the dragging be shown | |
761 immediately. Note that you can make the text scroll by moving the mouse at | |
762 least one character in the first/last line in the window when 'scrolloff' is | |
763 non-zero. | |
764 | |
765 In Normal, Visual and Select mode clicking the right mouse button causes the | |
766 Visual area to be extended. When 'mousemodel' is "popup", the left button has | |
767 to be used while keeping the shift key pressed. When clicking in a window | |
768 which is editing another buffer, the Visual or Select mode is stopped. | |
769 | |
600 | 770 In Normal, Visual and Select mode clicking the right mouse button with the alt |
1121 | 771 key pressed causes the Visual area to become blockwise. When 'mousemodel' is |
600 | 772 "popup" the left button has to be used with the alt key. Note that this won't |
853 | 773 work on systems where the window manager consumes the mouse events when the |
774 alt key is pressed (it may move the window). | |
600 | 775 |
7 | 776 *double-click* |
777 Double, triple and quadruple clicks are supported when the GUI is active, | |
778 for MS-DOS and Win32, and for an xterm (if the gettimeofday() function is | |
779 available). For selecting text, extra clicks extend the selection: | |
780 click select ~ | |
781 double word or % match *<2-LeftMouse>* | |
782 triple line *<3-LeftMouse>* | |
783 quadruple rectangular block *<4-LeftMouse>* | |
784 Exception: In a Help window a double click jumps to help for the word that is | |
785 clicked on. | |
786 A double click on a word selects that word. 'iskeyword' is used to specify | |
787 which characters are included in a word. A double click on a character | |
788 that has a match selects until that match (like using "v%"). If the match is | |
789 an #if/#else/#endif block, the selection becomes linewise. | |
790 For MS-DOS and xterm the time for double clicking can be set with the | |
791 'mousetime' option. For the other systems this time is defined outside of | |
792 Vim. | |
793 An example, for using a double click to jump to the tag under the cursor: > | |
794 :map <2-LeftMouse> :exe "tag ". expand("<cword>")<CR> | |
795 | |
796 Dragging the mouse with a double click (button-down, button-up, button-down | |
797 and then drag) will result in whole words to be selected. This continues | |
798 until the button is released, at which point the selection is per character | |
799 again. | |
800 | |
801 *gpm-mouse* | |
802 The GPM mouse is only supported when the |+mouse_gpm| feature was enabled at | |
803 compile time. The GPM mouse driver (Linux console) does not support quadruple | |
804 clicks. | |
805 | |
806 In Insert mode, when a selection is started, Vim goes into Normal mode | |
807 temporarily. When Visual or Select mode ends, it returns to Insert mode. | |
808 This is like using CTRL-O in Insert mode. Select mode is used when the | |
809 'selectmode' option contains "mouse". | |
1621 | 810 *sysmouse* |
811 The sysmouse is only supported when the |+mouse_sysmouse| feature was enabled | |
812 at compile time. The sysmouse driver (*BSD console) does not support keyboard | |
813 modifiers. | |
7 | 814 |
815 *drag-status-line* | |
816 When working with several windows, the size of the windows can be changed by | |
817 dragging the status line with the mouse. Point the mouse at a status line, | |
818 press the left button, move the mouse to the new position of the status line, | |
819 release the button. Just clicking the mouse in a status line makes that window | |
820 the current window, without moving the cursor. If by selecting a window it | |
821 will change position or size, the dragging of the status line will look | |
822 confusing, but it will work (just try it). | |
823 | |
824 *<MiddleRelease>* *<MiddleDrag>* | |
825 Mouse clicks can be mapped. The codes for mouse clicks are: | |
826 code mouse button normal action ~ | |
827 <LeftMouse> left pressed set cursor position | |
828 <LeftDrag> left moved while pressed extend selection | |
829 <LeftRelease> left released set selection end | |
830 <MiddleMouse> middle pressed paste text at cursor position | |
831 <MiddleDrag> middle moved while pressed - | |
832 <MiddleRelease> middle released - | |
833 <RightMouse> right pressed extend selection | |
834 <RightDrag> right moved while pressed extend selection | |
835 <RightRelease> right released set selection end | |
836 <X1Mouse> X1 button pressed - *X1Mouse* | |
837 <X1Drag> X1 moved while pressed - *X1Drag* | |
838 <X1Release> X1 button release - *X1Release* | |
839 <X2Mouse> X2 button pressed - *X2Mouse* | |
840 <X2Drag> X2 moved while pressed - *X2Drag* | |
841 <X2Release> X2 button release - *X2Release* | |
842 | |
843 The X1 and X2 buttons refer to the extra buttons found on some mice. The | |
844 'Microsoft Explorer' mouse has these buttons available to the right thumb. | |
845 Currently X1 and X2 only work on Win32 environments. | |
846 | |
847 Examples: > | |
848 :noremap <MiddleMouse> <LeftMouse><MiddleMouse> | |
849 Paste at the position of the middle mouse button click (otherwise the paste | |
850 would be done at the cursor position). > | |
851 | |
852 :noremap <LeftRelease> <LeftRelease>y | |
853 Immediately yank the selection, when using Visual mode. | |
854 | |
855 Note the use of ":noremap" instead of "map" to avoid a recursive mapping. | |
856 > | |
857 :map <X1Mouse> <C-O> | |
858 :map <X2Mouse> <C-I> | |
859 Map the X1 and X2 buttons to go forwards and backwards in the jump list, see | |
860 |CTRL-O| and |CTRL-I|. | |
861 | |
862 *mouse-swap-buttons* | |
863 To swap the meaning of the left and right mouse buttons: > | |
864 :noremap <LeftMouse> <RightMouse> | |
865 :noremap <LeftDrag> <RightDrag> | |
866 :noremap <LeftRelease> <RightRelease> | |
867 :noremap <RightMouse> <LeftMouse> | |
868 :noremap <RightDrag> <LeftDrag> | |
869 :noremap <RightRelease> <LeftRelease> | |
870 :noremap g<LeftMouse> <C-RightMouse> | |
871 :noremap g<RightMouse> <C-LeftMouse> | |
872 :noremap! <LeftMouse> <RightMouse> | |
873 :noremap! <LeftDrag> <RightDrag> | |
874 :noremap! <LeftRelease> <RightRelease> | |
875 :noremap! <RightMouse> <LeftMouse> | |
876 :noremap! <RightDrag> <LeftDrag> | |
877 :noremap! <RightRelease> <LeftRelease> | |
878 < | |
879 vim:tw=78:ts=8:ft=help:norl: |