*version4.txt* For Vim version 6.1. Last change: 2001 Dec 11 VIM REFERENCE MANUAL by Bram Moolenaar This document lists the incompatible differences between Vim 3.0 and Vim 4.0. Although 4.0 is mentioned here, this is also for version 4.1, 4.2, etc.. This file is important for everybody upgrading from Vim 3.0. Read it carefully to avoid unexpected problems. 'backup' option default changed|backup-changed| Extension for backup file changed|backup-extension| Structure of swap file changed|swapfile-changed| "-w scriptout" argument changed|scriptout-changed| Backspace and Delete keys|backspace-delete| Escape for |changed|escape-bar| Key codes changed|key-codes-changed| Terminal options changed|termcap-changed| 'errorformat' option changed|errorformat-changed| 'graphic' option gone|graphic-option-gone| 'yankendofline' option gone|ye-option-gone| 'icon' and 'title' default value changed|icon-changed| 'highlight' option changed|highlight-changed| 'tildeop' and 'weirdinvert' short names changed|short-name-changed| Use of "v", "V" and "CTRL-V" in Visual mode|use-visual-cmds|CTRL-Bin Insert mode removed|toggle-revins| 'backup' option default changed*backup-changed*
The default value for 'backup' used to be on. This resulted in a backup file being made when the original file was overwritten. Now the default for 'backup' is off. As soon as the writing of the file has successfully finished, the backup file is deleted. If you want to keep the backup file, set 'backup' on in your vimrc. The reason for this change is that many people complained that leaving a backup file behind is not Vi-compatible.|'backup'| Extension for backup file changed*backup-extension*
The extension for the backup file used to be ".bak". Since other programs also use this extension and some users make copies with this extension, it was changed to the less obvious "~". Another advantage is that this takes less space, which is useful when working on a system with short file names. For example, on MS-DOS the backup files for "longfile.c" and "longfile.h" would both become "longfile.bak"; now they will be "longfile.c~" and "longfile.h~". If you prefer to use ".bak", you can set the 'backupext' option::set bex=.bak|'backupext'|Structure of swap file changed*swapfile-changed*
The contents of the swap file were extended with several parameters. Vim stores the user name and other information about the edited file to make recovery more easy and to be able to know where the swap file comes from. The first part of the swap file can now be understood on a machine with a different byte order or sizeof(int). When you try to recover a file on such a machine, you will get an error message that this is not possible. Because of this change, swap files cannot be exchanged between 3.0 and 4.0. If you have a swap file from a crashed session with 3.0, use Vim 3.0 to recover the file---don't use 4.0.|swap-file| "-w scriptout" argument changed*scriptout-changed*
"vim -w scriptout" used to append to the scriptout file. Since this was illogical, it now creates a new file. An existing file is not overwritten (to avoid destroying an existing file for those who rely on the appending). [This was removed again later]|-w| Backspace and Delete keys*backspace-delete*
In 3.0 both the delete key and the backspace key worked as a backspace in insert mode; they deleted the character to the left of the cursor. In 4.0 the delete key has a new function: it deletes the character under the cursor, just like it does on the command-line. If the cursor is after the end of the line and 'bs' is set, two lines are joined.|<Del>| |i_<Del>| In 3.0 the backspace key was always defined asCTRL-Hand delete as CTRL-?. In 4.0 the code for the backspace and delete key is obtained from termcap or termlib, and adjusted for the "stty erase" value on Unix. This helps people who define the erase character according to the keyboard they are working on. |<BS>| |i_<BS>| If you prefer backspace and delete in Insert mode to have the old behavior, put this line in your vimrc: inoremap ^? ^H And you may also want to add these, to fix the values for<BS>and<Del>: set t_kb=^H set t_kD=^? (Enter ^H withCTRL-VCTRL-Hand ^? withCTRL-VCTRL-? or<Del>.) If the value for t_kb is correct, but the t_kD value is not, use the ":fixdel" command. It will set t_kD according to the value of t_kb. This is useful if you are using several different terminals.|:fixdel| When ^H is not recognized as<BS>or<Del>, it is used like a backspace. Escape for | changed*escape-bar*
When the 'b' flag is present in 'cpoptions', the backslash cannot be used to escape '|' in mapping and abbreviate commands, onlyCTRL-Vcan. This is Vi-compatible. If you work in Vi-compatible mode and had used "\|" to include a bar in a mapping, this needs to be replaced by "^V|". See|:bar|. Key codes changed*key-codes-changed*
The internal representation of key codes has changed dramatically. In 3.0 a one-byte code was used to represent a key. This caused problems with different characters sets that also used these codes. In 4.0 a three-byte code is used that cannot be confused with a character.|key-notation| If you have used the single-byte key codes in your vimrc for mappings, you will have to replace them with the 4.0 codes. Instead of using the three-byte code directly, you should use the symbolic representation for this in<>. See the table below. The table also lists the old name, as it was used in the 3.0 documentation. The key names in<>can be used in mappings directly. This makes it possible to copy/paste examples or type them literally. The<>notation has been introduced for this |<>|. The 'B' and '<' flags must not be present in 'cpoptions' to enable this to work |'cpoptions'|.old namenew name old codeold MS-DOS codehexdechexdec<ESC><Esc><TAB><Tab><LF><NL><NewLine><LineFeed><SPACE><Space><NUL><Nul><BELL><Bell><BS><BS><BackSpace><INSERT><Insert><DEL><Del><Delete><HOME><Home><END><End><PAGE_UP><PageUp><PAGE_DOWN><PageDown><C_UP><Up>0x801280xb0176<C_DOWN><Down>0x81129 0xb1177<C_LEFT><Left>0x82130 0xb2178<C_RIGHT><Right>0x83131 0xb3179<SC_UP><S-Up>0x84132 0xb4180<SC_DOWN><S-Down>0x85133 0xb5181<SC_LEFT><S-Left>0x86134 0xb6182<SC_RIGHT><S-Right>0x87135 0xb7183<F1><F1>0x88136 0xb8184<F2><F2>0x89137 0xb9185<F3><F3>0x8a138 0xba186<F4><F4>0x8b139 0xbb187<F5><F5>0x8c140 0xbc188<F6><F6>0x8d141 0xbd189<F7><F7>0x8e142 0xbe190<F8><F8>0x8f143 0xbf191<F9><F9>0x90144 0xc0192<F10><F10>0x91145 0xc1193<SF1><S-F1>0x92146 0xc2194<SF2><S-F2>0x93147 0xc3195<SF3><S-F3>0x94148 0xc4196<SF4><S-F4>0x95149 0xc5197<SF5><S-F5>0x96150 0xc6198<SF6><S-F6>0x97151 0xc7199<SF7><S-F7>0x98152 0xc8200<SF8><S-F8>0x99153 0xc9201<SF9><S-F9>0x9a154 0xca202<SF10><S-F10>0x9b155 0xcb203<HELP><Help>0x9c156 0xcc204<UNDO><Undo>0x9d157 0xcd205 (not used)0x9e158 0xce206 (not used)0x9f159 0xcf207 Terminal options changed*termcap-changed*
The names of the terminal options have been changed to match the termcap names of these options. All terminal options now have the name t_xx, where xx is the termcap name. Normally these options are not used, unless you have a termcap entry that is wrong or incomplete, or you have set the highlight options to a different value.|terminal-options|Notethat for some keys there is no termcap name. Use the<>type of name instead, which is a good idea anyway.Notethat "t_ti" has become "t_mr" (invert/reverse output) and "t_ts" has become "t_ti" (init terminal mode). Be careful when you use "t_ti"!old namenew namemeaningt_cdlt_DLdelete number of lines*t_cdl* t_cit_vicursor invisible*t_ci* t_cilt_ALinsert number of lines*t_cil* t_cmt_cmmove cursor t_crit_RIcursor number of chars right*t_cri* t_cvt_vecursor visible*t_cv* t_cvvt_vscursor very visible*t_cvv* t_dlt_dldelete line t_cst_csscroll region t_edt_clclear display*t_ed* t_elt_ceclear line*t_el* t_ilt_alinsert line*t_il* t_dadisplay may be retained above the screen t_dbdisplay may be retained below the screen t_ket_keput terminal out of keypad transmit mode t_kst_ksput terminal in keypad transmit mode t_mst_mssave to move cursor in highlight mode t_set_senormal mode (undo t_so) t_sot_soshift out (standout) mode t_tit_mrreverse highlight t_tbt_mdbold mode*t_tb* t_tpt_mehighlight end*t_tp* t_srt_srscroll reverse t_tet_teout of termcap mode t_tst_tiinto termcap mode*t_ts_old* t_vbt_vbvisual bell t_csct_CScursor is relative to scroll region *t_csc* t_kut_ku<Up>arrow up t_kdt_kd<Down>arrow down t_krt_kr<Right>arrow right t_klt_kl<Left>arrow left t_sku<S-Up>shifted arrow up*t_sku* t_skd<S-Down>shifted arrow down*t_skd* t_skrt_%i<S-Right>shifted arrow right*t_skr* t_sklt_#4<S-Left>shifted arrow left*t_skl* t_f1t_k1<F1>function key 1*t_f1* t_f2t_k2<F2>function key 2*t_f2* t_f3t_k3<F3>function key 3*t_f3* t_f4t_k4<F4>function key 4*t_f4* t_f5t_k5<F5>function key 5*t_f5* t_f6t_k6<F6>function key 6*t_f6* t_f7t_k7<F7>function key 7*t_f7* t_f8t_k8<F8>function key 8*t_f8* t_f9t_k9<F9>function key 9*t_f9* t_f10t_k;<F10>function key 10*t_f10* t_sf1<S-F1>shifted function key 1*t_sf1* t_sf2<S-F2>shifted function key 2*t_sf2* t_sf3<S-F3>shifted function key 3*t_sf3* t_sf4<S-F4>shifted function key 4*t_sf4* t_sf5<S-F5>shifted function key 5*t_sf5* t_sf6<S-F6>shifted function key 6*t_sf6* t_sf7<S-F7>shifted function key 7*t_sf7* t_sf8<S-F8>shifted function key 8*t_sf8* t_sf9<S-F9>shifted function key 9*t_sf9* t_sf10<S-F10>shifted function key 10*t_sf10* t_helpt_%1<Help>help key*t_help* t_undot_&8<Undo>undo key*t_undo* 'errorformat' option changed*errorformat-changed*
'errorformat' can now contain several formats, separated by commas. The first format that matches is used. The default values have been adjusted to catch the most common formats.|errorformat| If you have a format that contains a comma, it needs to be preceded with a backslash. Type two backslashes, because the ":set" command will eat one. 'graphic' option gone*graphic-option-gone*
The 'graphic' option was used to make the characters between <~> and 0xa0
display directly on the screen. Now the 'isprint' option takes care of this
with many more possibilities. The default setting is the same; you only need
to look into this if you previously set the 'graphic' option in your vimrc.
|'isprint'|
'yankendofline' option gone*ye-option-gone*
The 'yankendofline' option has been removed. Instead you can just use :map Y y$ 'icon' and 'title' default value changed*icon-changed*
The 'title' option is now only set by default if the original title can be restored. Avoids 'Thanks for flying Vim" titles. If you want them anyway, put ":set title" in your vimrc.|'title'| The default for 'icon' now depends on the possibility of restoring the original value, just like 'title'. If you don't like your icon titles to be changed, add this line to your vimrc:|'icon'| :set noicon 'highlight' option changed*highlight-changed*
The 'i' flag now means italic highlighting, instead of invert. The 'r' flag is used for reverse highlighting, which is what 'i' used to be. Normally you won't see the difference, because italic mode is not supported on most terminals and reverse mode is used as a fallback.|'highlight'| When an occasion is not present in 'highlight', use the mode from the default value for 'highlight', instead of reverse mode. 'tildeop' and 'weirdinvert' short names changed*short-name-changed*
Renamed 'to' (abbreviation for 'tildeop') to 'top'.|'tildeop'|
Renamed 'wi' (abbreviation for 'weirdinvert') to 'wiv'.|'weirdinvert'|
This was done because Vi uses 'wi' as the short name for 'window' and 'to' as
the short name for 'timeout'. This means that if you try setting these
options, you won't get an error message, but the effect will be different.
Use of "v", "V" and "CTRL-V" in Visual mode*use-visual-cmds*
In Visual mode, "v", "V", and "CTRL-V" used to end Visual mode. Now this happens only if the Visual mode was in the corresponding type. Otherwise the type of Visual mode is changed. Now only ESC can be used in all circumstances to end Visual mode without doing anything.|v_V|CTRL-Bin Insert mode removed*toggle-revins*
CTRL-Bin Insert mode used to toggle the 'revins' option. If you don't know this and accidentally hitCTRL-B, it is very difficult to find out how to undo it. Since hardly anybody uses this feature, it is disabled by default. If you want to use it, define RIGHTLEFT in feature.h before compiling. |'revins'| vim:tw=78:ts=8:ft=help:norl:
Generated by vim2html on Sat May 4 18:38:43 CEST 2002