Mercurial > vim
annotate runtime/doc/term.txt @ 33899:a9ccbadecda1 v9.0.2155
patch 9.0.2155: Vim9: type not kept when assigning vars
Commit: https://github.com/vim/vim/commit/d33518522a84b5625e663c1b608e1c68f9f58003
Author: Yegappan Lakshmanan <yegappan@yahoo.com>
Date: Fri Dec 8 21:41:23 2023 +0100
patch 9.0.2155: Vim9: type not kept when assigning vars
Problem: Vim9: type not kept when assigning vars
Solution: When assigning a List or a Dict value to a variable of type
'any', keep the type
closes: #13639
closes: #13646
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 10 Dec 2023 15:16:34 +0100 |
parents | af1b18018eeb |
children | 8c4c6369239b |
rev | line source |
---|---|
33798
af1b18018eeb
runtime(doc): Fix whitespace and formatting of some help files (#13549)
Christian Brabandt <cb@256bit.org>
parents:
33715
diff
changeset
|
1 *term.txt* For Vim version 9.0. Last change: 2023 Nov 20 |
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 | |
18972 | 28 a standard CLI window, for MS-Windows the pc terminal, for Unix an ansi |
29 terminal. A few other terminal types are always available, see below | |
30 |builtin-terms|. | |
7 | 31 |
32 You can give the terminal name with the '-T' Vim argument. If it is not given | |
33 Vim will try to get the name from the TERM environment variable. | |
34 | |
35 *termcap* *terminfo* *E557* *E558* *E559* | |
36 On Unix the terminfo database or termcap file is used. This is referred to as | |
37 "termcap" in all the documentation. At compile time, when running configure, | |
38 the choice whether to use terminfo or termcap is done automatically. When | |
39 running Vim the output of ":version" will show |+terminfo| if terminfo is | |
40 used. Also see |xterm-screens|. | |
41 | |
42 On non-Unix systems a termcap is only available if Vim was compiled with | |
43 TERMCAP defined. | |
44 | |
45 *builtin-terms* *builtin_terms* | |
29883
1342ee83ab97
patch 9.0.0280: the builtin termcap list depends on the version
Bram Moolenaar <Bram@vim.org>
parents:
29403
diff
changeset
|
46 A number of builtin terminals are available. Since patch 9.0.0280 there is no |
1342ee83ab97
patch 9.0.0280: the builtin termcap list depends on the version
Bram Moolenaar <Bram@vim.org>
parents:
29403
diff
changeset
|
47 difference between Vim versions. You can see a list of available builtin |
1342ee83ab97
patch 9.0.0280: the builtin termcap list depends on the version
Bram Moolenaar <Bram@vim.org>
parents:
29403
diff
changeset
|
48 terminals in the error message you get for `:set term=xxx` (when not running |
29885 | 49 the GUI). Also see |++builtin_terms|. |
7 | 50 |
51 If the termcap code is included Vim will try to get the strings for the | |
52 terminal you are using from the termcap file and the builtin termcaps. Both | |
53 are always used, if an entry for the terminal you are using is present. Which | |
54 one is used first depends on the 'ttybuiltin' option: | |
55 | |
56 'ttybuiltin' on 1: builtin termcap 2: external termcap | |
57 'ttybuiltin' off 1: external termcap 2: builtin termcap | |
58 | |
59 If an option is missing in one of them, it will be obtained from the other | |
60 one. If an option is present in both, the one first encountered is used. | |
61 | |
62 Which external termcap file is used varies from system to system and may | |
63 depend on the environment variables "TERMCAP" and "TERMPATH". See "man | |
64 tgetent". | |
65 | |
66 Settings depending on terminal *term-dependent-settings* | |
67 | |
68 If you want to set options or mappings, depending on the terminal name, you | |
69 can do this best in your .vimrc. Example: > | |
70 | |
71 if &term == "xterm" | |
72 ... xterm maps and settings ... | |
73 elseif &term =~ "vt10." | |
74 ... vt100, vt102 maps and settings ... | |
75 endif | |
76 < | |
77 *raw-terminal-mode* | |
78 For normal editing the terminal will be put into "raw" mode. The strings | |
18299
a9cf41bcb5d6
patch 8.1.2144: side effects when using t_ti to enable modifyOtherKeys
Bram Moolenaar <Bram@vim.org>
parents:
16610
diff
changeset
|
79 defined with 't_ti', 't_TI' and 't_ks' will be sent to the terminal. Normally |
a9cf41bcb5d6
patch 8.1.2144: side effects when using t_ti to enable modifyOtherKeys
Bram Moolenaar <Bram@vim.org>
parents:
16610
diff
changeset
|
80 this puts the terminal in a state where the termcap codes are valid and |
a9cf41bcb5d6
patch 8.1.2144: side effects when using t_ti to enable modifyOtherKeys
Bram Moolenaar <Bram@vim.org>
parents:
16610
diff
changeset
|
81 activates the cursor and function keys. |
a9cf41bcb5d6
patch 8.1.2144: side effects when using t_ti to enable modifyOtherKeys
Bram Moolenaar <Bram@vim.org>
parents:
16610
diff
changeset
|
82 When Vim exits the terminal will be put back into the mode it was before Vim |
a9cf41bcb5d6
patch 8.1.2144: side effects when using t_ti to enable modifyOtherKeys
Bram Moolenaar <Bram@vim.org>
parents:
16610
diff
changeset
|
83 started. The strings defined with 't_te', 't_TE' and 't_ke' will be sent to |
a9cf41bcb5d6
patch 8.1.2144: side effects when using t_ti to enable modifyOtherKeys
Bram Moolenaar <Bram@vim.org>
parents:
16610
diff
changeset
|
84 the terminal. On the Amiga, with commands that execute an external command |
a9cf41bcb5d6
patch 8.1.2144: side effects when using t_ti to enable modifyOtherKeys
Bram Moolenaar <Bram@vim.org>
parents:
16610
diff
changeset
|
85 (e.g., "!!"), the terminal will be put into Normal mode for a moment. This |
a9cf41bcb5d6
patch 8.1.2144: side effects when using t_ti to enable modifyOtherKeys
Bram Moolenaar <Bram@vim.org>
parents:
16610
diff
changeset
|
86 means that you can stop the output to the screen by hitting a printing key. |
a9cf41bcb5d6
patch 8.1.2144: side effects when using t_ti to enable modifyOtherKeys
Bram Moolenaar <Bram@vim.org>
parents:
16610
diff
changeset
|
87 Output resumes when you hit <BS>. |
a9cf41bcb5d6
patch 8.1.2144: side effects when using t_ti to enable modifyOtherKeys
Bram Moolenaar <Bram@vim.org>
parents:
16610
diff
changeset
|
88 |
a9cf41bcb5d6
patch 8.1.2144: side effects when using t_ti to enable modifyOtherKeys
Bram Moolenaar <Bram@vim.org>
parents:
16610
diff
changeset
|
89 Note: When 't_ti' is not empty, Vim assumes that it causes switching to the |
a9cf41bcb5d6
patch 8.1.2144: side effects when using t_ti to enable modifyOtherKeys
Bram Moolenaar <Bram@vim.org>
parents:
16610
diff
changeset
|
90 alternate screen. This may slightly change what happens when executing a |
31579 | 91 shell command or exiting Vim. To avoid this use 't_TI' and 't_TE' (but make |
92 sure to add to them, not overwrite). | |
7 | 93 |
31293
ff4473b3fc58
patch 9.0.0980: the keyboard state response may end up in a shell command
Bram Moolenaar <Bram@vim.org>
parents:
31229
diff
changeset
|
94 Vim will try to detect what keyboard protocol the terminal is using with the |
ff4473b3fc58
patch 9.0.0980: the keyboard state response may end up in a shell command
Bram Moolenaar <Bram@vim.org>
parents:
31229
diff
changeset
|
95 't_RK' termcap entry. This is sent after 't_TI', but only when there is no |
ff4473b3fc58
patch 9.0.0980: the keyboard state response may end up in a shell command
Bram Moolenaar <Bram@vim.org>
parents:
31229
diff
changeset
|
96 work to do (no typeahead and no pending commands). That is to avoid the |
ff4473b3fc58
patch 9.0.0980: the keyboard state response may end up in a shell command
Bram Moolenaar <Bram@vim.org>
parents:
31229
diff
changeset
|
97 response to end up in a shell command or arrive after Vim exits. |
ff4473b3fc58
patch 9.0.0980: the keyboard state response may end up in a shell command
Bram Moolenaar <Bram@vim.org>
parents:
31229
diff
changeset
|
98 |
10640
27be410d6d29
patch 8.0.0210: no support for bracketed paste
Christian Brabandt <cb@256bit.org>
parents:
10198
diff
changeset
|
99 *xterm-bracketed-paste* |
27be410d6d29
patch 8.0.0210: no support for bracketed paste
Christian Brabandt <cb@256bit.org>
parents:
10198
diff
changeset
|
100 When the 't_BE' option is set then 't_BE' will be sent to the |
27be410d6d29
patch 8.0.0210: no support for bracketed paste
Christian Brabandt <cb@256bit.org>
parents:
10198
diff
changeset
|
101 terminal when entering "raw" mode and 't_BD' when leaving "raw" mode. The |
27be410d6d29
patch 8.0.0210: no support for bracketed paste
Christian Brabandt <cb@256bit.org>
parents:
10198
diff
changeset
|
102 terminal is then expected to put 't_PS' before pasted text and 't_PE' after |
27be410d6d29
patch 8.0.0210: no support for bracketed paste
Christian Brabandt <cb@256bit.org>
parents:
10198
diff
changeset
|
103 pasted text. This way Vim can separate text that is pasted from characters |
27be410d6d29
patch 8.0.0210: no support for bracketed paste
Christian Brabandt <cb@256bit.org>
parents:
10198
diff
changeset
|
104 that are typed. The pasted text is handled like when the middle mouse button |
10813
09eb5fd275e0
patch 8.0.0296: bracketed paste can only append, not insert
Christian Brabandt <cb@256bit.org>
parents:
10734
diff
changeset
|
105 is used, it is inserted literally and not interpreted as commands. |
09eb5fd275e0
patch 8.0.0296: bracketed paste can only append, not insert
Christian Brabandt <cb@256bit.org>
parents:
10734
diff
changeset
|
106 |
33659
867fa40377c1
runtime(doc): clarify bracketed paste mode
Christian Brabandt <cb@256bit.org>
parents:
31885
diff
changeset
|
107 Please note: while bracketed paste is trying to prevent nasty side-effects |
867fa40377c1
runtime(doc): clarify bracketed paste mode
Christian Brabandt <cb@256bit.org>
parents:
31885
diff
changeset
|
108 from pasting (like the CTRL-C or <ESC> key), it's not a guaranteed security |
867fa40377c1
runtime(doc): clarify bracketed paste mode
Christian Brabandt <cb@256bit.org>
parents:
31885
diff
changeset
|
109 measure because different terminals may implement this mode slightly |
867fa40377c1
runtime(doc): clarify bracketed paste mode
Christian Brabandt <cb@256bit.org>
parents:
31885
diff
changeset
|
110 differently. You should still be careful with what you paste into Vim. |
867fa40377c1
runtime(doc): clarify bracketed paste mode
Christian Brabandt <cb@256bit.org>
parents:
31885
diff
changeset
|
111 |
10813
09eb5fd275e0
patch 8.0.0296: bracketed paste can only append, not insert
Christian Brabandt <cb@256bit.org>
parents:
10734
diff
changeset
|
112 When the cursor is in the first column, the pasted text will be inserted |
09eb5fd275e0
patch 8.0.0296: bracketed paste can only append, not insert
Christian Brabandt <cb@256bit.org>
parents:
10734
diff
changeset
|
113 before it. Otherwise the pasted text is appended after the cursor position. |
09eb5fd275e0
patch 8.0.0296: bracketed paste can only append, not insert
Christian Brabandt <cb@256bit.org>
parents:
10734
diff
changeset
|
114 This means one cannot paste after the first column. Unfortunately Vim does |
09eb5fd275e0
patch 8.0.0296: bracketed paste can only append, not insert
Christian Brabandt <cb@256bit.org>
parents:
10734
diff
changeset
|
115 not have a way to tell where the mouse pointer was. |
10640
27be410d6d29
patch 8.0.0210: no support for bracketed paste
Christian Brabandt <cb@256bit.org>
parents:
10198
diff
changeset
|
116 |
27be410d6d29
patch 8.0.0210: no support for bracketed paste
Christian Brabandt <cb@256bit.org>
parents:
10198
diff
changeset
|
117 Note that in some situations Vim will not recognize the bracketed paste and |
27be410d6d29
patch 8.0.0210: no support for bracketed paste
Christian Brabandt <cb@256bit.org>
parents:
10198
diff
changeset
|
118 you will get the raw text. In other situations Vim will only get the first |
10734 | 119 pasted character and drop the rest, e.g. when using the "r" command. If you |
120 have a problem with this, disable bracketed paste by putting this in your | |
121 .vimrc: > | |
122 set t_BE= | |
123 If this is done while Vim is running the 't_BD' will be sent to the terminal | |
124 to disable bracketed paste. | |
10640
27be410d6d29
patch 8.0.0210: no support for bracketed paste
Christian Brabandt <cb@256bit.org>
parents:
10198
diff
changeset
|
125 |
31588
e94571ac4134
patch 9.0.1126: bracketed paste can be enabled when it is not recognized
Bram Moolenaar <Bram@vim.org>
parents:
31579
diff
changeset
|
126 If |t_PS| or |t_PE| is not set, then |t_BE| will not be used. This is to make |
e94571ac4134
patch 9.0.1126: bracketed paste can be enabled when it is not recognized
Bram Moolenaar <Bram@vim.org>
parents:
31579
diff
changeset
|
127 sure that bracketed paste is not enabled when the escape codes surrounding |
e94571ac4134
patch 9.0.1126: bracketed paste can be enabled when it is not recognized
Bram Moolenaar <Bram@vim.org>
parents:
31579
diff
changeset
|
128 pasted text cannot be recognized. |
e94571ac4134
patch 9.0.1126: bracketed paste can be enabled when it is not recognized
Bram Moolenaar <Bram@vim.org>
parents:
31579
diff
changeset
|
129 |
33659
867fa40377c1
runtime(doc): clarify bracketed paste mode
Christian Brabandt <cb@256bit.org>
parents:
31885
diff
changeset
|
130 Note: bracketed paste mode will be disabled, when the 'esckeys' option is not |
867fa40377c1
runtime(doc): clarify bracketed paste mode
Christian Brabandt <cb@256bit.org>
parents:
31885
diff
changeset
|
131 set (also when the 'compatible' option is set). |
867fa40377c1
runtime(doc): clarify bracketed paste mode
Christian Brabandt <cb@256bit.org>
parents:
31885
diff
changeset
|
132 |
14123 | 133 If your terminal supports bracketed paste, but the options are not set |
134 automatically, you can try using something like this: > | |
135 | |
136 if &term =~ "screen" | |
137 let &t_BE = "\e[?2004h" | |
138 let &t_BD = "\e[?2004l" | |
139 exec "set t_PS=\e[200~" | |
140 exec "set t_PE=\e[201~" | |
141 endif | |
31579 | 142 |
143 The terminfo entries "BE", "BD", "PS" and "PE" were added in ncurses version | |
144 6.4, early 2023, for some terminals. If you have this version then you may | |
145 not have to manually configure your terminal. | |
146 | |
25700 | 147 *tmux-integration* |
148 If you experience issues when running Vim inside tmux, here are a few hints. | |
149 You can comment-out parts if something doesn't work (it may depend on the | |
150 terminal that tmux is running in): > | |
151 | |
152 if !has('gui_running') && &term =~ '^\%(screen\|tmux\)' | |
153 " Better mouse support, see :help 'ttymouse' | |
154 set ttymouse=sgr | |
155 | |
156 " Enable true colors, see :help xterm-true-color | |
157 let &termguicolors = v:true | |
158 let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum" | |
159 let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum" | |
160 | |
161 " Enable bracketed paste mode, see :help xterm-bracketed-paste | |
162 let &t_BE = "\<Esc>[?2004h" | |
163 let &t_BD = "\<Esc>[?2004l" | |
164 let &t_PS = "\<Esc>[200~" | |
165 let &t_PE = "\<Esc>[201~" | |
166 | |
167 " Enable focus event tracking, see :help xterm-focus-event | |
168 let &t_fe = "\<Esc>[?1004h" | |
169 let &t_fd = "\<Esc>[?1004l" | |
26591 | 170 execute "set <FocusGained>=\<Esc>[I" |
171 execute "set <FocusLost>=\<Esc>[O" | |
25700 | 172 |
26438 | 173 " Enable modified arrow keys, see :help arrow_modifiers |
25700 | 174 execute "silent! set <xUp>=\<Esc>[@;*A" |
175 execute "silent! set <xDown>=\<Esc>[@;*B" | |
176 execute "silent! set <xRight>=\<Esc>[@;*C" | |
177 execute "silent! set <xLeft>=\<Esc>[@;*D" | |
178 endif | |
179 < | |
7 | 180 *cs7-problem* |
181 Note: If the terminal settings are changed after running Vim, you might have | |
182 an illegal combination of settings. This has been reported on Solaris 2.5 | |
183 with "stty cs8 parenb", which is restored as "stty cs7 parenb". Use | |
184 "stty cs8 -parenb -istrip" instead, this is restored correctly. | |
185 | |
186 Some termcap entries are wrong in the sense that after sending 't_ks' the | |
187 cursor keys send codes different from the codes defined in the termcap. To | |
188 avoid this you can set 't_ks' (and 't_ke') to empty strings. This must be | |
189 done during initialization (see |initialization|), otherwise it's too late. | |
190 | |
191 Some termcap entries assume that the highest bit is always reset. For | |
192 example: The cursor-up entry for the Amiga could be ":ku=\E[A:". But the | |
193 Amiga really sends "\233A". This works fine if the highest bit is reset, | |
194 e.g., when using an Amiga over a serial line. If the cursor keys don't work, | |
195 try the entry ":ku=\233A:". | |
196 | |
197 Some termcap entries have the entry ":ku=\E[A:". But the Amiga really sends | |
198 "\233A". On output "\E[" and "\233" are often equivalent, on input they | |
199 aren't. You will have to change the termcap entry, or change the key code with | |
200 the :set command to fix this. | |
201 | |
202 Many cursor key codes start with an <Esc>. Vim must find out if this is a | |
203 single hit of the <Esc> key or the start of a cursor key sequence. It waits | |
204 for a next character to arrive. If it does not arrive within one second a | |
205 single <Esc> is assumed. On very slow systems this may fail, causing cursor | |
206 keys not to work sometimes. If you discover this problem reset the 'timeout' | |
207 option. Vim will wait for the next character to arrive after an <Esc>. If | |
208 you want to enter a single <Esc> you must type it twice. Resetting the | |
209 'esckeys' option avoids this problem in Insert mode, but you lose the | |
210 possibility to use cursor and function keys in Insert mode. | |
211 | |
212 On the Amiga the recognition of window resizing is activated only when the | |
213 terminal name is "amiga" or "builtin_amiga". | |
214 | |
215 Some terminals have confusing codes for the cursor keys. The televideo 925 is | |
216 such a terminal. It sends a CTRL-H for cursor-left. This would make it | |
217 impossible to distinguish a backspace and cursor-left. To avoid this problem | |
218 CTRL-H is never recognized as cursor-left. | |
219 | |
220 *vt100-cursor-keys* *xterm-cursor-keys* | |
221 Other terminals (e.g., vt100 and xterm) have cursor keys that send <Esc>OA, | |
222 <Esc>OB, etc. Unfortunately these are valid commands in insert mode: Stop | |
223 insert, Open a new line above the new one, start inserting 'A', 'B', etc. | |
224 Instead of performing these commands Vim will erroneously recognize this typed | |
225 key sequence as a cursor key movement. To avoid this and make Vim do what you | |
226 want in either case you could use these settings: > | |
227 :set notimeout " don't timeout on mappings | |
228 :set ttimeout " do timeout on terminal key codes | |
229 :set timeoutlen=100 " timeout after 100 msec | |
1621 | 230 This requires the key-codes to be sent within 100 msec in order to recognize |
7 | 231 them as a cursor key. When you type you normally are not that fast, so they |
232 are recognized as individual typed commands, even though Vim receives the same | |
233 sequence of bytes. | |
234 | |
235 *vt100-function-keys* *xterm-function-keys* | |
236 An xterm can send function keys F1 to F4 in two modes: vt100 compatible or | |
179 | 237 not. Because Vim may not know what the xterm is sending, both types of keys |
7 | 238 are recognized. The same happens for the <Home> and <End> keys. |
239 normal vt100 ~ | |
240 <F1> t_k1 <Esc>[11~ <xF1> <Esc>OP *<xF1>-xterm* | |
241 <F2> t_k2 <Esc>[12~ <xF2> <Esc>OQ *<xF2>-xterm* | |
242 <F3> t_k3 <Esc>[13~ <xF3> <Esc>OR *<xF3>-xterm* | |
243 <F4> t_k4 <Esc>[14~ <xF4> <Esc>OS *<xF4>-xterm* | |
244 <Home> t_kh <Esc>[7~ <xHome> <Esc>OH *<xHome>-xterm* | |
245 <End> t_@7 <Esc>[4~ <xEnd> <Esc>OF *<xEnd>-xterm* | |
246 | |
247 When Vim starts, <xF1> is mapped to <F1>, <xF2> to <F2> etc. This means that | |
248 by default both codes do the same thing. If you make a mapping for <xF2>, | |
249 because your terminal does have two keys, the default mapping is overwritten, | |
250 thus you can use the <F2> and <xF2> keys for something different. | |
251 | |
252 *xterm-shifted-keys* | |
253 Newer versions of xterm support shifted function keys and special keys. Vim | |
254 recognizes most of them. Use ":set termcap" to check which are supported and | |
255 what the codes are. Mostly these are not in a termcap, they are only | |
256 supported by the builtin_xterm termcap. | |
257 | |
179 | 258 *xterm-modifier-keys* |
259 Newer versions of xterm support Alt and Ctrl for most function keys. To avoid | |
260 having to add all combinations of Alt, Ctrl and Shift for every key a special | |
261 sequence is recognized at the end of a termcap entry: ";*X". The "X" can be | |
262 any character, often '~' is used. The ";*" stands for an optional modifier | |
263 argument. ";2" is Shift, ";3" is Alt, ";5" is Ctrl and ";9" is Meta (when | |
264 it's different from Alt). They can be combined. Examples: > | |
265 :set <F8>=^[[19;*~ | |
266 :set <Home>=^[[1;*H | |
267 Another speciality about these codes is that they are not overwritten by | |
268 another code. That is to avoid that the codes obtained from xterm directly | |
269 |t_RV| overwrite them. | |
23406
24ce202a7d68
patch 8.2.2246: cursor keys not recognized at the hit-Enter prompt
Bram Moolenaar <Bram@vim.org>
parents:
20619
diff
changeset
|
270 |
24ce202a7d68
patch 8.2.2246: cursor keys not recognized at the hit-Enter prompt
Bram Moolenaar <Bram@vim.org>
parents:
20619
diff
changeset
|
271 Another special value is a termcap entry ending in "@;*X". This is for cursor |
24ce202a7d68
patch 8.2.2246: cursor keys not recognized at the hit-Enter prompt
Bram Moolenaar <Bram@vim.org>
parents:
20619
diff
changeset
|
272 keys, which either use "CSI X" or "CSI 1 ; modifier X". Thus the "@" |
24ce202a7d68
patch 8.2.2246: cursor keys not recognized at the hit-Enter prompt
Bram Moolenaar <Bram@vim.org>
parents:
20619
diff
changeset
|
273 stands for either "1" if a modifier follows, or nothing. |
26438 | 274 *arrow_modifiers* |
275 Several terminal emulators (alacritty, gnome, konsole, etc.) send special | |
276 codes for keys with modifiers, but these do not have an entry in the | |
277 termcap/terminfo database. You can make them work by adding a few lines in | |
278 your vimrc. For example, to make the Control modifier work with arrow keys | |
279 for the gnome terminal: > | |
280 if &term =~ 'gnome' | |
281 execute "set <xUp>=\<Esc>[@;*A" | |
282 execute "set <xDown>=\<Esc>[@;*B" | |
283 execute "set <xRight>=\<Esc>[@;*C" | |
284 execute "set <xLeft>=\<Esc>[@;*D" | |
285 endif | |
286 < *xterm-scroll-region* | |
7 | 287 The default termcap entry for xterm on Sun and other platforms does not |
288 contain the entry for scroll regions. Add ":cs=\E[%i%d;%dr:" to the xterm | |
289 entry in /etc/termcap and everything should work. | |
290 | |
291 *xterm-end-home-keys* | |
292 On some systems (at least on FreeBSD with XFree86 3.1.2) the codes that the | |
293 <End> and <Home> keys send contain a <Nul> character. To make these keys send | |
294 the proper key code, add these lines to your ~/.Xdefaults file: | |
295 | |
296 *VT100.Translations: #override \n\ | |
297 <Key>Home: string("0x1b") string("[7~") \n\ | |
298 <Key>End: string("0x1b") string("[8~") | |
299 | |
300 *xterm-8bit* *xterm-8-bit* | |
301 Xterm can be run in a mode where it uses 8-bit escape sequences. The CSI code | |
302 is used instead of <Esc>[. The advantage is that an <Esc> can quickly be | |
303 recognized in Insert mode, because it can't be confused with the start of a | |
304 special key. | |
305 For the builtin termcap entries, Vim checks if the 'term' option contains | |
306 "8bit" anywhere. It then uses 8-bit characters for the termcap entries, the | |
307 mouse and a few other things. You would normally set $TERM in your shell to | |
308 "xterm-8bit" and Vim picks this up and adjusts to the 8-bit setting | |
309 automatically. | |
310 When Vim receives a response to the |t_RV| (request version) sequence and it | |
311 starts with CSI, it assumes that the terminal is in 8-bit mode and will | |
312 convert all key sequences to their 8-bit variants. | |
313 | |
31579 | 314 *xterm-terminfo-entries* |
315 For some time the terminfo entries were insufficient to describe all the | |
316 features tht Vim can use. The builtin xterm termcap entries did have these, | |
317 with the result that several terminals that were similar enough to xterm took | |
318 advantage of these by prefixing "xterm-" to the terminal name in $TERM. | |
319 | |
320 This leads to problems, because quite often these terminals are not 100% | |
321 compatible with xterm. At the start of 2023 several entries have been added | |
322 to the terminfo database to make it possible to use these features without | |
323 using the "xterm" workaround. These are the relevant entries (so far): | |
324 | |
325 name xterm value description ~ | |
326 RV "\033[>c" Request version |t_RV| | |
327 | |
328 BE "\033[?2004h" enable bracketed paste mode |t_BE| | |
329 BD "\033[?2004l" disable bracketed paste mode |t_BD| | |
330 PS "\033[200~" pasted text start |t_PS| | |
331 PE "\033[201~" pasted text end |t_PE| | |
332 | |
31885 | 333 XM "\033[?1006;1004;1000%?%p1%{1}%=%th%el%;" |
31671 | 334 mouse enable / disable |t_XM| |
33715
98d9da5a001f
runtime(doc): clarify terminal capabilities for focus reporting
Christian Brabandt <cb@256bit.org>
parents:
33659
diff
changeset
|
335 FE "\033[?1004h" enable focus event tracking |t_fe| |
98d9da5a001f
runtime(doc): clarify terminal capabilities for focus reporting
Christian Brabandt <cb@256bit.org>
parents:
33659
diff
changeset
|
336 FD "\033[?1004l" disable focus event tracking |t_fd| |
31671 | 337 |
31885 | 338 The "XM" entry includes "1006" to enable SGR style mouse reporting. This |
339 supports columns above 223. It also includes "1004" which enables focus | |
33715
98d9da5a001f
runtime(doc): clarify terminal capabilities for focus reporting
Christian Brabandt <cb@256bit.org>
parents:
33659
diff
changeset
|
340 reporting. |
98d9da5a001f
runtime(doc): clarify terminal capabilities for focus reporting
Christian Brabandt <cb@256bit.org>
parents:
33659
diff
changeset
|
341 Note: As of 2023, the "1004" is currently not used by Vim itself, instead |
98d9da5a001f
runtime(doc): clarify terminal capabilities for focus reporting
Christian Brabandt <cb@256bit.org>
parents:
33659
diff
changeset
|
342 it is recommended to set focus reporting independently of mouse tracking by |
98d9da5a001f
runtime(doc): clarify terminal capabilities for focus reporting
Christian Brabandt <cb@256bit.org>
parents:
33659
diff
changeset
|
343 the |t_fe| and |t_fd| entries, as ncurses also starts to use with the latest |
98d9da5a001f
runtime(doc): clarify terminal capabilities for focus reporting
Christian Brabandt <cb@256bit.org>
parents:
33659
diff
changeset
|
344 versions (and will then also end up in terminfo/termcap). |
31885 | 345 |
31481
7f79eb4ad11a
patch 9.0.1073: using "xterm-kitty" for 'term' causes problems
Bram Moolenaar <Bram@vim.org>
parents:
31383
diff
changeset
|
346 *xterm-kitty* *kitty-terminal* |
31579 | 347 The Kitty terminal is a special case. Mainly because it works differently |
348 from most other terminals, but also because, instead of trying the fit in and | |
349 make it behave like other terminals by default, it dictates how applications | |
350 need to work when using Kitty. This makes it very difficult for Vim to work | |
351 in a Kitty terminal. Some exceptions have been hard coded, but it is not at | |
352 all nice to have to make exceptions for one specific terminal. | |
31481
7f79eb4ad11a
patch 9.0.1073: using "xterm-kitty" for 'term' causes problems
Bram Moolenaar <Bram@vim.org>
parents:
31383
diff
changeset
|
353 |
7f79eb4ad11a
patch 9.0.1073: using "xterm-kitty" for 'term' causes problems
Bram Moolenaar <Bram@vim.org>
parents:
31383
diff
changeset
|
354 One of the problems is that the value for $TERM is set to "xterm-kitty". For |
7f79eb4ad11a
patch 9.0.1073: using "xterm-kitty" for 'term' causes problems
Bram Moolenaar <Bram@vim.org>
parents:
31383
diff
changeset
|
355 Vim this is an indication that the terminal is xterm-compatible and the |
7f79eb4ad11a
patch 9.0.1073: using "xterm-kitty" for 'term' causes problems
Bram Moolenaar <Bram@vim.org>
parents:
31383
diff
changeset
|
356 builtin xterm termcap entries should be used. Many other terminals depend on |
7f79eb4ad11a
patch 9.0.1073: using "xterm-kitty" for 'term' causes problems
Bram Moolenaar <Bram@vim.org>
parents:
31383
diff
changeset
|
357 this. However, Kitty is not fully xterm compatible. The author suggested to |
31495
a2997ac0ca2c
patch 9.0.1080: the "kitty" terminfo entry is not widespread
Bram Moolenaar <Bram@vim.org>
parents:
31481
diff
changeset
|
358 ignore the "xterm-" prefix and use the terminfo entry anyway, so that is what |
a2997ac0ca2c
patch 9.0.1080: the "kitty" terminfo entry is not widespread
Bram Moolenaar <Bram@vim.org>
parents:
31481
diff
changeset
|
359 happens now, the builtin xterm termcap entries are not used. However, the |
a2997ac0ca2c
patch 9.0.1080: the "kitty" terminfo entry is not widespread
Bram Moolenaar <Bram@vim.org>
parents:
31481
diff
changeset
|
360 t_RV is set, otherwise other things would not work, such as automatically |
31671 | 361 setting 'ttymouse' to "sgr" (at least until |t_XM| is being used for this). |
31495
a2997ac0ca2c
patch 9.0.1080: the "kitty" terminfo entry is not widespread
Bram Moolenaar <Bram@vim.org>
parents:
31481
diff
changeset
|
362 |
a2997ac0ca2c
patch 9.0.1080: the "kitty" terminfo entry is not widespread
Bram Moolenaar <Bram@vim.org>
parents:
31481
diff
changeset
|
363 It is not clear why kitty sets $TERM to "xterm-kitty", the terminal isn't |
a2997ac0ca2c
patch 9.0.1080: the "kitty" terminfo entry is not widespread
Bram Moolenaar <Bram@vim.org>
parents:
31481
diff
changeset
|
364 really xterm compatible. "kitty" would be more appropriate, but a terminfo |
a2997ac0ca2c
patch 9.0.1080: the "kitty" terminfo entry is not widespread
Bram Moolenaar <Bram@vim.org>
parents:
31481
diff
changeset
|
365 entry with that name is not widespread. |
31481
7f79eb4ad11a
patch 9.0.1073: using "xterm-kitty" for 'term' causes problems
Bram Moolenaar <Bram@vim.org>
parents:
31383
diff
changeset
|
366 |
7f79eb4ad11a
patch 9.0.1073: using "xterm-kitty" for 'term' causes problems
Bram Moolenaar <Bram@vim.org>
parents:
31383
diff
changeset
|
367 Note that using the kitty keyboard protocol is a separate feature, see |
7f79eb4ad11a
patch 9.0.1073: using "xterm-kitty" for 'term' causes problems
Bram Moolenaar <Bram@vim.org>
parents:
31383
diff
changeset
|
368 |kitty-keyboard-protocol|. |
7f79eb4ad11a
patch 9.0.1073: using "xterm-kitty" for 'term' causes problems
Bram Moolenaar <Bram@vim.org>
parents:
31383
diff
changeset
|
369 |
7f79eb4ad11a
patch 9.0.1073: using "xterm-kitty" for 'term' causes problems
Bram Moolenaar <Bram@vim.org>
parents:
31383
diff
changeset
|
370 |
7 | 371 ============================================================================== |
667 | 372 2. Terminal options *terminal-options* *termcap-options* *E436* |
7 | 373 |
374 The terminal options can be set just like normal options. But they are not | |
375 shown with the ":set all" command. Instead use ":set termcap". | |
376 | |
377 It is always possible to change individual strings by setting the | |
378 appropriate option. For example: > | |
379 :set t_ce=^V^[[K (CTRL-V, <Esc>, [, K) | |
380 | |
381 The options are listed below. The associated termcap code is always equal to | |
382 the last two characters of the option name. Only one termcap code is | |
383 required: Cursor motion, 't_cm'. | |
384 | |
6602 | 385 The options 't_da', 't_db', 't_ms', 't_xs', 't_xn' represent flags in the |
386 termcap. When the termcap flag is present, the option will be set to "y". | |
387 But any non-empty string means that the flag is set. An empty string means | |
388 that the flag is not set. 't_CS' works like this too, but it isn't a termcap | |
389 flag. | |
7 | 390 |
11062 | 391 OUTPUT CODES *terminal-output-codes* |
7 | 392 option meaning ~ |
393 | |
394 t_AB set background color (ANSI) *t_AB* *'t_AB'* | |
395 t_AF set foreground color (ANSI) *t_AF* *'t_AF'* | |
396 t_AL add number of blank lines *t_AL* *'t_AL'* | |
397 t_al add new blank line *t_al* *'t_al'* | |
398 t_bc backspace character *t_bc* *'t_bc'* | |
399 t_cd clear to end of screen *t_cd* *'t_cd'* | |
400 t_ce clear to end of line *t_ce* *'t_ce'* | |
401 t_cl clear screen *t_cl* *'t_cl'* | |
402 t_cm cursor motion (required!) *E437* *t_cm* *'t_cm'* | |
403 t_Co number of colors *t_Co* *'t_Co'* | |
404 t_CS if non-empty, cursor relative to scroll region *t_CS* *'t_CS'* | |
405 t_cs define scrolling region *t_cs* *'t_cs'* | |
406 t_CV define vertical scrolling region *t_CV* *'t_CV'* | |
407 t_da if non-empty, lines from above scroll down *t_da* *'t_da'* | |
408 t_db if non-empty, lines from below scroll up *t_db* *'t_db'* | |
409 t_DL delete number of lines *t_DL* *'t_DL'* | |
410 t_dl delete line *t_dl* *'t_dl'* | |
411 t_fs set window title end (from status line) *t_fs* *'t_fs'* | |
412 t_ke exit "keypad transmit" mode *t_ke* *'t_ke'* | |
413 t_ks start "keypad transmit" mode *t_ks* *'t_ks'* | |
414 t_le move cursor one char left *t_le* *'t_le'* | |
415 t_mb blinking mode *t_mb* *'t_mb'* | |
416 t_md bold mode *t_md* *'t_md'* | |
417 t_me Normal mode (undoes t_mr, t_mb, t_md and color) *t_me* *'t_me'* | |
418 t_mr reverse (invert) mode *t_mr* *'t_mr'* | |
419 *t_ms* *'t_ms'* | |
420 t_ms if non-empty, cursor can be moved in standout/inverse mode | |
421 t_nd non destructive space character *t_nd* *'t_nd'* | |
422 t_op reset to original color pair *t_op* *'t_op'* | |
423 t_RI cursor number of chars right *t_RI* *'t_RI'* | |
424 t_Sb set background color *t_Sb* *'t_Sb'* | |
425 t_Sf set foreground color *t_Sf* *'t_Sf'* | |
426 t_se standout end *t_se* *'t_se'* | |
427 t_so standout mode *t_so* *'t_so'* | |
428 t_sr scroll reverse (backward) *t_sr* *'t_sr'* | |
18299
a9cf41bcb5d6
patch 8.1.2144: side effects when using t_ti to enable modifyOtherKeys
Bram Moolenaar <Bram@vim.org>
parents:
16610
diff
changeset
|
429 t_te end of "termcap" mode *t_te* *'t_te'* |
a9cf41bcb5d6
patch 8.1.2144: side effects when using t_ti to enable modifyOtherKeys
Bram Moolenaar <Bram@vim.org>
parents:
16610
diff
changeset
|
430 t_ti put terminal into "termcap" mode *t_ti* *'t_ti'* |
7 | 431 t_ts set window title start (to status line) *t_ts* *'t_ts'* |
432 t_ue underline end *t_ue* *'t_ue'* | |
433 t_us underline mode *t_us* *'t_us'* | |
434 t_ut clearing uses the current background color *t_ut* *'t_ut'* | |
435 t_vb visual bell *t_vb* *'t_vb'* | |
436 t_ve cursor visible *t_ve* *'t_ve'* | |
437 t_vi cursor invisible *t_vi* *'t_vi'* | |
12254 | 438 t_vs cursor very visible (blink) *t_vs* *'t_vs'* |
7 | 439 *t_xs* *'t_xs'* |
440 t_xs if non-empty, standout not erased by overwriting (hpterm) | |
6602 | 441 *t_xn* *'t_xn'* |
6647 | 442 t_xn if non-empty, writing a character at the last screen cell |
443 does not cause scrolling | |
7 | 444 t_ZH italics mode *t_ZH* *'t_ZH'* |
445 t_ZR italics end *t_ZR* *'t_ZR'* | |
446 | |
447 Added by Vim (there are no standard codes for these): | |
20619
68c206d3a251
patch 8.2.0863: cannot set a separate color for underline/undercurl
Bram Moolenaar <Bram@vim.org>
parents:
20115
diff
changeset
|
448 t_AU set underline color (ANSI) *t_AU* *'t_AU'* |
29328
60977de70684
patch 9.0.0007: no support for double, dotted and dashed underlines
Bram Moolenaar <Bram@vim.org>
parents:
29314
diff
changeset
|
449 t_Ce undercurl and underline end *t_Ce* *'t_Ce'* |
60977de70684
patch 9.0.0007: no support for double, dotted and dashed underlines
Bram Moolenaar <Bram@vim.org>
parents:
29314
diff
changeset
|
450 t_Cs undercurl (curly underline) mode *t_Cs* *'t_Cs'* |
60977de70684
patch 9.0.0007: no support for double, dotted and dashed underlines
Bram Moolenaar <Bram@vim.org>
parents:
29314
diff
changeset
|
451 t_Us double underline mode *t_Us* *'t_Us'* |
60977de70684
patch 9.0.0007: no support for double, dotted and dashed underlines
Bram Moolenaar <Bram@vim.org>
parents:
29314
diff
changeset
|
452 t_ds dotted underline mode *t_ds* *'t_ds'* |
60977de70684
patch 9.0.0007: no support for double, dotted and dashed underlines
Bram Moolenaar <Bram@vim.org>
parents:
29314
diff
changeset
|
453 t_Ds dashed underline mode *t_Ds* *'t_Ds'* |
12499 | 454 t_Te strikethrough end *t_Te* *'t_Te'* |
455 t_Ts strikethrough mode *t_Ts* *'t_Ts'* | |
7 | 456 t_IS set icon text start *t_IS* *'t_IS'* |
457 t_IE set icon text end *t_IE* *'t_IE'* | |
458 t_WP set window position (Y, X) in pixels *t_WP* *'t_WP'* | |
11400
0f8713fe20dc
Updated runtime files.
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
459 t_GP get window position (Y, X) in pixels *t_GP* *'t_GP'* |
11763
21f3930dfe6e
Documentation updates.
Christian Brabandt <cb@256bit.org>
parents:
11400
diff
changeset
|
460 t_WS set window size (height, width in cells) *t_WS* *'t_WS'* |
12254 | 461 t_VS cursor normally visible (no blink) *t_VS* *'t_VS'* |
856 | 462 t_SI start insert mode (bar cursor shape) *t_SI* *'t_SI'* |
6727 | 463 t_SR start replace mode (underline cursor shape) *t_SR* *'t_SR'* |
464 t_EI end insert or replace mode (block cursor shape) *t_EI* *'t_EI'* | |
500 | 465 |termcap-cursor-shape| |
28620 | 466 t_RV request terminal version string (works for *t_RV* *'t_RV'* |
467 xterm and other terminal emulators) The | |
468 response is stored in |v:termresponse| |xterm-8bit| | |
469 |'ttymouse'| |xterm-codes| | |
31671 | 470 t_XM enable/disable mouse reporting, *t_XM* *'t_XM'* |
471 see |mouse-reporting| below | |
31293
ff4473b3fc58
patch 9.0.0980: the keyboard state response may end up in a shell command
Bram Moolenaar <Bram@vim.org>
parents:
31229
diff
changeset
|
472 t_RK request terminal keyboard protocol state; *t_RK* *'t_RK'* |
ff4473b3fc58
patch 9.0.0980: the keyboard state response may end up in a shell command
Bram Moolenaar <Bram@vim.org>
parents:
31229
diff
changeset
|
473 sent after |t_TI| |
4229 | 474 t_u7 request cursor position (for xterm) *t_u7* *'t_u7'* |
475 see |'ambiwidth'| | |
15640 | 476 The response is stored in |v:termu7resp| |
12756
3b26420fc639
Long overdue runtime update.
Christian Brabandt <cb@256bit.org>
parents:
12499
diff
changeset
|
477 t_RF request terminal foreground color *t_RF* *'t_RF'* |
15640 | 478 The response is stored in |v:termrfgresp| |
6884 | 479 t_RB request terminal background color *t_RB* *'t_RB'* |
15640 | 480 The response is stored in |v:termrbgresp| |
8969
c83e2c1e7f2b
commit https://github.com/vim/vim/commit/8a633e3427b47286869aa4b96f2bfc1fe65b25cd
Christian Brabandt <cb@256bit.org>
parents:
8951
diff
changeset
|
481 t_8f set foreground color (R, G, B) *t_8f* *'t_8f'* |
c83e2c1e7f2b
commit https://github.com/vim/vim/commit/8a633e3427b47286869aa4b96f2bfc1fe65b25cd
Christian Brabandt <cb@256bit.org>
parents:
8951
diff
changeset
|
482 |xterm-true-color| |
c83e2c1e7f2b
commit https://github.com/vim/vim/commit/8a633e3427b47286869aa4b96f2bfc1fe65b25cd
Christian Brabandt <cb@256bit.org>
parents:
8951
diff
changeset
|
483 t_8b set background color (R, G, B) *t_8b* *'t_8b'* |
c83e2c1e7f2b
commit https://github.com/vim/vim/commit/8a633e3427b47286869aa4b96f2bfc1fe65b25cd
Christian Brabandt <cb@256bit.org>
parents:
8951
diff
changeset
|
484 |xterm-true-color| |
20619
68c206d3a251
patch 8.2.0863: cannot set a separate color for underline/undercurl
Bram Moolenaar <Bram@vim.org>
parents:
20115
diff
changeset
|
485 t_8u set underline color (R, G, B) *t_8u* *'t_8u'* |
10640
27be410d6d29
patch 8.0.0210: no support for bracketed paste
Christian Brabandt <cb@256bit.org>
parents:
10198
diff
changeset
|
486 t_BE enable bracketed paste mode *t_BE* *'t_BE'* |
27be410d6d29
patch 8.0.0210: no support for bracketed paste
Christian Brabandt <cb@256bit.org>
parents:
10198
diff
changeset
|
487 |xterm-bracketed-paste| |
27be410d6d29
patch 8.0.0210: no support for bracketed paste
Christian Brabandt <cb@256bit.org>
parents:
10198
diff
changeset
|
488 t_BD disable bracketed paste mode *t_BD* *'t_BD'* |
27be410d6d29
patch 8.0.0210: no support for bracketed paste
Christian Brabandt <cb@256bit.org>
parents:
10198
diff
changeset
|
489 |xterm-bracketed-paste| |
12254 | 490 t_SC set cursor color start *t_SC* *'t_SC'* |
491 t_EC set cursor color end *t_EC* *'t_EC'* | |
492 t_SH set cursor shape *t_SH* *'t_SH'* | |
12499 | 493 t_RC request terminal cursor blinking *t_RC* *'t_RC'* |
15640 | 494 The response is stored in |v:termblinkresp| |
12254 | 495 t_RS request terminal cursor style *t_RS* *'t_RS'* |
15640 | 496 The response is stored in |v:termstyleresp| |
14479
3375a8cbb442
patch 8.1.0253: saving and restoring window title does not always work
Christian Brabandt <cb@256bit.org>
parents:
14421
diff
changeset
|
497 t_ST save window title to stack *t_ST* *'t_ST'* |
3375a8cbb442
patch 8.1.0253: saving and restoring window title does not always work
Christian Brabandt <cb@256bit.org>
parents:
14421
diff
changeset
|
498 t_RT restore window title from stack *t_RT* *'t_RT'* |
3375a8cbb442
patch 8.1.0253: saving and restoring window title does not always work
Christian Brabandt <cb@256bit.org>
parents:
14421
diff
changeset
|
499 t_Si save icon text to stack *t_Si* *'t_Si'* |
3375a8cbb442
patch 8.1.0253: saving and restoring window title does not always work
Christian Brabandt <cb@256bit.org>
parents:
14421
diff
changeset
|
500 t_Ri restore icon text from stack *t_Ri* *'t_Ri'* |
18299
a9cf41bcb5d6
patch 8.1.2144: side effects when using t_ti to enable modifyOtherKeys
Bram Moolenaar <Bram@vim.org>
parents:
16610
diff
changeset
|
501 t_TE end of "raw" mode *t_TE* *'t_TE'* |
31579 | 502 t_TI put terminal into "raw" mode *t_TI* *'t_TI'* |
503 t_fe enable focus-event tracking *t_fe* *'t_fe'* | |
23606
f98939164e91
patch 8.2.2345: no focus events in a terminal
Bram Moolenaar <Bram@vim.org>
parents:
23466
diff
changeset
|
504 |xterm-focus-event| |
31579 | 505 t_fd disable focus-event tracking *t_fd* *'t_fd'* |
23606
f98939164e91
patch 8.2.2345: no focus events in a terminal
Bram Moolenaar <Bram@vim.org>
parents:
23466
diff
changeset
|
506 |xterm-focus-event| |
12254 | 507 |
508 Some codes have a start, middle and end part. The start and end are defined | |
509 by the termcap option, the middle part is text. | |
510 set title text: t_ts {title text} t_fs | |
511 set icon text: t_IS {icon text} t_IE | |
512 set cursor color: t_SC {color name} t_EC | |
513 | |
514 t_SH must take one argument: | |
31579 | 515 0, 1 or none blinking block cursor |
516 2 block cursor | |
12254 | 517 3 blinking underline cursor |
518 4 underline cursor | |
519 5 blinking vertical bar cursor | |
520 6 vertical bar cursor | |
521 | |
522 t_RS is sent only if the response to t_RV has been received. It is not used | |
523 on Mac OS when Terminal.app could be recognized from the termresponse. | |
524 | |
31671 | 525 *mouse-reporting* |
526 Many terminals can report mouse clicks and some can report mouse movement and | |
527 dragging. Vim needs to know what codes are being used for this. | |
528 | |
529 The "XM" terminfo/termcap entry is used for this. Vim also has the 'ttymouse' | |
530 option to specify the mouse protocol being used. See the option for the | |
531 possible values. | |
532 | |
533 If Vim can read the "XM" terminfo/termcap entry then it will be used for | |
534 enabling and disabling the mouse reporting. If it is missing, then the value | |
535 from 'ttymouse' is used to decide how to do this. | |
536 | |
537 If the "XM" entry exists and the first number is "1006" then 'ttymouse' will | |
538 be set to "sgr", unless it was already set earlier. | |
539 | |
7 | 540 |
11062 | 541 KEY CODES *terminal-key-codes* |
7 | 542 Note: Use the <> form if possible |
543 | |
544 option name meaning ~ | |
545 | |
546 t_ku <Up> arrow up *t_ku* *'t_ku'* | |
547 t_kd <Down> arrow down *t_kd* *'t_kd'* | |
548 t_kr <Right> arrow right *t_kr* *'t_kr'* | |
549 t_kl <Left> arrow left *t_kl* *'t_kl'* | |
180 | 550 <xUp> alternate arrow up *<xUp>* |
551 <xDown> alternate arrow down *<xDown>* | |
552 <xRight> alternate arrow right *<xRight>* | |
553 <xLeft> alternate arrow left *<xLeft>* | |
7 | 554 <S-Up> shift arrow up |
555 <S-Down> shift arrow down | |
556 t_%i <S-Right> shift arrow right *t_%i* *'t_%i'* | |
557 t_#4 <S-Left> shift arrow left *t_#4* *'t_#4'* | |
558 t_k1 <F1> function key 1 *t_k1* *'t_k1'* | |
559 <xF1> alternate F1 *<xF1>* | |
560 t_k2 <F2> function key 2 *<F2>* *t_k2* *'t_k2'* | |
561 <xF2> alternate F2 *<xF2>* | |
562 t_k3 <F3> function key 3 *<F3>* *t_k3* *'t_k3'* | |
563 <xF3> alternate F3 *<xF3>* | |
564 t_k4 <F4> function key 4 *<F4>* *t_k4* *'t_k4'* | |
565 <xF4> alternate F4 *<xF4>* | |
566 t_k5 <F5> function key 5 *<F5>* *t_k5* *'t_k5'* | |
567 t_k6 <F6> function key 6 *<F6>* *t_k6* *'t_k6'* | |
568 t_k7 <F7> function key 7 *<F7>* *t_k7* *'t_k7'* | |
569 t_k8 <F8> function key 8 *<F8>* *t_k8* *'t_k8'* | |
570 t_k9 <F9> function key 9 *<F9>* *t_k9* *'t_k9'* | |
571 t_k; <F10> function key 10 *<F10>* *t_k;* *'t_k;'* | |
4437 | 572 t_F1 <F11> function key 11 *<F11>* *t_F1* *'t_F1'* |
7 | 573 t_F2 <F12> function key 12 *<F12>* *t_F2* *'t_F2'* |
574 t_F3 <F13> function key 13 *<F13>* *t_F3* *'t_F3'* | |
575 t_F4 <F14> function key 14 *<F14>* *t_F4* *'t_F4'* | |
576 t_F5 <F15> function key 15 *<F15>* *t_F5* *'t_F5'* | |
577 t_F6 <F16> function key 16 *<F16>* *t_F6* *'t_F6'* | |
578 t_F7 <F17> function key 17 *<F17>* *t_F7* *'t_F7'* | |
579 t_F8 <F18> function key 18 *<F18>* *t_F8* *'t_F8'* | |
580 t_F9 <F19> function key 19 *<F19>* *t_F9* *'t_F9'* | |
581 <S-F1> shifted function key 1 | |
582 <S-xF1> alternate <S-F1> *<S-xF1>* | |
583 <S-F2> shifted function key 2 *<S-F2>* | |
584 <S-xF2> alternate <S-F2> *<S-xF2>* | |
585 <S-F3> shifted function key 3 *<S-F3>* | |
586 <S-xF3> alternate <S-F3> *<S-xF3>* | |
587 <S-F4> shifted function key 4 *<S-F4>* | |
588 <S-xF4> alternate <S-F4> *<S-xF4>* | |
589 <S-F5> shifted function key 5 *<S-F5>* | |
590 <S-F6> shifted function key 6 *<S-F6>* | |
591 <S-F7> shifted function key 7 *<S-F7>* | |
592 <S-F8> shifted function key 8 *<S-F8>* | |
593 <S-F9> shifted function key 9 *<S-F9>* | |
594 <S-F10> shifted function key 10 *<S-F10>* | |
595 <S-F11> shifted function key 11 *<S-F11>* | |
596 <S-F12> shifted function key 12 *<S-F12>* | |
597 t_%1 <Help> help key *t_%1* *'t_%1'* | |
598 t_&8 <Undo> undo key *t_&8* *'t_&8'* | |
599 t_kI <Insert> insert key *t_kI* *'t_kI'* | |
31579 | 600 <kInsert> keypad insert key |
7 | 601 t_kD <Del> delete key *t_kD* *'t_kD'* |
602 t_kb <BS> backspace key *t_kb* *'t_kb'* | |
4437 | 603 t_kB <S-Tab> back-tab (shift-tab) *<S-Tab>* *t_kB* *'t_kB'* |
7 | 604 t_kh <Home> home key *t_kh* *'t_kh'* |
4437 | 605 t_#2 <S-Home> shifted home key *<S-Home>* *t_#2* *'t_#2'* |
7 | 606 <xHome> alternate home key *<xHome>* |
607 t_@7 <End> end key *t_@7* *'t_@7'* | |
608 t_*7 <S-End> shifted end key *<S-End>* *t_star7* *'t_star7'* | |
609 <xEnd> alternate end key *<xEnd>* | |
610 t_kP <PageUp> page-up key *t_kP* *'t_kP'* | |
611 t_kN <PageDown> page-down key *t_kN* *'t_kN'* | |
612 t_K1 <kHome> keypad home key *t_K1* *'t_K1'* | |
613 t_K4 <kEnd> keypad end key *t_K4* *'t_K4'* | |
614 t_K3 <kPageUp> keypad page-up key *t_K3* *'t_K3'* | |
615 t_K5 <kPageDown> keypad page-down key *t_K5* *'t_K5'* | |
616 t_K6 <kPlus> keypad plus key *<kPlus>* *t_K6* *'t_K6'* | |
617 t_K7 <kMinus> keypad minus key *<kMinus>* *t_K7* *'t_K7'* | |
4437 | 618 t_K8 <kDivide> keypad divide *<kDivide>* *t_K8* *'t_K8'* |
619 t_K9 <kMultiply> keypad multiply *<kMultiply>* *t_K9* *'t_K9'* | |
7 | 620 t_KA <kEnter> keypad enter key *<kEnter>* *t_KA* *'t_KA'* |
621 t_KB <kPoint> keypad decimal point *<kPoint>* *t_KB* *'t_KB'* | |
622 t_KC <k0> keypad 0 *<k0>* *t_KC* *'t_KC'* | |
623 t_KD <k1> keypad 1 *<k1>* *t_KD* *'t_KD'* | |
624 t_KE <k2> keypad 2 *<k2>* *t_KE* *'t_KE'* | |
625 t_KF <k3> keypad 3 *<k3>* *t_KF* *'t_KF'* | |
626 t_KG <k4> keypad 4 *<k4>* *t_KG* *'t_KG'* | |
627 t_KH <k5> keypad 5 *<k5>* *t_KH* *'t_KH'* | |
628 t_KI <k6> keypad 6 *<k6>* *t_KI* *'t_KI'* | |
629 t_KJ <k7> keypad 7 *<k7>* *t_KJ* *'t_KJ'* | |
630 t_KK <k8> keypad 8 *<k8>* *t_KK* *'t_KK'* | |
631 t_KL <k9> keypad 9 *<k9>* *t_KL* *'t_KL'* | |
632 <Mouse> leader of mouse code *<Mouse>* | |
31579 | 633 |
634 t_PS <PasteStart> start of bracketed paste *t_PS* *'t_PS'* | |
635 |xterm-bracketed-paste| | |
636 t_PE <PasteEnd> end of bracketed paste *t_PE* *'t_PE'* | |
637 |xterm-bracketed-paste| | |
638 <FocusGained> Vim window got focus (internal only) | |
639 <FocusLost> Vim window lost focus (internal only) | |
7 | 640 |
641 Note about t_so and t_mr: When the termcap entry "so" is not present the | |
642 entry for "mr" is used. And vice versa. The same is done for "se" and "me". | |
643 If your terminal supports both inversion and standout mode, you can see two | |
644 different modes. If your terminal supports only one of the modes, both will | |
645 look the same. | |
646 | |
33 | 647 *keypad-comma* |
7 | 648 The keypad keys, when they are not mapped, behave like the equivalent normal |
33 | 649 key. There is one exception: if you have a comma on the keypad instead of a |
650 decimal point, Vim will use a dot anyway. Use these mappings to fix that: > | |
651 :noremap <kPoint> , | |
652 :noremap! <kPoint> , | |
653 < *xterm-codes* | |
7 | 654 There is a special trick to obtain the key codes which currently only works |
655 for xterm. When |t_RV| is defined and a response is received which indicates | |
656 an xterm with patchlevel 141 or higher, Vim uses special escape sequences to | |
657 request the key codes directly from the xterm. The responses are used to | |
658 adjust the various t_ codes. This avoids the problem that the xterm can | |
659 produce different codes, depending on the mode it is in (8-bit, VT102, | |
660 VT220, etc.). The result is that codes like <xF1> are no longer needed. | |
26670
a77b661439f9
patch 8.2.3864: cannot disable requesting key codes from xterm
Bram Moolenaar <Bram@vim.org>
parents:
26591
diff
changeset
|
661 |
a77b661439f9
patch 8.2.3864: cannot disable requesting key codes from xterm
Bram Moolenaar <Bram@vim.org>
parents:
26591
diff
changeset
|
662 One of the codes that can change is 't_Co', the number of colors. This will |
a77b661439f9
patch 8.2.3864: cannot disable requesting key codes from xterm
Bram Moolenaar <Bram@vim.org>
parents:
26591
diff
changeset
|
663 trigger a redraw. If this is a problem, reset the 'xtermcodes' option as |
a77b661439f9
patch 8.2.3864: cannot disable requesting key codes from xterm
Bram Moolenaar <Bram@vim.org>
parents:
26591
diff
changeset
|
664 early as possible: > |
a77b661439f9
patch 8.2.3864: cannot disable requesting key codes from xterm
Bram Moolenaar <Bram@vim.org>
parents:
26591
diff
changeset
|
665 set noxtermcodes |
a77b661439f9
patch 8.2.3864: cannot disable requesting key codes from xterm
Bram Moolenaar <Bram@vim.org>
parents:
26591
diff
changeset
|
666 |
a77b661439f9
patch 8.2.3864: cannot disable requesting key codes from xterm
Bram Moolenaar <Bram@vim.org>
parents:
26591
diff
changeset
|
667 Note: Requesting the key codes is only done on startup. If the xterm options |
a77b661439f9
patch 8.2.3864: cannot disable requesting key codes from xterm
Bram Moolenaar <Bram@vim.org>
parents:
26591
diff
changeset
|
668 are changed after Vim has started, the escape sequences may not be recognized |
a77b661439f9
patch 8.2.3864: cannot disable requesting key codes from xterm
Bram Moolenaar <Bram@vim.org>
parents:
26591
diff
changeset
|
669 anymore. |
7 | 670 |
8969
c83e2c1e7f2b
commit https://github.com/vim/vim/commit/8a633e3427b47286869aa4b96f2bfc1fe65b25cd
Christian Brabandt <cb@256bit.org>
parents:
8951
diff
changeset
|
671 *xterm-true-color* |
c83e2c1e7f2b
commit https://github.com/vim/vim/commit/8a633e3427b47286869aa4b96f2bfc1fe65b25cd
Christian Brabandt <cb@256bit.org>
parents:
8951
diff
changeset
|
672 Vim supports using true colors in the terminal (taken from |highlight-guifg| |
18831 | 673 and |highlight-guibg|), given that the terminal supports this. To make this |
9027
773d627cac0b
commit https://github.com/vim/vim/commit/61be73bb0f965a895bfb064ea3e55476ac175162
Christian Brabandt <cb@256bit.org>
parents:
8969
diff
changeset
|
674 work the 'termguicolors' option needs to be set. |
30967 | 675 See https://github.com/termstandard/colors for a list of terminals that |
10140
b11ceef7116e
commit https://github.com/vim/vim/commit/64d8e25bf6efe5f18b032563521c3ce278c316ab
Christian Brabandt <cb@256bit.org>
parents:
9027
diff
changeset
|
676 support true colors. |
8969
c83e2c1e7f2b
commit https://github.com/vim/vim/commit/8a633e3427b47286869aa4b96f2bfc1fe65b25cd
Christian Brabandt <cb@256bit.org>
parents:
8951
diff
changeset
|
677 |
31579 | 678 For telling the terminal what RGB color to use the |t_8f| and |t_8b| termcap |
679 entries are used. These are set by default to values that work for most | |
680 terminals. If that does not work for your terminal you can set them manually. | |
681 The default values are set like this: > | |
682 let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum" | |
683 let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum" | |
684 | |
685 Some terminals accept the same sequences, but with all semicolons replaced by | |
686 colons (this is actually more compatible, but less widely supported): > | |
10140
b11ceef7116e
commit https://github.com/vim/vim/commit/64d8e25bf6efe5f18b032563521c3ce278c316ab
Christian Brabandt <cb@256bit.org>
parents:
9027
diff
changeset
|
687 let &t_8f = "\<Esc>[38:2:%lu:%lu:%lum" |
b11ceef7116e
commit https://github.com/vim/vim/commit/64d8e25bf6efe5f18b032563521c3ce278c316ab
Christian Brabandt <cb@256bit.org>
parents:
9027
diff
changeset
|
688 let &t_8b = "\<Esc>[48:2:%lu:%lu:%lum" |
9027
773d627cac0b
commit https://github.com/vim/vim/commit/61be73bb0f965a895bfb064ea3e55476ac175162
Christian Brabandt <cb@256bit.org>
parents:
8969
diff
changeset
|
689 |
773d627cac0b
commit https://github.com/vim/vim/commit/61be73bb0f965a895bfb064ea3e55476ac175162
Christian Brabandt <cb@256bit.org>
parents:
8969
diff
changeset
|
690 These options contain printf strings, with |printf()| (actually, its C |
773d627cac0b
commit https://github.com/vim/vim/commit/61be73bb0f965a895bfb064ea3e55476ac175162
Christian Brabandt <cb@256bit.org>
parents:
8969
diff
changeset
|
691 equivalent hence `l` modifier) invoked with the t_ option value and three |
773d627cac0b
commit https://github.com/vim/vim/commit/61be73bb0f965a895bfb064ea3e55476ac175162
Christian Brabandt <cb@256bit.org>
parents:
8969
diff
changeset
|
692 unsigned long integers that may have any value between 0 and 255 (inclusive) |
773d627cac0b
commit https://github.com/vim/vim/commit/61be73bb0f965a895bfb064ea3e55476ac175162
Christian Brabandt <cb@256bit.org>
parents:
8969
diff
changeset
|
693 representing red, green and blue colors respectively. |
8969
c83e2c1e7f2b
commit https://github.com/vim/vim/commit/8a633e3427b47286869aa4b96f2bfc1fe65b25cd
Christian Brabandt <cb@256bit.org>
parents:
8951
diff
changeset
|
694 |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
695 *xterm-resize* |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
696 Window resizing with xterm only works if the allowWindowOps resource is |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
697 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
|
698 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
|
699 is actually the case. |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
700 |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
701 To overrule the default, put this line in your ~/.Xdefaults or |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
702 ~/.Xresources: |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
703 > |
31579 | 704 XTerm*allowWindowOps: true |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
705 |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
706 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
|
707 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
|
708 there should be a tick at allow-window-ops. |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
709 |
23606
f98939164e91
patch 8.2.2345: no focus events in a terminal
Bram Moolenaar <Bram@vim.org>
parents:
23466
diff
changeset
|
710 *xterm-focus-event* |
f98939164e91
patch 8.2.2345: no focus events in a terminal
Bram Moolenaar <Bram@vim.org>
parents:
23466
diff
changeset
|
711 Some terminals including xterm support the focus event tracking feature. |
f98939164e91
patch 8.2.2345: no focus events in a terminal
Bram Moolenaar <Bram@vim.org>
parents:
23466
diff
changeset
|
712 If this feature is enabled by the 't_fe' sequence, special key sequences are |
f98939164e91
patch 8.2.2345: no focus events in a terminal
Bram Moolenaar <Bram@vim.org>
parents:
23466
diff
changeset
|
713 sent from the terminal to Vim every time the terminal gains or loses focus. |
f98939164e91
patch 8.2.2345: no focus events in a terminal
Bram Moolenaar <Bram@vim.org>
parents:
23466
diff
changeset
|
714 Vim fires focus events (|FocusGained|/|FocusLost|) by handling them accordingly. |
f98939164e91
patch 8.2.2345: no focus events in a terminal
Bram Moolenaar <Bram@vim.org>
parents:
23466
diff
changeset
|
715 Focus event tracking is disabled by a 't_fd' sequence when exiting "raw" mode. |
f98939164e91
patch 8.2.2345: no focus events in a terminal
Bram Moolenaar <Bram@vim.org>
parents:
23466
diff
changeset
|
716 If you would like to disable this feature, add the following to your .vimrc: |
f98939164e91
patch 8.2.2345: no focus events in a terminal
Bram Moolenaar <Bram@vim.org>
parents:
23466
diff
changeset
|
717 `set t_fd=` |
f98939164e91
patch 8.2.2345: no focus events in a terminal
Bram Moolenaar <Bram@vim.org>
parents:
23466
diff
changeset
|
718 `set t_fe=` |
25700 | 719 If your terminal does support this but Vim does not recognize the terminal, |
720 you may have to set the options yourself: > | |
721 let &t_fe = "\<Esc>[?1004h" | |
722 let &t_fd = "\<Esc>[?1004l" | |
26591 | 723 execute "set <FocusGained>=\<Esc>[I" |
724 execute "set <FocusLost>=\<Esc>[O" | |
25700 | 725 If this causes garbage to show when Vim starts up then it doesn't work. |
23606
f98939164e91
patch 8.2.2345: no focus events in a terminal
Bram Moolenaar <Bram@vim.org>
parents:
23466
diff
changeset
|
726 |
7 | 727 *termcap-colors* |
728 Note about colors: The 't_Co' option tells Vim the number of colors available. | |
729 When it is non-zero, the 't_AB' and 't_AF' options are used to set the color. | |
730 If one of these is not available, 't_Sb' and 't_Sf' are used. 't_me' is used | |
16380 | 731 to reset to the default colors. Also see 'termguicolors'. |
20115 | 732 When the GUI is running 't_Co' is set to 16777216. |
7 | 733 |
36 | 734 *termcap-cursor-shape* *termcap-cursor-color* |
6727 | 735 When Vim enters Insert mode the 't_SI' escape sequence is sent. When Vim |
736 enters Replace mode the 't_SR' escape sequence is sent if it is set, otherwise | |
29403 | 737 't_SI' is sent. When leaving Insert mode or Replace mode 't_EI' is used. |
738 Note: When 't_EI' is not set then 't_SI' and 't_SR' will not be sent. And | |
739 when 't_SI' or 't_SR' is not set then 't_EI' is sent only once. | |
740 | |
741 This can be used to change the shape or color of the cursor in Insert or | |
742 Replace mode. These are not standard termcap/terminfo entries, you need to set | |
743 them yourself. | |
36 | 744 Example for an xterm, this changes the color of the cursor: > |
745 if &term =~ "xterm" | |
746 let &t_SI = "\<Esc>]12;purple\x7" | |
6727 | 747 let &t_SR = "\<Esc>]12;red\x7" |
36 | 748 let &t_EI = "\<Esc>]12;blue\x7" |
749 endif | |
750 NOTE: When Vim exits the shape for Normal mode will remain. The shape from | |
751 before Vim started will not be restored. | |
30019
347cf03fee2b
patch 9.0.0347: MS-Windows: cannot set cursor shape in Windows Terminal
Bram Moolenaar <Bram@vim.org>
parents:
29885
diff
changeset
|
752 |
347cf03fee2b
patch 9.0.0347: MS-Windows: cannot set cursor shape in Windows Terminal
Bram Moolenaar <Bram@vim.org>
parents:
29885
diff
changeset
|
753 For Windows Terminal you can use something like this: > |
347cf03fee2b
patch 9.0.0347: MS-Windows: cannot set cursor shape in Windows Terminal
Bram Moolenaar <Bram@vim.org>
parents:
29885
diff
changeset
|
754 " Note: This should be set after `set termguicolors` or `set t_Co=256`. |
347cf03fee2b
patch 9.0.0347: MS-Windows: cannot set cursor shape in Windows Terminal
Bram Moolenaar <Bram@vim.org>
parents:
29885
diff
changeset
|
755 if &term =~ 'xterm' || &term == 'win32' |
347cf03fee2b
patch 9.0.0347: MS-Windows: cannot set cursor shape in Windows Terminal
Bram Moolenaar <Bram@vim.org>
parents:
29885
diff
changeset
|
756 " Use DECSCUSR escape sequences |
347cf03fee2b
patch 9.0.0347: MS-Windows: cannot set cursor shape in Windows Terminal
Bram Moolenaar <Bram@vim.org>
parents:
29885
diff
changeset
|
757 let &t_SI = "\e[5 q" " blink bar |
347cf03fee2b
patch 9.0.0347: MS-Windows: cannot set cursor shape in Windows Terminal
Bram Moolenaar <Bram@vim.org>
parents:
29885
diff
changeset
|
758 let &t_SR = "\e[3 q" " blink underline |
347cf03fee2b
patch 9.0.0347: MS-Windows: cannot set cursor shape in Windows Terminal
Bram Moolenaar <Bram@vim.org>
parents:
29885
diff
changeset
|
759 let &t_EI = "\e[1 q" " blink block |
33798
af1b18018eeb
runtime(doc): Fix whitespace and formatting of some help files (#13549)
Christian Brabandt <cb@256bit.org>
parents:
33715
diff
changeset
|
760 let &t_ti ..= "\e[1 q" " blink block |
af1b18018eeb
runtime(doc): Fix whitespace and formatting of some help files (#13549)
Christian Brabandt <cb@256bit.org>
parents:
33715
diff
changeset
|
761 let &t_te ..= "\e[0 q" " default (depends on terminal, normally blink |
af1b18018eeb
runtime(doc): Fix whitespace and formatting of some help files (#13549)
Christian Brabandt <cb@256bit.org>
parents:
33715
diff
changeset
|
762 " block) |
30019
347cf03fee2b
patch 9.0.0347: MS-Windows: cannot set cursor shape in Windows Terminal
Bram Moolenaar <Bram@vim.org>
parents:
29885
diff
changeset
|
763 endif |
347cf03fee2b
patch 9.0.0347: MS-Windows: cannot set cursor shape in Windows Terminal
Bram Moolenaar <Bram@vim.org>
parents:
29885
diff
changeset
|
764 |
2570
71b56b4e7785
Make the references to features in the help more consistent. (Sylvain Hitier)
Bram Moolenaar <bram@vim.org>
parents:
2561
diff
changeset
|
765 {not available when compiled without the |+cursorshape| feature} |
36 | 766 |
7 | 767 *termcap-title* |
768 The 't_ts' and 't_fs' options are used to set the window title if the terminal | |
769 allows title setting via sending strings. They are sent before and after the | |
770 title string, respectively. Similar 't_IS' and 't_IE' are used to set the | |
771 icon text. These are Vim-internal extensions of the Unix termcap, so they | |
772 cannot be obtained from an external termcap. However, the builtin termcap | |
773 contains suitable entries for xterm and iris-ansi, so you don't need to set | |
774 them here. | |
775 *hpterm* | |
776 If inversion or other highlighting does not work correctly, try setting the | |
777 't_xs' option to a non-empty string. This makes the 't_ce' code be used to | |
778 remove highlighting from a line. This is required for "hpterm". Setting the | |
779 'weirdinvert' option has the same effect as making 't_xs' non-empty, and vice | |
780 versa. | |
781 | |
782 *scroll-region* | |
19116 | 783 Some termcaps do not include an entry for "cs" (scroll region), although the |
7 | 784 terminal does support it. For example: xterm on a Sun. You can use the |
785 builtin_xterm or define t_cs yourself. For example: > | |
786 :set t_cs=^V^[[%i%d;%dr | |
787 Where ^V is CTRL-V and ^[ is <Esc>. | |
788 | |
789 The vertical scroll region t_CV is not a standard termcap code. Vim uses it | |
790 internally in the GUI. But it can also be defined for a terminal, if you can | |
791 find one that supports it. The two arguments are the left and right column of | |
792 the region which to restrict the scrolling to. Just like t_cs defines the top | |
793 and bottom lines. Defining t_CV will make scrolling in vertically split | |
794 windows a lot faster. Don't set t_CV when t_da or t_db is set (text isn't | |
795 cleared when scrolling). | |
796 | |
797 Unfortunately it is not possible to deduce from the termcap how cursor | |
798 positioning should be done when using a scrolling region: Relative to the | |
799 beginning of the screen or relative to the beginning of the scrolling region. | |
19116 | 800 Most terminals use the first method. The 't_CS' option should be set to any |
801 string when cursor positioning is relative to the start of the scrolling | |
802 region. It should be set to an empty string otherwise. | |
7 | 803 |
804 Note for xterm users: The shifted cursor keys normally don't work. You can | |
805 make them work with the xmodmap command and some mappings in Vim. | |
806 | |
807 Give these commands in the xterm: | |
808 xmodmap -e "keysym Up = Up F13" | |
809 xmodmap -e "keysym Down = Down F16" | |
810 xmodmap -e "keysym Left = Left F18" | |
811 xmodmap -e "keysym Right = Right F19" | |
812 | |
813 And use these mappings in Vim: | |
814 :map <t_F3> <S-Up> | |
815 :map! <t_F3> <S-Up> | |
816 :map <t_F6> <S-Down> | |
817 :map! <t_F6> <S-Down> | |
818 :map <t_F8> <S-Left> | |
819 :map! <t_F8> <S-Left> | |
820 :map <t_F9> <S-Right> | |
821 :map! <t_F9> <S-Right> | |
822 | |
823 Instead of, say, <S-Up> you can use any other command that you want to use the | |
824 shift-cursor-up key for. (Note: To help people that have a Sun keyboard with | |
825 left side keys F14 is not used because it is confused with the undo key; F15 | |
826 is not used, because it does a window-to-front; F17 is not used, because it | |
827 closes the window. On other systems you can probably use them.) | |
828 | |
829 ============================================================================== | |
830 3. Window size *window-size* | |
831 | |
832 [This is about the size of the whole window Vim is using, not a window that is | |
833 created with the ":split" command.] | |
834 | |
835 If you are running Vim on an Amiga and the terminal name is "amiga" or | |
836 "builtin_amiga", the amiga-specific window resizing will be enabled. On Unix | |
837 systems three methods are tried to get the window size: | |
838 | |
839 - an ioctl call (TIOCGSIZE or TIOCGWINSZ, depends on your system) | |
840 - the environment variables "LINES" and "COLUMNS" | |
841 - from the termcap entries "li" and "co" | |
842 | |
843 If everything fails a default size of 24 lines and 80 columns is assumed. If | |
844 a window-resize signal is received the size will be set again. If the window | |
845 size is wrong you can use the 'lines' and 'columns' options to set the | |
846 correct values. | |
847 | |
848 One command can be used to set the screen size: | |
8951
0bdeaf7092bc
commit https://github.com/vim/vim/commit/aa3b15dbebf333282503d6031e2f9ba6ee4398ed
Christian Brabandt <cb@256bit.org>
parents:
7272
diff
changeset
|
849 *:mod* *:mode* *E359* |
7 | 850 :mod[e] [mode] |
851 | |
852 Without argument this only detects the screen size and redraws the screen. | |
28010 | 853 [mode] was used on MS-DOS, but it doesn't work anymore. In |Vim9| this |
854 command is not supported. | |
7 | 855 |
856 ============================================================================== | |
857 4. Slow and fast terminals *slow-fast-terminal* | |
858 *slow-terminal* | |
859 | |
860 If you have a fast terminal you may like to set the 'ruler' option. The | |
861 cursor position is shown in the status line. If you are using horizontal | |
862 scrolling ('wrap' option off) consider setting 'sidescroll' to a small | |
863 number. | |
864 | |
865 If you have a slow terminal you may want to reset the 'showcmd' option. | |
866 The command characters will not be shown in the status line. If the terminal | |
867 scrolls very slowly, set the 'scrolljump' to 5 or so. If the cursor is moved | |
868 off the screen (e.g., with "j") Vim will scroll 5 lines at a time. Another | |
869 possibility is to reduce the number of lines that Vim uses with the command | |
870 "z{height}<CR>". | |
871 | |
872 If the characters from the terminal are arriving with more than 1 second | |
873 between them you might want to set the 'timeout' and/or 'ttimeout' option. | |
874 See the "Options" chapter |options|. | |
875 | |
876 If your terminal does not support a scrolling region, but it does support | |
877 insert/delete line commands, scrolling with multiple windows may make the | |
31229
5b71c3884a2a
patch 9.0.0948: 'ttyfast' is set for arbitrary terminals
Bram Moolenaar <Bram@vim.org>
parents:
30967
diff
changeset
|
878 lines jump up and down. This would happen if the 'ttyfast' option has been |
5b71c3884a2a
patch 9.0.0948: 'ttyfast' is set for arbitrary terminals
Bram Moolenaar <Bram@vim.org>
parents:
30967
diff
changeset
|
879 reset. Check that with: > |
5b71c3884a2a
patch 9.0.0948: 'ttyfast' is set for arbitrary terminals
Bram Moolenaar <Bram@vim.org>
parents:
30967
diff
changeset
|
880 verbose set ttyfast? |
7 | 881 |
882 If your terminal scrolls very slowly, but redrawing is not slow, set the | |
883 'ttyscroll' option to a small number, e.g., 3. This will make Vim redraw the | |
884 screen instead of scrolling, when there are more than 3 lines to be scrolled. | |
885 | |
886 If you are using a color terminal that is slow, use this command: > | |
887 hi NonText cterm=NONE ctermfg=NONE | |
888 This avoids that spaces are sent when they have different attributes. On most | |
889 terminals you can't see this anyway. | |
890 | |
891 If you are using Vim over a slow serial line, you might want to try running | |
892 Vim inside the "screen" program. Screen will optimize the terminal I/O quite | |
893 a bit. | |
894 | |
18972 | 895 If you are testing termcap options, but you cannot see what is happening, you |
896 might want to set the 'writedelay' option. When non-zero, one character is | |
897 sent to the terminal at a time. This makes the screen updating a lot slower, | |
898 making it possible to see what is happening. | |
7 | 899 |
900 ============================================================================== | |
901 5. Using the mouse *mouse-using* | |
902 | |
903 This section is about using the mouse on a terminal or a terminal window. How | |
904 to use the mouse in a GUI window is explained in |gui-mouse|. For scrolling | |
905 with a mouse wheel see |scroll-mouse-wheel|. | |
906 | |
2207
b17bbfa96fa0
Add the settabvar() and gettabvar() functions.
Bram Moolenaar <bram@vim.org>
parents:
2154
diff
changeset
|
907 Don't forget to enable the mouse with this command: > |
7 | 908 :set mouse=a |
909 Otherwise Vim won't recognize the mouse in all modes (See 'mouse'). | |
910 | |
1621 | 911 Currently the mouse is supported for Unix in an xterm window, in a *BSD |
18972 | 912 console with |sysmouse|, in a Linux console (with GPM |gpm-mouse|), and |
913 in a Windows console. | |
7 | 914 Mouse clicks can be used to position the cursor, select an area and paste. |
915 | |
916 These characters in the 'mouse' option tell in which situations the mouse will | |
917 be used by Vim: | |
918 n Normal mode | |
919 v Visual mode | |
920 i Insert mode | |
921 c Command-line mode | |
922 h all previous modes when in a help file | |
923 a all previous modes | |
924 r for |hit-enter| prompt | |
925 | |
926 The default for 'mouse' is empty, the mouse is not used. Normally you would | |
927 do: > | |
928 :set mouse=a | |
929 to start using the mouse (this is equivalent to setting 'mouse' to "nvich"). | |
930 If you only want to use the mouse in a few modes or also want to use it for | |
931 the two questions you will have to concatenate the letters for those modes. | |
932 For example: > | |
933 :set mouse=nv | |
934 Will make the mouse work in Normal mode and Visual mode. > | |
935 :set mouse=h | |
936 Will make the mouse work in help files only (so you can use "g<LeftMouse>" to | |
937 jump to tags). | |
938 | |
939 Whether the selection that is started with the mouse is in Visual mode or | |
940 Select mode depends on whether "mouse" is included in the 'selectmode' | |
941 option. | |
18465
d7619a9874cd
patch 8.1.2226: cannot use system copy/paste in non-xterm terminals
Bram Moolenaar <Bram@vim.org>
parents:
18299
diff
changeset
|
942 *terminal-mouse* |
7 | 943 In an xterm, with the currently active mode included in the 'mouse' option, |
944 normal mouse clicks are used by Vim, mouse clicks with the shift or ctrl key | |
945 pressed go to the xterm. With the currently active mode not included in | |
946 'mouse' all mouse clicks go to the xterm. | |
947 | |
18465
d7619a9874cd
patch 8.1.2226: cannot use system copy/paste in non-xterm terminals
Bram Moolenaar <Bram@vim.org>
parents:
18299
diff
changeset
|
948 For terminals where it is not possible to have the mouse events be used by the |
d7619a9874cd
patch 8.1.2226: cannot use system copy/paste in non-xterm terminals
Bram Moolenaar <Bram@vim.org>
parents:
18299
diff
changeset
|
949 terminal itself by using a modifier, a workaround is to not use mouse events |
d7619a9874cd
patch 8.1.2226: cannot use system copy/paste in non-xterm terminals
Bram Moolenaar <Bram@vim.org>
parents:
18299
diff
changeset
|
950 for Vim in command-line mode: > |
d7619a9874cd
patch 8.1.2226: cannot use system copy/paste in non-xterm terminals
Bram Moolenaar <Bram@vim.org>
parents:
18299
diff
changeset
|
951 :set mouse=nvi |
d7619a9874cd
patch 8.1.2226: cannot use system copy/paste in non-xterm terminals
Bram Moolenaar <Bram@vim.org>
parents:
18299
diff
changeset
|
952 Then to select text with the terminal, use ":" to go to command-line mode, |
d7619a9874cd
patch 8.1.2226: cannot use system copy/paste in non-xterm terminals
Bram Moolenaar <Bram@vim.org>
parents:
18299
diff
changeset
|
953 select and copy the text to the system, then press Esc. |
d7619a9874cd
patch 8.1.2226: cannot use system copy/paste in non-xterm terminals
Bram Moolenaar <Bram@vim.org>
parents:
18299
diff
changeset
|
954 |
d7619a9874cd
patch 8.1.2226: cannot use system copy/paste in non-xterm terminals
Bram Moolenaar <Bram@vim.org>
parents:
18299
diff
changeset
|
955 Another way is to temporarily use ":sh" to run a shell, copy the text, then |
d7619a9874cd
patch 8.1.2226: cannot use system copy/paste in non-xterm terminals
Bram Moolenaar <Bram@vim.org>
parents:
18299
diff
changeset
|
956 exit the shell. 'mouse' can remain set to "a" then. |
7 | 957 *xterm-clipboard* |
28379 | 958 In the Motif GUI version, when running in a terminal and there is |
7 | 959 access to the X-server (DISPLAY is set), the copy and paste will behave like |
960 in the GUI. If not, the middle mouse button will insert the unnamed register. | |
961 In that case, here is how you copy and paste a piece of text: | |
962 | |
963 Copy/paste with the mouse and Visual mode ('mouse' option must be set, see | |
964 above): | |
965 1. Press left mouse button on first letter of text, move mouse pointer to last | |
966 letter of the text and release the button. This will start Visual mode and | |
967 highlight the selected area. | |
968 2. Press "y" to yank the Visual text in the unnamed register. | |
969 3. Click the left mouse button at the insert position. | |
970 4. Click the middle mouse button. | |
971 | |
972 Shortcut: If the insert position is on the screen at the same time as the | |
973 Visual text, you can do 2, 3 and 4 all in one: Click the middle mouse button | |
974 at the insert position. | |
975 | |
976 Note: When the |-X| command line argument is used, Vim will not connect to the | |
977 X server and copy/paste to the X clipboard (selection) will not work. Use the | |
978 shift key with the mouse buttons to let the xterm do the selection. | |
979 | |
980 *xterm-command-server* | |
981 When the X-server clipboard is available, the command server described in | |
982 |x11-clientserver| can be enabled with the --servername command line argument. | |
983 | |
984 *xterm-copy-paste* | |
985 NOTE: In some (older) xterms, it's not possible to move the cursor past column | |
5908 | 986 95 or 223. This is an xterm problem, not Vim's. Get a newer xterm |
987 |color-xterm|. Also see |'ttymouse'|. | |
7 | 988 |
989 Copy/paste in xterm with (current mode NOT included in 'mouse'): | |
990 1. Press left mouse button on first letter of text, move mouse pointer to last | |
991 letter of the text and release the button. | |
992 2. Use normal Vim commands to put the cursor at the insert position. | |
993 3. Press "a" to start Insert mode. | |
994 4. Click the middle mouse button. | |
995 5. Press ESC to end Insert mode. | |
996 (The same can be done with anything in 'mouse' if you keep the shift key | |
997 pressed while using the mouse.) | |
998 | |
999 Note: if you lose the 8th bit when pasting (special characters are translated | |
1000 into other characters), you may have to do "stty cs8 -istrip -parenb" in your | |
1001 shell before starting Vim. | |
1002 | |
1003 Thus in an xterm the shift and ctrl keys cannot be used with the mouse. Mouse | |
1004 commands requiring the CTRL modifier can be simulated by typing the "g" key | |
1005 before using the mouse: | |
1006 "g<LeftMouse>" is "<C-LeftMouse> (jump to tag under mouse click) | |
1007 "g<RightMouse>" is "<C-RightMouse> ("CTRL-T") | |
1008 | |
1009 *mouse-mode-table* *mouse-overview* | |
1010 A short overview of what the mouse buttons do, when 'mousemodel' is "extend": | |
1011 | |
1012 Normal Mode: | |
1013 event position selection change action ~ | |
1014 cursor window ~ | |
1015 <LeftMouse> yes end yes | |
1016 <C-LeftMouse> yes end yes "CTRL-]" (2) | |
1017 <S-LeftMouse> yes no change yes "*" (2) *<S-LeftMouse>* | |
1018 <LeftDrag> yes start or extend (1) no *<LeftDrag>* | |
1019 <LeftRelease> yes start or extend (1) no | |
1020 <MiddleMouse> yes if not active no put | |
1021 <MiddleMouse> yes if active no yank and put | |
1022 <RightMouse> yes start or extend yes | |
600 | 1023 <A-RightMouse> yes start or extend blockw. yes *<A-RightMouse>* |
7 | 1024 <S-RightMouse> yes no change yes "#" (2) *<S-RightMouse>* |
1025 <C-RightMouse> no no change no "CTRL-T" | |
1026 <RightDrag> yes extend no *<RightDrag>* | |
1027 <RightRelease> yes extend no *<RightRelease>* | |
1028 | |
1029 Insert or Replace Mode: | |
1030 event position selection change action ~ | |
1031 cursor window ~ | |
1032 <LeftMouse> yes (cannot be active) yes | |
1033 <C-LeftMouse> yes (cannot be active) yes "CTRL-O^]" (2) | |
1034 <S-LeftMouse> yes (cannot be active) yes "CTRL-O*" (2) | |
1035 <LeftDrag> yes start or extend (1) no like CTRL-O (1) | |
1036 <LeftRelease> yes start or extend (1) no like CTRL-O (1) | |
1037 <MiddleMouse> no (cannot be active) no put register | |
1038 <RightMouse> yes start or extend yes like CTRL-O | |
600 | 1039 <A-RightMouse> yes start or extend blockw. yes |
7 | 1040 <S-RightMouse> yes (cannot be active) yes "CTRL-O#" (2) |
1041 <C-RightMouse> no (cannot be active) no "CTRL-O CTRL-T" | |
1042 | |
1043 In a help window: | |
1044 event position selection change action ~ | |
1045 cursor window ~ | |
1046 <2-LeftMouse> yes (cannot be active) no "^]" (jump to help tag) | |
1047 | |
1048 When 'mousemodel' is "popup", these are different: | |
1049 | |
1050 Normal Mode: | |
1051 event position selection change action ~ | |
1052 cursor window ~ | |
1053 <S-LeftMouse> yes start or extend (1) no | |
600 | 1054 <A-LeftMouse> yes start or extend blockw. no *<A-LeftMouse>* |
7 | 1055 <RightMouse> no popup menu no |
1056 | |
1057 Insert or Replace Mode: | |
1058 event position selection change action ~ | |
1059 cursor window ~ | |
1060 <S-LeftMouse> yes start or extend (1) no like CTRL-O (1) | |
600 | 1061 <A-LeftMouse> yes start or extend blockw. no |
7 | 1062 <RightMouse> no popup menu no |
1063 | |
1064 (1) only if mouse pointer moved since press | |
1065 (2) only if click is in same buffer | |
1066 | |
1067 Clicking the left mouse button causes the cursor to be positioned. If the | |
1068 click is in another window that window is made the active window. When | |
1069 editing the command-line the cursor can only be positioned on the | |
1070 command-line. When in Insert mode Vim remains in Insert mode. If 'scrolloff' | |
1071 is set, and the cursor is positioned within 'scrolloff' lines from the window | |
1072 border, the text is scrolled. | |
1073 | |
1074 A selection can be started by pressing the left mouse button on the first | |
1075 character, moving the mouse to the last character, then releasing the mouse | |
1076 button. You will not always see the selection until you release the button, | |
18972 | 1077 only in some versions (GUI, Win32) will the dragging be shown immediately. |
1078 Note that you can make the text scroll by moving the mouse at least one | |
1079 character in the first/last line in the window when 'scrolloff' is non-zero. | |
7 | 1080 |
1081 In Normal, Visual and Select mode clicking the right mouse button causes the | |
1082 Visual area to be extended. When 'mousemodel' is "popup", the left button has | |
1083 to be used while keeping the shift key pressed. When clicking in a window | |
1084 which is editing another buffer, the Visual or Select mode is stopped. | |
1085 | |
600 | 1086 In Normal, Visual and Select mode clicking the right mouse button with the alt |
1121 | 1087 key pressed causes the Visual area to become blockwise. When 'mousemodel' is |
600 | 1088 "popup" the left button has to be used with the alt key. Note that this won't |
853 | 1089 work on systems where the window manager consumes the mouse events when the |
1090 alt key is pressed (it may move the window). | |
600 | 1091 |
7 | 1092 *double-click* |
18972 | 1093 Double, triple and quadruple clicks are supported when the GUI is active, for |
1094 Win32, and for an xterm (if the gettimeofday() function is available). For | |
1095 selecting text, extra clicks extend the selection: | |
7 | 1096 click select ~ |
1097 double word or % match *<2-LeftMouse>* | |
1098 triple line *<3-LeftMouse>* | |
1099 quadruple rectangular block *<4-LeftMouse>* | |
1100 Exception: In a Help window a double click jumps to help for the word that is | |
1101 clicked on. | |
1102 A double click on a word selects that word. 'iskeyword' is used to specify | |
1103 which characters are included in a word. A double click on a character | |
1104 that has a match selects until that match (like using "v%"). If the match is | |
1105 an #if/#else/#endif block, the selection becomes linewise. | |
19116 | 1106 For MS-Windows and xterm the time for double clicking can be set with the |
1107 'mousetime' option. For the other systems this time is defined outside of Vim. | |
7 | 1108 An example, for using a double click to jump to the tag under the cursor: > |
27903 | 1109 :map <2-LeftMouse> :exe "tag " .. expand("<cword>")<CR> |
7 | 1110 |
1111 Dragging the mouse with a double click (button-down, button-up, button-down | |
1112 and then drag) will result in whole words to be selected. This continues | |
1113 until the button is released, at which point the selection is per character | |
1114 again. | |
1115 | |
30967 | 1116 For scrolling with the mouse see |scroll-mouse-wheel|. |
1117 | |
7 | 1118 *gpm-mouse* |
1119 The GPM mouse is only supported when the |+mouse_gpm| feature was enabled at | |
1120 compile time. The GPM mouse driver (Linux console) does not support quadruple | |
1121 clicks. | |
1122 | |
1123 In Insert mode, when a selection is started, Vim goes into Normal mode | |
1124 temporarily. When Visual or Select mode ends, it returns to Insert mode. | |
1125 This is like using CTRL-O in Insert mode. Select mode is used when the | |
1126 'selectmode' option contains "mouse". | |
1621 | 1127 *sysmouse* |
1128 The sysmouse is only supported when the |+mouse_sysmouse| feature was enabled | |
1129 at compile time. The sysmouse driver (*BSD console) does not support keyboard | |
1130 modifiers. | |
7 | 1131 |
1132 *drag-status-line* | |
1133 When working with several windows, the size of the windows can be changed by | |
1134 dragging the status line with the mouse. Point the mouse at a status line, | |
1135 press the left button, move the mouse to the new position of the status line, | |
1136 release the button. Just clicking the mouse in a status line makes that window | |
1137 the current window, without moving the cursor. If by selecting a window it | |
1138 will change position or size, the dragging of the status line will look | |
1139 confusing, but it will work (just try it). | |
1140 | |
1141 *<MiddleRelease>* *<MiddleDrag>* | |
1142 Mouse clicks can be mapped. The codes for mouse clicks are: | |
1143 code mouse button normal action ~ | |
1144 <LeftMouse> left pressed set cursor position | |
1145 <LeftDrag> left moved while pressed extend selection | |
1146 <LeftRelease> left released set selection end | |
1147 <MiddleMouse> middle pressed paste text at cursor position | |
1148 <MiddleDrag> middle moved while pressed - | |
1149 <MiddleRelease> middle released - | |
1150 <RightMouse> right pressed extend selection | |
1151 <RightDrag> right moved while pressed extend selection | |
1152 <RightRelease> right released set selection end | |
1153 <X1Mouse> X1 button pressed - *X1Mouse* | |
1154 <X1Drag> X1 moved while pressed - *X1Drag* | |
1155 <X1Release> X1 button release - *X1Release* | |
1156 <X2Mouse> X2 button pressed - *X2Mouse* | |
1157 <X2Drag> X2 moved while pressed - *X2Drag* | |
1158 <X2Release> X2 button release - *X2Release* | |
1159 | |
1160 The X1 and X2 buttons refer to the extra buttons found on some mice. The | |
1161 'Microsoft Explorer' mouse has these buttons available to the right thumb. | |
7272
17333ebd2bbd
commit https://github.com/vim/vim/commit/d042dc825c9b97dacd84d4728f88300da4d5b6b9
Christian Brabandt <cb@256bit.org>
parents:
6884
diff
changeset
|
1162 Currently X1 and X2 only work on Win32 and X11 environments. |
7 | 1163 |
1164 Examples: > | |
1165 :noremap <MiddleMouse> <LeftMouse><MiddleMouse> | |
1166 Paste at the position of the middle mouse button click (otherwise the paste | |
1167 would be done at the cursor position). > | |
1168 | |
1169 :noremap <LeftRelease> <LeftRelease>y | |
1170 Immediately yank the selection, when using Visual mode. | |
1171 | |
1172 Note the use of ":noremap" instead of "map" to avoid a recursive mapping. | |
1173 > | |
1174 :map <X1Mouse> <C-O> | |
1175 :map <X2Mouse> <C-I> | |
1176 Map the X1 and X2 buttons to go forwards and backwards in the jump list, see | |
1177 |CTRL-O| and |CTRL-I|. | |
1178 | |
1179 *mouse-swap-buttons* | |
1180 To swap the meaning of the left and right mouse buttons: > | |
1181 :noremap <LeftMouse> <RightMouse> | |
1182 :noremap <LeftDrag> <RightDrag> | |
1183 :noremap <LeftRelease> <RightRelease> | |
1184 :noremap <RightMouse> <LeftMouse> | |
1185 :noremap <RightDrag> <LeftDrag> | |
1186 :noremap <RightRelease> <LeftRelease> | |
1187 :noremap g<LeftMouse> <C-RightMouse> | |
1188 :noremap g<RightMouse> <C-LeftMouse> | |
1189 :noremap! <LeftMouse> <RightMouse> | |
1190 :noremap! <LeftDrag> <RightDrag> | |
1191 :noremap! <LeftRelease> <RightRelease> | |
1192 :noremap! <RightMouse> <LeftMouse> | |
1193 :noremap! <RightDrag> <LeftDrag> | |
1194 :noremap! <RightRelease> <LeftRelease> | |
1195 < | |
14421 | 1196 vim:tw=78:ts=8:noet:ft=help:norl: |