Christian Brabandt | b4ddc6c | 2024-01-02 16:51:11 +0100 | [diff] [blame] | 1 | *version4.txt* For Vim version 9.1. Last change: 2006 Apr 24 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2 | |
| 3 | |
| 4 | VIM REFERENCE MANUAL by Bram Moolenaar |
| 5 | |
| 6 | |
| 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.. |
| 9 | |
| 10 | This file is important for everybody upgrading from Vim 3.0. Read it |
| 11 | carefully to avoid unexpected problems. |
| 12 | |
| 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| |
| 29 | |
| 30 | |
| 31 | 'backup' option default changed *backup-changed* |
| 32 | ------------------------------- |
| 33 | |
| 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. |
| 36 | |
| 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'| |
| 42 | |
| 43 | |
| 44 | Extension for backup file changed *backup-extension* |
| 45 | --------------------------------- |
| 46 | |
| 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~". |
| 53 | |
| 54 | If you prefer to use ".bak", you can set the 'backupext' option: > |
| 55 | :set bex=.bak |
| 56 | |
| 57 | |
| 58 | Structure of swap file changed *swapfile-changed* |
| 59 | ------------------------------ |
| 60 | |
| 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. |
| 67 | |
| 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| |
| 71 | |
| 72 | |
| 73 | "-w scriptout" argument changed *scriptout-changed* |
| 74 | ------------------------------- |
| 75 | |
| 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| |
| 80 | |
| 81 | |
| 82 | Backspace and Delete keys *backspace-delete* |
| 83 | ------------------------- |
| 84 | |
| 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>| |
| 90 | |
| 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>| |
| 96 | |
| 97 | If you prefer backspace and delete in Insert mode to have the old behavior, |
| 98 | put this line in your vimrc: |
| 99 | |
| 100 | inoremap ^? ^H |
| 101 | |
| 102 | And you may also want to add these, to fix the values for <BS> and <Del>: |
| 103 | |
| 104 | set t_kb=^H |
| 105 | set t_kD=^? |
| 106 | |
| 107 | (Enter ^H with CTRL-V CTRL-H and ^? with CTRL-V CTRL-? or <Del>.) |
| 108 | |
| 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| |
| 112 | |
| 113 | When ^H is not recognized as <BS> or <Del>, it is used like a backspace. |
| 114 | |
| 115 | |
| 116 | Escape for | changed *escape-bar* |
| 117 | -------------------- |
| 118 | |
| 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|. |
| 123 | |
| 124 | |
| 125 | Key codes changed *key-codes-changed* |
| 126 | ----------------- |
| 127 | |
| 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| |
| 132 | |
| 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. |
| 138 | |
| 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'|. |
| 143 | |
| 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> |
| 159 | |
| 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 |
| 168 | |
| 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 |
| 179 | |
| 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 |
| 190 | |
| 191 | <HELP> <Help> 0x9c 156 0xcc 204 |
| 192 | <UNDO> <Undo> 0x9d 157 0xcd 205 |
| 193 | |
| 194 | (not used) 0x9e 158 0xce 206 |
| 195 | (not used) 0x9f 159 0xcf 207 |
| 196 | |
| 197 | |
| 198 | Terminal options changed *termcap-changed* |
| 199 | ------------------------ |
| 200 | |
| 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| |
| 206 | |
| 207 | Note that for some keys there is no termcap name. Use the <> type of name |
| 208 | instead, which is a good idea anyway. |
| 209 | |
| 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"! |
| 212 | |
| 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* |
| 241 | |
| 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* |
| 272 | |
| 273 | |
| 274 | 'errorformat' option changed *errorformat-changed* |
| 275 | ---------------------------- |
| 276 | |
| 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| |
| 280 | |
| 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. |
| 283 | |
| 284 | |
| 285 | 'graphic' option gone *graphic-option-gone* |
| 286 | --------------------- |
| 287 | |
| 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'| |
| 293 | |
| 294 | |
| 295 | 'yankendofline' option gone *ye-option-gone* |
| 296 | --------------------------- |
| 297 | |
| 298 | The 'yankendofline' option has been removed. Instead you can just use |
| 299 | :map Y y$ |
| 300 | |
| 301 | |
| 302 | 'icon' and 'title' default value changed *icon-changed* |
| 303 | ---------------------------------------- |
| 304 | |
| 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'| |
| 308 | |
| 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 |
| 313 | |
| 314 | |
| 315 | 'highlight' option changed *highlight-changed* |
| 316 | -------------------------- |
| 317 | |
| 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'| |
| 322 | |
| 323 | When an occasion is not present in 'highlight', use the mode from the default |
| 324 | value for 'highlight', instead of reverse mode. |
| 325 | |
| 326 | |
| 327 | 'tildeop' and 'weirdinvert' short names changed *short-name-changed* |
| 328 | ----------------------------------------------- |
| 329 | |
| 330 | Renamed 'to' (abbreviation for 'tildeop') to 'top'. |'tildeop'| |
| 331 | Renamed 'wi' (abbreviation for 'weirdinvert') to 'wiv'. |'weirdinvert'| |
| 332 | |
| 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. |
| 336 | |
| 337 | |
| 338 | Use of "v", "V" and "CTRL-V" in Visual mode *use-visual-cmds* |
| 339 | ------------------------------------------- |
| 340 | |
| 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| |
| 345 | |
| 346 | |
| 347 | CTRL-B in Insert mode removed *toggle-revins* |
| 348 | ----------------------------- |
| 349 | |
| 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'| |
| 354 | |
Bram Moolenaar | d473c8c | 2018-08-11 18:00:22 +0200 | [diff] [blame] | 355 | vim:tw=78:ts=8:noet:ft=help:norl: |