Fix placement of auxiliary IM window for Core Text
[MacVim.git] / runtime / doc / version4.txt
blob82a1bbe746d55c32a9715d860a310c3a4ec29142
1 *version4.txt*  For Vim version 7.2.  Last change: 2006 Apr 24
4                   VIM REFERENCE MANUAL    by Bram Moolenaar
7 This document lists the incompatible differences between Vim 3.0 and Vim 4.0.
8 Although 4.0 is mentioned here, this is also for version 4.1, 4.2, etc..
10 This file is important for everybody upgrading from Vim 3.0.  Read it
11 carefully to avoid unexpected problems.
13 'backup' option default changed                 |backup-changed|
14 Extension for backup file changed               |backup-extension|
15 Structure of swap file changed                  |swapfile-changed|
16 "-w scriptout" argument changed                 |scriptout-changed|
17 Backspace and Delete keys                       |backspace-delete|
18 Escape for | changed                            |escape-bar|
19 Key codes changed                               |key-codes-changed|
20 Terminal options changed                        |termcap-changed|
21 'errorformat' option changed                    |errorformat-changed|
22 'graphic' option gone                           |graphic-option-gone|
23 'yankendofline' option gone                     |ye-option-gone|
24 'icon' and 'title' default value changed        |icon-changed|
25 'highlight' option changed                      |highlight-changed|
26 'tildeop' and 'weirdinvert' short names changed |short-name-changed|
27 Use of "v", "V" and "CTRL-V" in Visual mode     |use-visual-cmds|
28 CTRL-B in Insert mode removed                   |toggle-revins|
31 'backup' option default changed                         *backup-changed*
32 -------------------------------
34 The default value for 'backup' used to be on.  This resulted in a backup file
35 being made when the original file was overwritten.
37 Now the default for 'backup' is off.  As soon as the writing of the file has
38 successfully finished, the backup file is deleted.  If you want to keep the
39 backup file, set 'backup' on in your vimrc.  The reason for this change is
40 that many people complained that leaving a backup file behind is not
41 Vi-compatible.                                          |'backup'|
44 Extension for backup file changed                       *backup-extension*
45 ---------------------------------
47 The extension for the backup file used to be ".bak".  Since other programs
48 also use this extension and some users make copies with this extension, it was
49 changed to the less obvious "~".  Another advantage is that this takes less
50 space, which is useful when working on a system with short file names.  For
51 example, on MS-DOS the backup files for "longfile.c" and "longfile.h" would
52 both become "longfile.bak"; now they will be "longfile.c~" and "longfile.h~".
54 If you prefer to use ".bak", you can set the 'backupext' option: >
55         :set bex=.bak
58 Structure of swap file changed                          *swapfile-changed*
59 ------------------------------
61 The contents of the swap file were extended with several parameters.  Vim
62 stores the user name and other information about the edited file to make
63 recovery more easy and to be able to know where the swap file comes from.  The
64 first part of the swap file can now be understood on a machine with a
65 different byte order or sizeof(int).  When you try to recover a file on such a
66 machine, you will get an error message that this is not possible.
68 Because of this change, swap files cannot be exchanged between 3.0 and 4.0.
69 If you have a swap file from a crashed session with 3.0, use Vim 3.0 to
70 recover the file---don't use 4.0.                       |swap-file|
73 "-w scriptout" argument changed                         *scriptout-changed*
74 -------------------------------
76 "vim -w scriptout" used to append to the scriptout file.  Since this was
77 illogical, it now creates a new file.  An existing file is not overwritten
78 (to avoid destroying an existing file for those who rely on the appending).
79 [This was removed again later]                                  |-w|
82 Backspace and Delete keys                               *backspace-delete*
83 -------------------------
85 In 3.0 both the delete key and the backspace key worked as a backspace in
86 insert mode; they deleted the character to the left of the cursor.  In 4.0 the
87 delete key has a new function: it deletes the character under the cursor, just
88 like it does on the command-line.  If the cursor is after the end of the line
89 and 'bs' is set, two lines are joined.                  |<Del>| |i_<Del>|
91 In 3.0 the backspace key was always defined as CTRL-H and delete as CTRL-?.
92 In 4.0 the code for the backspace and delete key is obtained from termcap or
93 termlib, and adjusted for the "stty erase" value on Unix.  This helps people
94 who define the erase character according to the keyboard they are working on.
95                                                         |<BS>| |i_<BS>|
97 If you prefer backspace and delete in Insert mode to have the old behavior,
98 put this line in your vimrc:
100         inoremap ^? ^H
102 And you may also want to add these, to fix the values for <BS> and <Del>:
104         set t_kb=^H
105         set t_kD=^?
107 (Enter ^H with CTRL-V CTRL-H and ^? with CTRL-V CTRL-? or <Del>.)
109 If the value for t_kb is correct, but the t_kD value is not, use the ":fixdel"
110 command.  It will set t_kD according to the value of t_kb.  This is useful if
111 you are using several different terminals.              |:fixdel|
113 When ^H is not recognized as <BS> or <Del>, it is used like a backspace.
116 Escape for | changed                                    *escape-bar*
117 --------------------
119 When the 'b' flag is present in 'cpoptions', the backslash cannot be used to
120 escape '|' in mapping and abbreviate commands, only CTRL-V can.  This is
121 Vi-compatible.  If you work in Vi-compatible mode and had used "\|" to include
122 a bar in a mapping, this needs to be replaced by "^V|".  See |:bar|.
125 Key codes changed                                       *key-codes-changed*
126 -----------------
128 The internal representation of key codes has changed dramatically.  In 3.0 a
129 one-byte code was used to represent a key.  This caused problems with
130 different characters sets that also used these codes.  In 4.0 a three-byte
131 code is used that cannot be confused with a character.          |key-notation|
133 If you have used the single-byte key codes in your vimrc for mappings, you
134 will have to replace them with the 4.0 codes.  Instead of using the three-byte
135 code directly, you should use the symbolic representation for this in <>.  See
136 the table below.  The table also lists the old name, as it was used in the 3.0
137 documentation.
139 The key names in <> can be used in mappings directly.  This makes it possible
140 to copy/paste examples or type them literally.  The <> notation has been
141 introduced for this |<>|.  The 'B' and '<' flags must not be present in
142 'cpoptions' to enable this to work |'cpoptions'|.
144 old name        new name          old code      old MS-DOS code ~
145                                 hex     dec     hex     dec     ~
146 <ESC>           <Esc>
147 <TAB>           <Tab>
148 <LF>            <NL> <NewLine> <LineFeed>
149 <SPACE>         <Space>
150 <NUL>           <Nul>
151 <BELL>          <Bell>
152 <BS>            <BS> <BackSpace>
153 <INSERT>        <Insert>
154 <DEL>           <Del> <Delete>
155 <HOME>          <Home>
156 <END>           <End>
157 <PAGE_UP>       <PageUp>
158 <PAGE_DOWN>     <PageDown>
160 <C_UP>          <Up>            0x80    128     0xb0    176
161 <C_DOWN>        <Down>          0x81    129     0xb1    177
162 <C_LEFT>        <Left>          0x82    130     0xb2    178
163 <C_RIGHT>       <Right>         0x83    131     0xb3    179
164 <SC_UP>         <S-Up>          0x84    132     0xb4    180
165 <SC_DOWN>       <S-Down>        0x85    133     0xb5    181
166 <SC_LEFT>       <S-Left>        0x86    134     0xb6    182
167 <SC_RIGHT>      <S-Right>       0x87    135     0xb7    183
169 <F1>            <F1>            0x88    136     0xb8    184
170 <F2>            <F2>            0x89    137     0xb9    185
171 <F3>            <F3>            0x8a    138     0xba    186
172 <F4>            <F4>            0x8b    139     0xbb    187
173 <F5>            <F5>            0x8c    140     0xbc    188
174 <F6>            <F6>            0x8d    141     0xbd    189
175 <F7>            <F7>            0x8e    142     0xbe    190
176 <F8>            <F8>            0x8f    143     0xbf    191
177 <F9>            <F9>            0x90    144     0xc0    192
178 <F10>           <F10>           0x91    145     0xc1    193
180 <SF1>           <S-F1>          0x92    146     0xc2    194
181 <SF2>           <S-F2>          0x93    147     0xc3    195
182 <SF3>           <S-F3>          0x94    148     0xc4    196
183 <SF4>           <S-F4>          0x95    149     0xc5    197
184 <SF5>           <S-F5>          0x96    150     0xc6    198
185 <SF6>           <S-F6>          0x97    151     0xc7    199
186 <SF7>           <S-F7>          0x98    152     0xc8    200
187 <SF8>           <S-F8>          0x99    153     0xc9    201
188 <SF9>           <S-F9>          0x9a    154     0xca    202
189 <SF10>          <S-F10>         0x9b    155     0xcb    203
191 <HELP>          <Help>          0x9c    156     0xcc    204
192 <UNDO>          <Undo>          0x9d    157     0xcd    205
194                 (not used)      0x9e    158     0xce    206
195                 (not used)      0x9f    159     0xcf    207
198 Terminal options changed                                *termcap-changed*
199 ------------------------
201 The names of the terminal options have been changed to match the termcap names
202 of these options.  All terminal options now have the name t_xx, where xx is
203 the termcap name.  Normally these options are not used, unless you have a
204 termcap entry that is wrong or incomplete, or you have set the highlight
205 options to a different value.                           |terminal-options|
207 Note that for some keys there is no termcap name.  Use the <> type of name
208 instead, which is a good idea anyway.
210 Note that "t_ti" has become "t_mr" (invert/reverse output) and "t_ts" has
211 become "t_ti" (init terminal mode).  Be careful when you use "t_ti"!
213 old name        new name        meaning         ~
214 t_cdl           t_DL            delete number of lines          *t_cdl*
215 t_ci            t_vi            cursor invisible                *t_ci*
216 t_cil           t_AL            insert number of lines          *t_cil*
217 t_cm            t_cm            move cursor
218 t_cri           t_RI            cursor number of chars right    *t_cri*
219 t_cv            t_ve            cursor visible                  *t_cv*
220 t_cvv           t_vs            cursor very visible             *t_cvv*
221 t_dl            t_dl            delete line
222 t_cs            t_cs            scroll region
223 t_ed            t_cl            clear display                   *t_ed*
224 t_el            t_ce            clear line                      *t_el*
225 t_il            t_al            insert line                     *t_il*
226                 t_da            display may be retained above the screen
227                 t_db            display may be retained below the screen
228 t_ke            t_ke            put terminal out of keypad transmit mode
229 t_ks            t_ks            put terminal in keypad transmit mode
230 t_ms            t_ms            save to move cursor in highlight mode
231 t_se            t_se            normal mode (undo t_so)
232 t_so            t_so            shift out (standout) mode
233 t_ti            t_mr            reverse highlight
234 t_tb            t_md            bold mode                       *t_tb*
235 t_tp            t_me            highlight end                   *t_tp*
236 t_sr            t_sr            scroll reverse
237 t_te            t_te            out of termcap mode
238 t_ts            t_ti            into termcap mode               *t_ts_old*
239 t_vb            t_vb            visual bell
240 t_csc           t_CS            cursor is relative to scroll region *t_csc*
242 t_ku    t_ku    <Up>            arrow up
243 t_kd    t_kd    <Down>          arrow down
244 t_kr    t_kr    <Right>         arrow right
245 t_kl    t_kl    <Left>          arrow left
246 t_sku           <S-Up>          shifted arrow up                *t_sku*
247 t_skd           <S-Down>        shifted arrow down              *t_skd*
248 t_skr   t_%i    <S-Right>       shifted arrow right             *t_skr*
249 t_skl   t_#4    <S-Left>        shifted arrow left              *t_skl*
250 t_f1    t_k1    <F1>            function key 1                  *t_f1*
251 t_f2    t_k2    <F2>            function key 2                  *t_f2*
252 t_f3    t_k3    <F3>            function key 3                  *t_f3*
253 t_f4    t_k4    <F4>            function key 4                  *t_f4*
254 t_f5    t_k5    <F5>            function key 5                  *t_f5*
255 t_f6    t_k6    <F6>            function key 6                  *t_f6*
256 t_f7    t_k7    <F7>            function key 7                  *t_f7*
257 t_f8    t_k8    <F8>            function key 8                  *t_f8*
258 t_f9    t_k9    <F9>            function key 9                  *t_f9*
259 t_f10   t_k;    <F10>           function key 10                 *t_f10*
260 t_sf1           <S-F1>          shifted function key 1          *t_sf1*
261 t_sf2           <S-F2>          shifted function key 2          *t_sf2*
262 t_sf3           <S-F3>          shifted function key 3          *t_sf3*
263 t_sf4           <S-F4>          shifted function key 4          *t_sf4*
264 t_sf5           <S-F5>          shifted function key 5          *t_sf5*
265 t_sf6           <S-F6>          shifted function key 6          *t_sf6*
266 t_sf7           <S-F7>          shifted function key 7          *t_sf7*
267 t_sf8           <S-F8>          shifted function key 8          *t_sf8*
268 t_sf9           <S-F9>          shifted function key 9          *t_sf9*
269 t_sf10          <S-F10>         shifted function key 10         *t_sf10*
270 t_help  t_%1    <Help>          help key                        *t_help*
271 t_undo  t_&8    <Undo>          undo key                        *t_undo*
274 'errorformat' option changed                            *errorformat-changed*
275 ----------------------------
277 'errorformat' can now contain several formats, separated by commas.  The first
278 format that matches is used.  The default values have been adjusted to catch
279 the most common formats.                                |errorformat|
281 If you have a format that contains a comma, it needs to be preceded with a
282 backslash.  Type two backslashes, because the ":set" command will eat one.
285 'graphic' option gone                                   *graphic-option-gone*
286 ---------------------
288 The 'graphic' option was used to make the characters between <~> and 0xa0
289 display directly on the screen.  Now the 'isprint' option takes care of this
290 with many more possibilities.  The default setting is the same; you only need
291 to look into this if you previously set the 'graphic' option in your vimrc.
292                                                         |'isprint'|
295 'yankendofline' option gone                             *ye-option-gone*
296 ---------------------------
298 The 'yankendofline' option has been removed.  Instead you can just use
299         :map Y y$
302 'icon' and 'title' default value changed                *icon-changed*
303 ----------------------------------------
305 The 'title' option is now only set by default if the original title can be
306 restored.  Avoids "Thanks for flying Vim" titles.  If you want them anyway,
307 put ":set title" in your vimrc.                         |'title'|
309 The default for 'icon' now depends on the possibility of restoring the
310 original value, just like 'title'.  If you don't like your icon titles to be
311 changed, add this line to your vimrc:                   |'icon'|
312         :set noicon
315 'highlight' option changed                              *highlight-changed*
316 --------------------------
318 The 'i' flag now means italic highlighting, instead of invert.  The 'r' flag
319 is used for reverse highlighting, which is what 'i' used to be.  Normally you
320 won't see the difference, because italic mode is not supported on most
321 terminals and reverse mode is used as a fallback.       |'highlight'|
323 When an occasion is not present in 'highlight', use the mode from the default
324 value for 'highlight', instead of reverse mode.
327 'tildeop' and 'weirdinvert' short names changed         *short-name-changed*
328 -----------------------------------------------
330 Renamed 'to' (abbreviation for 'tildeop') to 'top'.     |'tildeop'|
331 Renamed 'wi' (abbreviation for 'weirdinvert') to 'wiv'. |'weirdinvert'|
333 This was done because Vi uses 'wi' as the short name for 'window' and 'to' as
334 the short name for 'timeout'.  This means that if you try setting these
335 options, you won't get an error message, but the effect will be different.
338 Use of "v", "V" and "CTRL-V" in Visual mode             *use-visual-cmds*
339 -------------------------------------------
341 In Visual mode, "v", "V", and "CTRL-V" used to end Visual mode.  Now this
342 happens only if the Visual mode was in the corresponding type.  Otherwise the
343 type of Visual mode is changed.  Now only ESC can be used in all circumstances
344 to end Visual mode without doing anything.              |v_V|
347 CTRL-B in Insert mode removed                           *toggle-revins*
348 -----------------------------
350 CTRL-B in Insert mode used to toggle the 'revins' option.  If you don't know
351 this and accidentally hit CTRL-B, it is very difficult to find out how to undo
352 it.  Since hardly anybody uses this feature, it is disabled by default.  If
353 you want to use it, define RIGHTLEFT in feature.h before compiling. |'revins'|
355  vim:tw=78:ts=8:ft=help:norl: