*os_dos.txt*    For Vim version 8.0.  最近更新: 2017年8月


		  VIM 参考手册    by Bram Moolenaar
		                     译者: Dasn
		                     http://vimcdoc.sf.net

							*dos* *DOS*
本文描述 MS-DOS 和 Win32 版本共有的特性。你还可以参考
|os_win32.txt| 和 |os_msdos.txt|。

1. 文件位置			|dos-locations|
2. 使用反斜杠			|dos-backslash|
3. 标准映射			|dos-standard-mappings|
4. 屏幕的输出与颜色		|dos-colors|
5. 文件格式			|dos-file-formats|
6. :cd 命令			|dos-:cd|
7. 中止键			|dos-CTRL-Break|
8. 临时文件			|dos-temp-files|
9. 默认的 Shell 选项		|dos-shell|

==============================================================================
1. 文件位置						*dos-locations*

只要你把 Vim 的可执行文件 (vim.exe)、帮助文件的目录 (doc) 以及语法文件的目录
(syntax) 放到同一个目录下，Vim 就可以工作了，不需要额外的配置，也不需要修改注
册表或添加环境变量，只要保证 Vim 目录包含在路径中，或者在桌面上做一个快捷方式
也可以。

通常 Vim 资源文件 ("_vimrc" 和 "_gvimrc") 放在 Vim 运行目录的上一级目录。如果
你想把它放在别的地方，可以设置环境变量指向资源文件所在的目录，例如: >
	set VIM=C:\user\piet
Vim 会在 "c:\user\piet\" 下寻找资源文件。
备注: 多用户计算机需要这种功能，否则还是把 _vimrc 放在原来的地方简单些。

如果你改变了 vim.exe 的位置，就需要设置一下 $VIM 变量，这样相应的运行目录
(runtime directory) 就是 "$VIM/vim{version}"。例如: >
	set VIM=E:\vim
Vim 会在 "e:\vim\vim54" 寻找 5.4 版本运行时需要的文件。
备注: 强烈建议不要这样做。最好把可执行文件和运行时需要的文件放到同一个目录里。

如果你把可执行文件和资源文件都移动了，那么你必须用 $VIM 和 $VIMRUNTIME 两个环
境变量来分别指定资源文件 ("_vimrc" 和 "_gvimrc") 和运行目录的位置。例如: >
	set VIM=C:\usr\piet
	set VIMRUNTIME=E:\vim\vim54
这样，Vim 可以在 "c:\user\piet\" 目录下找到资源文件，在 "E:\vim\vim54" 目录下
找到运行时所需的文件。

要想了解更多内容，见 |$VIM| 和 |$VIMRUNTIME|。

在 Windows 95 上，你可以在 C:\autoexec.bat 里设置 $VIM。例如: >
  set VIM=D:\vim
在 Windows NT 上，你可以在 "控制面板－系统" 或者右键单击 "我的电脑"－"属性"，
"环境变量" 选项卡里为每一个用户设置环境变量。

==============================================================================
2.使用反斜杠 						*dos-backslash*

在文件名 (这里是指带路径的文件名 译者) 里使用反斜杠 (\) 可能会出问题。在某些命
令里，VI 要用两个反斜杠表示反斜杠。Vim 在这一问题上宽容一些，它不会从文件名中
删除反斜杠，所以直接用 ":e c:\foo\bar" 就可以工作。但是当反斜杠出现在一些特殊
字符 (空格、逗号、反斜杠，等等) 前面时，Vim 就会删除反斜杠。用斜杠来避免问题:
":e c:/foo/bar"，同样可以。Vim 会自动把斜杠替换成反斜杠以避免一些 MS-DOS 或
Win32 程序产生问题。

如果你喜欢用斜杠，就设置 'shellslash' 选项。Vim 就会在自动补全文件名的时候，用
斜杠代替反斜杠。这在你使用 UNIX 风格的 'shell' 时，特别有用。

==============================================================================
3. 标准映射					*dos-standard-mappings*

CTRL-PageUp 和 CTRL-PageDown 的原有映射已经被取消了，现在它们的功能是跳转到下
一个或者前一个标签页 |<C-PageUp>| |<C-PageDown>|

如果你想要让它们移动到屏幕行的首行和末行，这样映射:

键		键码		正常/可视模式       插入模式 ~
CTRL-PageUp	<M-N><M-C-D>	    H		    <C-O>H
CTRL-PageDown	<M-N>v		    L$		    <C-O>L<C-O>$

此外，下面这些键用于复制/剪切/粘贴。Win32 版本和 DJGPP 版本使用剪贴板。

Shift-Insert	粘贴文本 (从剪贴板)				*<S-Insert>*
CTRL-Insert	复制选择的文本 (到剪贴板)			*<C-Insert>*
CTRL-Del	剪切选择的文本 (到剪贴板)			*<C-Del>*
Shift-Del	剪切选择的文本 (到剪贴板)			*<S-Del>*
CTRL-X		剪切可视文本 (到剪贴板)

这些键是这样映射的 (Win32 和 DJGPP 版本):

键		键码	     正常	可视	    插入 ~
Shift-Insert	<M-N><M-T>   "*P	"-d"*P      <C-R><C-O>*
CTRL-Insert	<M-N><M-U>		"*y
Shift-Del	<M-N><M-W>		"*d
CTRL-Del	<M-N><M-X>		"*d

或这样映射 (非 Win32 版本):

键		键码	     正常	可视	    插入 ~
Shift-Insert	<M-N><M-T>   P		"-dP	    <C-R><C-O>"
CTRL-Insert	<M-N><M-U>		y
Shift-Del	<M-N><M-W>		d
CTRL-Del	<M-N><M-X>		d
CTRL-X		<C-X>			"*d

如果系统支持剪贴板，Vim 就会使用 "* 寄存器。

==============================================================================
4. 屏幕的输出与颜色					*dos-colors*

默认的写屏操作是直接调用 bios 完成的，这在大多数系统上可以工作。你不需要用
ansi.sys。你可以使用 ":mode" 命令设置当前屏幕模式。见 |:mode|。

要想改变 Vim 的颜色，可以使用 |:highlight| 命令。Normal 高亮组 (highlight
group) 决定了 Vim 用什么颜色显示普通的文本。例如，要设置灰色字体和蓝色背景: >
	:hi Normal ctermbg=Blue ctermfg=grey
要了解其它可用的高亮组，参见 |highlight-groups|。

DOS 控制台不支持 "粗体"、"下划线" 之类的属性。你可以用九个终端选项来设置五种属
性值的颜色。备注: 因为你可以用 ":highlight" 命令直接设置颜色，这些选项并没有必
要。它们是为了兼容老版本的 Vim 而保留的。|'highlight'| 选项指定每种行为使用五
种模式中的哪一种。九个终端选项如下:
>
	:set t_mr=^V^[\|xxm		反转模式开始
	:set t_md=^V^[\|xxm		粗体模式开始
	:set t_me=^V^[\|xxm		返回正常文本

	:set t_so=^V^[\|xxm		突出模式开始
	:set t_se=^V^[\|xxm		返回正常文本

	:set t_us=^V^[\|xxm		下划线模式开始
	:set t_ue=^V^[\|xxm		返回正常文本

	:set t_ZH=^V^[\|xxm		斜体模式开始
	:set t_ZR=^V^[\|xxm		返回正常文本

^V 代表 CTRL-V
^[ 代表 <Esc>

(在输入上面的命令时，按下 CTRL-V Vim 只会显示 ^，这时不要输入 V，直接输入
<Esc> 即可。译者)

你必须把上面命令里的 xx 换成相应的十进制数，这个数是前景色与背景色相加的和:

颜色			前景色		背景色	~
黑色			0		0
暗蓝色			1	   	16
暗绿色			2	   	32
灰绿色		    	3		48
暗红色			4		64
暗紫红色		5		80
棕色，暗黄色	    	6		96
亮灰色		    	7		112
暗灰色		    	8		128 *
蓝色，天蓝色		9		144 *
绿色，浅绿色		10		160 *
青绿色，兰绿色		11		176 *
红色，亮红色		12		192 *
紫红色，亮紫红色	13		208 *
黄色，浅黄色		14		224 *
白色			15		240 *

* 在某些显示模式下，大于 128 的颜色代码可能不起作用，并且代码 128 会使字体闪
烁。

代码 0 表示颜色恢复到起始状态 (起始状态的值通常是 7，亮灰色文字，黑色背景，但
你可以修改。如果你在命令行提示上修改了缺省的颜色，你可能需要在 vimrc 文件里调
整一些高亮的颜色--见下面)。
这就是 't_me' 的初始值。

下面是 Vim 默认高亮模式:
	t_mr	112	 反转模式: 黑色文字 (0)，亮灰色背景 (112)
	t_md	 15	 粗体模式: 白色文字 (15)，黑色背景 (0)
	t_me	  0	 正常模式: 正常模式 (返回默认状态)

	t_so	 31	 突出模式: 白色文字 (15)，暗蓝色背景 (16)
	t_se	  0	 突出模式结束 (返回默认状态)

	t_czh	225	 斜体模式: 暗蓝色文字 (1)，黄色背景 (224)
	t_czr	  0	 斜体模式结束 (返回默认状态)

	t_us	 67	 下划线模式: 灰绿色文字 (3)，暗红色背景 (64)
	t_ue	  0	 下划线模式结束 (返回默认状态)


之所以选择这些颜色，是因为它们在使用反转显示的时候看起来比较舒服，但是你可以改
成你喜欢的颜色。

例如: >
  :set t_mr=^V^[\|97m	" 启动反转模式: 暗蓝色文字 (1) 棕色背景 (96)
  :set t_md=^V^[\|67m	" 启动粗体模式: 灰绿色文字 (3) 暗红色背景 (64)
  :set t_me=^V^[\|112m	" 返回正常模式: 黑色文字 (0) 亮灰色背景 (112)
  :set t_so=^V^[\|37m	" 启动突出模式: 暗紫红色文字 (5) 暗绿色背景 (32)
  :set t_se=^V^[\|112m	" 返回正常模式: 黑色文字 (0) 亮灰色背景 (112)

==============================================================================
5. 文件格式						*dos-file-formats*

如果 'fileformat' 设置为 "dos" (这是默认设置)，Vim 把 <NL> 或 <CR><NL> 当作行
尾符 (<EOL>)。写入文件的时候，Vim 使用 <CR><NL>。这样，如果你编辑一个文件并且
保存了，那么 Vim 会把所有的 <NL> 替换成 <CR><NL>。

如果 'fileformat' 设置为 "unix"，Vim 则使用一个 <NL> 作为 <EOL>，并且把 <CR>
显示为 ^M。

你可以用 Vim 把 <NL> 替换成 <CR><NL>: 在任何模式下读，保存成 Dos 格式
(":set ff=dos")。

你可以用 Vim 把 <CR><NL> 替换成 <NL>: 在 Dos 模式下读，保存成 Unix 格式
(":set ff=unix")。

如果 'fileformats' 非空 (这是默认值)，Vim 会自动设置 'fileformat' 的值，因此你
没有必要担心自己究竟在做什么。
					|'fileformat'| |'fileformats'|

如果你要编辑一个脚本文件或者一个二进制文件，那么你应该在装载这个文件之前预先设
定 'binary' 选项。脚本和二进制文件可能包含 <NL>，Vim 要把它替换成 <CR><NL>。你
可以在启动时加上 "-b" 参数，这样可以自动置位 'binary' 选项。

==============================================================================
6. :cd 命令						*dos-:cd*

":cd" 命令能识别驱动器符号，并且可以改变当前的驱动器。命令 ":cd c:" 使驱动器 C
成为当前驱动器。命令 ":cd d:\foo"，切换当前目录到 "D 盘的 foo 目录下"。Vim 也
能识别 UNC 路径。例如: ":cd \\server\share\dir"。  |:cd|

==============================================================================
7. 中止键						*dos-CTRL-Break*

用 CTRL-Break 来代替 CTRL-C 中止查找操作。Vim 只有在接受输入时才能检测到
CTRL-C。

==============================================================================
8. 临时文件						*dos-temp-files*

对于 16 位和 32 位的 DOS 版本:
Vim 把临时文件 (用于过滤) 存放于下列目录中 (按顺序查找下列目录，一旦发现该目录
存在并且可以创建文件，就用它存放临时文件):
	$TMP
	$TEMP
	C:\TMP
	C:\TEMP
	当前目录

对于 Win32 版本 (控制台和 GUI):
Vim 用标准的 Windows API 函数来获取临时文件名 (用于过滤)。按顺序查找下列目录，
一旦发现该目录存在并且可以创建文件，就用它存放临时文件:
	$TMP
	$TEMP
	当前目录

==============================================================================
9. 默认的 Shell 选项					*dos-shell*

在 Windows 95 上，默认的 'sh' ( 'shell' ) 选项是 "command.com"，而在 Windows
NT 上是 "cmd.exe"。如果设置了环境变量 SHELL，Vim 就使用 SHELL 指定的程序，如果
没有设置 SHELL，而设置了环境变量 COMSPEC，Vim 就使用 COMSPEC。Vim 用
"<shell> /c <command_name>" 执行外部命令。输入 CTRL-Z 调用一个子 Shell。要返回
Vim 输入 "exit"。	|'shell'| |CTRL-Z|

如果你运行一个第三方的 shell，你可能需要自己设置一下 |'shellcmdflag'| ('shcf')
和 |'shellquote'| ('shq') 或者 |'shellxquote'| ('sxq') 选项。不幸的是，这些选
项依赖于你所使用的 Vim 的版本。例如，要用 MKS Korn shell 或 bash，这些属性的值
应该设置成:

		DOS 16 位	    DOS 32 位		Win32  ~
'shellcmdflag'	   -c			-c		 -c
'shellquote'	   "
'shellxquote'						 "

16 位的 Dos 版本这样启动 shell:
	<shell> -c "命令" >file
Win32 版本:
	<shell> -c "命令 >file"
32 位 DOS 版本，DJGPP 在内部执行。

Vim 启动的时候检查 'shell' 选项的值是否能匹配 "sh" 子串 (在任何位置)。如果是，
Vim 就按照上面的描述设置 'shellcmdflag' 和 'shellquote' 或 'shellxquote' 选
项。

 vim:tw=78:ts=8:ft=help:norl:
