OS_DOS

*os_dos.txt*    For Vim version 6.1.  原文最后更新: 2001年9月3日


                  VIM 参考手册    作者:Bram Moolenaar
                                  翻译:Dasn<[email protected]>
                                  VCD主页: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\”寻找资源文件。
Note: 多用户计算机需要这种功能,否则还是把 _vimrc 放在原来的地方简单些。

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

如果你把可执行文件和资源文件都移动了,那么你必须用 $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     光标移动到当前屏幕的第一行                 *<C-PageUp>*
CTRL-PageDown   光标移动到当前屏幕的最后一行,最后一个字符 *<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>*

这些键是这样映射的(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

如果系统支持剪贴板,Vim 就会使用 "* register 映射。


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

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

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

DOS 控制台不支持“粗体”、“下划线”之类的属性。你可以用“:mode”的五种属性值
和 'termcap' 的九种属性值来设置颜色。 Note: 当你用“: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' 的初始值是 0 。

下面是 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”)。

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
        current directory

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


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:

Generated by vim2html on Tue Jul 27 00:35:24 CST 2004