VERSION4

*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