*version4.txt* For Vim version 7.1. 最近改变: 2006年2月 VIM 参考手册 by Bram Moolenaar 译者: Willis http://vimcdoc.sf.net 本文档列出 Vim 3.0 和 Vim 4.0 不兼容的不同之处。尽管这里提到 4.0,但也适用于 4.1,4.2 版本等。 本文件对所有从 Vim 3.0 升级的用户很重要。仔细阅读以避免意想不到的问题。 'backup' 选项改变缺省值 |backup-changed| 备份文件扩展名改变 |backup-extension| 交换文件结构改变 |swapfile-changed| "-w scriptout" 参数改变 |scriptout-changed| 退格和删除键 |backspace-delete| |转义键改变
|escape-bar| 键码改变 |key-codes-changed| 终端选项改变 |termcap-changed| 'errorformat' 选项改变 |errorformat-changed| 不再有 'graphic' 选项 |graphic-option-gone| 不再有 'yankendofline' 选项 |ye-option-gone| 'icon' 和 'title' 缺省值改变 |icon-changed| 'highlight' 选项改变 |highlight-changed| 'tildeop' 和 'weirdinvert' 缩写改变 |short-name-changed| "v"、"V" 和 "CTRL-V
" 在可视模式的改变 |use-visual-cmds| 删除插入模式的CTRL-B
功能 |toggle-revins| 'backup' 选项改变缺省值 *backup-changed*
过去 'backup' 缺省值是打开的。结果是在原来文件被覆盖的时候备份文件建立起来。 现在 'backup' 的缺省值是关闭。一旦文件成功的写入,备份文件就删除了。如果你想保 留备份文件,在你的 vimrc 文件里置位 'backup'。这个改变的原因是许多人抱怨留下备 份文件和 Vi 不兼容。 |'backup'| 备份文件扩展名改变 *backup-extension*
过去备份文件的扩展名是 '.bak'。因为别的程序也用这个扩展名,而且有的用户也自己 建立用这个扩展名的备份,现在换成了不太明显的 "~"。另外一个好处是这样使用较少的 空间,尤其是对短文件名的系统很有效。比如,在 MS-DOS 上 "longfile.c" 和 "longfile.h" 用的备份文件名本来都是 "longfile.bak";现在他们分别成为 "longfile.c~" 和 "longfile.h~"。 如果你宁可还是使用 ".bak",你可以设置 'backupext' 选项::set bex=.bak
交换文件结构改变 *swapfile-changed*
交换文件的内容增加了若干参数。Vim 保存用户名字和被编辑文件的其它信息,使得恢复 更加容易,而且能知道交换文件是从哪里来的。交换文件的第一部分可以识别字节顺序或 者 sizeof(int) 不同的机器,当你在这样的机器上试图恢复时,你会得到错误信息,提 示这不可能。 因为这个改变,3.0 和 4.0 的交换文件不能互换。如果你有一个 3.0 的崩溃对话的交换 文件,用 Vim 3.0 恢复之---不要用 4.0。 |swap-file| "-w scriptout" 参数改变 *scriptout-changed*
"vim -w scriptout" 过去用来附加到 scriptout 文件。因为这不合逻辑,现在它用来建 立新文件。已有的文件不会被覆盖 (为了避免破坏期待这个附加功能的人不小心删除已有 的文件)。 [后来这个也删除了] |-w| 退格和删除键 *backspace-delete*
3.0 里,删除和退格键在插入模式里都起到退格的功能;它们删除光标左面的字符。在 4.0 里,删除键有了新功能: 他删除光标所在的字符,就像在命令行上那样。如果光标在 行尾之后并且置位了 'bs',两行会连接起来。 |<Del>| |i_<Del>| 3.0 里退格键总是定义为CTRL-H
,而删除键定义为 CTRL-?。4.0 里退格和删除键的代码 通过 termcap 和 termlib 定义,而且可以通过 Unix 的 "stty erase" 调整。这使得用 户可以根据他们的键盘重新定义这些键。 |<BS>| |i_<BS>| 如果你喜欢插入模式下的退格和删除键的旧行为,在你的 vimrc 里加入一行:
inoremap ^? ^H
你也许想加上这些行来调整
<BS>
和<Del>
的代码: set t_kb=^H set t_kD=^? (用CTRL-V
CTRL-H
输入 ^H,用CTRL-V
CTRL-? 或者<Del>
输入 ^?。) 如果 t_kb 的值正确,但是 t_kD 的值不对,使用 ":fixdel" 命令。它会根据 t_kb 的 值设置 t_kD 的值。这可用于使用不同终端的场合。 |:fixdel| 如果 ^H 不是识别成<BS>
或者<Del>
,它的用法类似于退格键。 | 转义键改变 *escape-bar*
如果 'cpoptions' 里有 'b' 标志位,反斜杠不能用于在映射和缩写命令里转义 '|'。只 有CTRL-V
可以。这是 Vi 兼容的。如果工作在 Vi 兼容模式下,而在映射里为了加入竖 杠而包含 "\|",必须把它改成 "^V
|"。参见 |:bar|。 键码改变 *key-codes-changed*
键码的内部表示发生了很大的改变。3.0 里每个键用单字节代码表示。这导致了不同字符 集使用相同的代码时的很多问题。4.0 里,用三字节的代码来表示。这样不会和一个字符 发生混淆。 |key-notation| 如果你在 vimrc 里用单字节键码定义映射,你需要把他们换成 4.0 的代码。你不需要把 它们直接写成三字节的代码,而应该用<>
括起来的符号表示形式。见下表。该表也列出 来 3.0 文档使用的旧名字。<>
内的键码可以用来直接定义映射。这样,你可以直接复制/粘贴例子或者输入。<>
的 表示方法在这里有介绍 |<>|。要使之工作,'cpoptions' 里必须不能用 'B' 和 '<' 标 志位 |'cpoptions'|。旧名字 新名字 旧代码 旧的 MS-DOS 代码
十六进 十进制 十六进 十进制
<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>
0x80 128 0xb0 176<C_DOWN>
<Down>
0x81 129 0xb1 177<C_LEFT>
<Left>
0x82 130 0xb2 178<C_RIGHT>
<Right>
0x83 131 0xb3 179<SC_UP>
<S-Up>
0x84 132 0xb4 180<SC_DOWN>
<S-Down>
0x85 133 0xb5 181<SC_LEFT>
<S-Left>
0x86 134 0xb6 182<SC_RIGHT>
<S-Right>
0x87 135 0xb7 183<F1>
<F1>
0x88 136 0xb8 184<F2>
<F2>
0x89 137 0xb9 185<F3>
<F3>
0x8a 138 0xba 186<F4>
<F4>
0x8b 139 0xbb 187<F5>
<F5>
0x8c 140 0xbc 188<F6>
<F6>
0x8d 141 0xbd 189<F7>
<F7>
0x8e 142 0xbe 190<F8>
<F8>
0x8f 143 0xbf 191<F9>
<F9>
0x90 144 0xc0 192<F10>
<F10>
0x91 145 0xc1 193<SF1>
<S-F1>
0x92 146 0xc2 194<SF2>
<S-F2>
0x93 147 0xc3 195<SF3>
<S-F3>
0x94 148 0xc4 196<SF4>
<S-F4>
0x95 149 0xc5 197<SF5>
<S-F5>
0x96 150 0xc6 198<SF6>
<S-F6>
0x97 151 0xc7 199<SF7>
<S-F7>
0x98 152 0xc8 200<SF8>
<S-F8>
0x99 153 0xc9 201<SF9>
<S-F9>
0x9a 154 0xca 202<SF10>
<S-F10>
0x9b 155 0xcb 203<HELP>
<Help>
0x9c 156 0xcc 204<UNDO>
<Undo>
0x9d 157 0xcd 205 (没用到) 0x9e 158 0xce 206 (没用到) 0x9f 159 0xcf 207 终端选项改变 *termcap-changed*
终端选项的名字改成了 termcap 定义的这些选项的名字。所有的终端选项现在都有 t_xx 这样的名字,其中 xx 是 termcap 的名字。通常这些选项都用不到。除非你有一个错误 或者不完整的 termcap 名字,或者你设置不同的光亮选项的值。|terminal-options| 注意 有些键没有 termcap 的名字。应该用<>
形式的名字,不管这么说,这总是一个好 主意。 注意 "t_ti" 变成了 "t_mr" (反转输出) 而 "t_ts" 变成了 "t_ti" (初始终端模式)。 用 "t_ti" 的时候要小心!旧名字 新名字 含义
t_cdl t_DL 删除行数 *t_cdl* t_ci t_vi 光标不可见 *t_ci* t_cil t_AL 插入行数 *t_cil* t_cm t_cm 移动光标 t_cri t_RI 光标右侧字符数 *t_cri* t_cv t_ve 光标可见 *t_cv* t_cvv t_vs 光标非常可见 *t_cvv* t_dl t_dl 删除行 t_cs t_cs 滚动区域 t_ed t_cl 清除显示 *t_ed* t_el t_ce 清除行 *t_el* t_il t_al 插入行 *t_il* t_da 屏幕上方保留显示 t_db 屏幕下方保留显示 t_ke t_ke 设置终端离开 keypad 传输模式 t_ks t_ks 设置终端进入 keypad 传输模式 t_ms t_ms 保存以便在高亮模式里移动光标 t_se t_se 正常模式 (撤销 t_so) t_so t_so 突出 (standout) 模式 t_ti t_mr 反转高亮 t_tb t_md 粗体模式 *t_tb* t_tp t_me 结束高亮 *t_tp* t_sr t_sr 反转滚动 t_te t_te 结束 termcap 模式 t_ts t_ti 进入 termcap 模式 *t_ts_old* t_vb t_vb 可视响铃 t_csc t_CS 光标相对滚动区域 *t_csc* t_ku t_ku<Up>
向上光标键 t_kd t_kd<Down>
向下光标键 t_kr t_kr<Right>
向右光标键 t_kl t_kl<Left>
向左光标键 t_sku<S-Up>
shifted 向上光标键 *t_sku* t_skd<S-Down>
shifted 向下光标键 *t_skd* t_skr t_%i<S-Right>
shifted 向右光标键 *t_skr* t_skl t_#4<S-Left>
shifted 向左光标键 *t_skl* t_f1 t_k1<F1>
功能键 1 *t_f1* t_f2 t_k2<F2>
功能键 2 *t_f2* t_f3 t_k3<F3>
功能键 3 *t_f3* t_f4 t_k4<F4>
功能键 4 *t_f4* t_f5 t_k5<F5>
功能键 5 *t_f5* t_f6 t_k6<F6>
功能键 6 *t_f6* t_f7 t_k7<F7>
功能键 7 *t_f7* t_f8 t_k8<F8>
功能键 8 *t_f8* t_f9 t_k9<F9>
功能键 9 *t_f9* t_f10 t_k;<F10>
功能键 10 *t_f10* t_sf1<S-F1>
shifted 功能键 1 *t_sf1* t_sf2<S-F2>
shifted 功能键 2 *t_sf2* t_sf3<S-F3>
shifted 功能键 3 *t_sf3* t_sf4<S-F4>
shifted 功能键 4 *t_sf4* t_sf5<S-F5>
shifted 功能键 5 *t_sf5* t_sf6<S-F6>
shifted 功能键 6 *t_sf6* t_sf7<S-F7>
shifted 功能键 7 *t_sf7* t_sf8<S-F8>
shifted 功能键 8 *t_sf8* t_sf9<S-F9>
shifted 功能键 9 *t_sf9* t_sf10<S-F10>
shifted 功能键 10 *t_sf10* t_help t_%1<Help>
help 键 *t_help* t_undo t_&8<Undo>
undo 键 *t_undo* 'errorformat' 选项改变 *errorformat-changed*
'errorformat' 现在包含多种格式,以逗号分隔。第一个匹配的格式被使用。缺省值现在 能捕获许多常见格式。 |errorformat| 如果你有一种格式包含逗号,前面需要加上反斜杠转义。输入两个反斜杠,因为 ":set" 会吃掉一个。 不再有 'graphic' 选项 *graphic-option-gone*
'graphic' 选项过去使得 <~>
和 0xa0 之间的字符在屏幕上直接显示。现在 'isprint'
选项替代了它,而且增加了很多可能性。缺省的设置一样;如果你以前在 vimrc 置位了
'graphic' 选项,你只需要看到这一点就行了。
|'isprint'|
不再有 'yankendofline' 选项 *ye-option-gone*
'yankendofline' 选项被删除了。你可以用:map Y y$
'icon' 和 'title' 缺省值改变 *icon-changed*
'title' 选项现在缺省只有在原来的标题恢复的时候才设置。不再有 "Thanks for flying Vim" 标题。如果你还是想要,在你的 vimrc 文件加上 ":set title"。 |'title'| 'icon' 的缺省值现在决定于原来的值是否恢复,和 'title' 类似。如果你不喜欢你的 icon 标题被改变,在 vim 里设置这一行: |'icon'| :set noicon 'highlight' 选项改变 *highlight-changed*
'i' 标志位现在意味着斜体高亮,而不是反转。'r' 标志位现在用来代表反转高亮,也就 是 'i' 过去的含义。通常你看不到区别,因为多数终端不支持斜体模式,而用反转模式 作为替代。 |'highlight'| 如果 'highlight' 的一种场合不存在,使用 'highlight' 的缺省值,而不是反转模式。 'tildeop' 和 'weirdinvert' 缩写改变 *short-name-changed*
'to' 换名成 ('tildeop' 的缩写) 'top'。 |'tildeop'|
'wi' 换名成 ('weirdinvert' 的缩写) 'wiv'。 |'weirdinvert'|
之所以这么做,是因为 Vi 使用 "wi" 作为 'window' 的缩写,而 'to' 作为 'timeout'
的缩写。这意味着你如果试图设置这些选项,你不会得到错误信息,但是效果不同。
"v"、"V" 和 "CTRL-V
" 在可视模式的改变 *use-visual-cmds*
在可视模式下,"v"、"V" 和 "CTRL-V
" 用来终止可视模式。现在这只有在可视模式处于 相应的类型时才会,不然可视模式的类型发生相应的改变。现在只有 ESC 用来在所有情 况下不做别的,只终止可视模式。 |v_V| 删除插入模式的CTRL-B
功能 *toggle-revins*
插入模式下的CTRL-B
原来用来切换 'revins' 选项。如果你不知道这一点而不小心按了CTRL-B
,要发现怎么撤销这一点很困难。因为几乎没人用到这一功能,缺省这个功能被关 闭了。如果需要,编译前在 feature.h 里定义 RIGHTLEFT。 |'revins'| vim:tw=78:ts=8:ft=help:norl:
Generated by vim2html on 2008年 03月 27日 星期四 17:04:45 CST