OS_MSDOS

*os_msdos.txt*  For Vim version 6.4.  最后更新: 2005年3月21日


                  VIM 参 考 手 册    作者:Bram Moolenaar
                                     译者: Dasn
                                     VCD主页:http://vimcdoc.sf.net


                                        *msdos* *ms-dos* *MSDOS* *MS-DOS*
本文描述 MS-DOS 版本的 Vim

1. MS-DOS 平台下的两种版本      |msdos-versions|
2. 一些已知的问题               |msdos-problems|
3. 长文件名                     |msdos-longfname|
4. Termcap 编码                 |msdos-termcap|
5. 方向键变更                   |msdos-arrows|
6. 文件名的扩展                 |msdos-fname-extensions|
7. 内存的使用和限制             |msdos-limitations|
8. 文件的符号链接               |msdos-linked-files|
9. 在 DOS 窗口里复制和粘贴      |msdos-copy-paste|

此外,还有一些 Win32 和 DOS 版本通用的条目:

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


有关编译的讨论请参考"src/INSTALL.pc"。          *msdos-compiling*


1. MS-DOS 平台下的两种版本 *msdos-versions*

在 MS-DOS 下,有两种版本的 Vim : *dos16* DOS16 版本 可以在任何 DOS 系统上运行,只能使用 640KB 内存。也可 以在 OS/2,Windows 95 和 NT 上运行。不包括一些 Vim 特 有的功能(自动命令、语法加亮,等等)。建议 386 以前的 计算机使用。 *dos32* DOS32 版本 需要 386 处理器和 |DPMI| 驱动程序,可以使用所有内存。 支持长文件名和 Windows 剪贴板,但是不能在 Windows NT 下运行。建议 MS-DOS,Windows 3.1 和 Windows 95 用户使 用。 还有两个版本在 Windows 下运行: Win32 版本 需要 Windows 95 或 Windows NT,使用所有内存,支持长文 件名,等等。在 Windows 95 下有一些问题。建议使用 Windows NT。见 |os_win32.txt|。 Win32 GUI 版本 所需平台支持与 Win32 版本相同,但是它有自己的窗口,而 不是在控制台窗口里运行。有滚动条、菜单,等等。建议 Windows 95 和 Windows NT 用户使用。见 |gui-w32|。 建议使用 Dos32 或 Win32 版本。虽然 Dos16 版本可以编辑很大的文件,但是如果你做 一些大的改动的话,就会很快耗尽内存。禁用"撤销"功能会解决这个问题:":set ul=-1" 在屏幕更新速度方面,Dos16 版本 是上述三个版本中(不包括 Win32 GUI 版本, 正好是三个版本 译者)更新速度最快的(在 DOS 或 Windows 95 里运行,在 Windows NT 里, Win32 版本 和 Dos16 版本一样快)。 *DPMI* 运行 Dos32 版本,需要 DPMI 驱动程序。如果你运行了 Windows 或者以前装过不错的内 存管理程序,那么 DPMI 可能已经安装好了。如果你得到"No DPMI" 这条消息,你就需 要安装 DPMI 驱动程序。这个驱动程序已经包含在 Vim 包里的 CSDPMI4B.ZIP 文件中。 在运行 Vim 之前运行 "cwsdpmi",或者你可以把 "cwsdpmi -p" 添加到 autoexec.bat 文件里,让它每次启动后驻留内存。最新版本的"CSDPMI*.ZIP" 可以在 "ftp.neosoft.com:pub/users/s/sandmann"找到。 *minimal-features* 16 位的 DOS 版本只编译了最基本的功能。查阅 |+feature-list| ,所包含的功能前面 有一个"T"。 你可以编辑 feature.h 并重新编译,以获得更多的功能。

2. 一些已知的问题 *msdos-problems*

当你使用 smartdrive (MS-DOS 6.x)并且启用了后写式高速缓存(write-behind caching),Vim 就可能尝试在一个只读的文件系统里(例如:有写保护的软驱)创建交 换文件。你会收到这样的提示: A serious disk error has occurred .., Retry (r)? 这时没有别的办法,要么打开写保护,要么关机,就算你按 CTRL-ALT-DEL 也无济于事。 这确实是 smartdrive 的问题,不是 Vim 的问题。除此以外,smartdrive 工作地很好。 如果你觉得这很烦人,那就不要用后写式高速缓存(write-behind caching)。 Vim 不能读取正在使用的交换文件,除非你用了"share"命令。如果你不断收到交换文 件已存在的警告,那你应该把 "share" 命令添加到 config.sys 或 autoexec.bat 文 件里(参见 MS-DOS 的相关文档)。 16 位的 DOS 版本一次能打开的文件数(可见的和隐藏的)大约在 10 个左右,再多了就 要报错。可能在打开文件的时候或者保存文件的时候,也可能在使用过滤命令的时候报告 "内存不够",或者遇到其它随机的问题。 32 位 Dos 版本没有文件数的限制,对于文件的限制取决于 config.sys 文件里 FILE 变 量的设置。FILE 的默认值是 15,如果你需要编辑更多文件,可以增加 FILE 的值。如果 FILE 值小于你所打开的文件的数目,就会出一些奇怪的错误,并且执行 shell 命令时可 能会死机。 32 位 Dos 版本可以处理长文件名。自动补全文件名的时候,虽然 Vim 会匹配短的文件 名,但是却会处理相应的长名文件。例如,如果有一个长名文件"this_is_a_test",其 短文件名是"this_i~1",命令":e *1"编辑文件 "this_is_a_test"。 运行 32 位 Dos 版本时,如果遇到有关 DPMI 的问题,那么应该看看你的 config.sys 文件,里面是不是有某个驱动程序占用了大量的资源。 已经知道的是"netx"( NetWare v. 3.26 Workstation shell),换成 3.32 版本就可以解决。 32 位 Dos 版本可以处理带引号的参数。这在处理带空格的文件名时特别有用,例如: vim "program files\accessories\ppp.scp" 但是有一个副作用单引号会被删除。可以在单引号前面加一个反斜杠来避免这种情况。 例如,要编辑文件 "fi'le.txt": vim fi\'le.txt

3. 长文件名 *msdos-longfname*

如果在 Windows 95 里运行 32 位 DOS 版本,就可以使用长文件名(默认是可以的)。 如果你不想使用,可以把下面这条命令添加到 autoexec.bat 文件里: set LFN=N 备注: 如果你安装了 DJGPP,在你的机器上很可能有一个"djgpp.env"文件,里面包含 有"LFN=n",当你要使用长文件名的时候,你需要设置"LFN=Y"。

4. Termcap 编码 *msdos-termcap*

如果你想用别的输出方式(例如:用一个串口终端),把终端名设置成"pcansi"即可。 你可以在需要的时候改变 termcap 选项(见 |terminal-options|) 备注: 正常情况下, IBM 的 ansi.sys 并不支持所有的内建 pcansi 终端编码。如果你用 ansi.sys,你需要 删除 termcap 里的 t_al 和 t_dl : :set t_al= t_dl= 否则,屏幕不会正确更新。最好还是用 nansi.sys,nnansi.sys,或类似的驱动程序代替 ansi.sys 。 如果你想用 Vim 在串口终端上工作,就要重置 'bioskey' 选项。否则将会从 PC 键盘读 取读取命令。重置 'bioskey' 之后,CTRL-CCTRL-P 也许不能正确工作。

5. 方向键变更 *msdos-arrows*

CTRL-arrow-left 和 CTRL-arrow-right 代替 SHIFT-arrow-left 和 SHIFT-arrow-right。 arrow-up 键 和 arrow-down 键不能与 SHIFT 或 CTRL 组合使用。 (arrow-left,arrow-right,arrow-up,arrow-down 是左、右、上、下四个方向键 译者

6. 文件名的扩展 *msdos-fname-extensions*

MS-DOS 只允许有一个文件扩展名,因此,在文件名扩展的时候,原文件名中的"."被替 换成"_",并且在第 8 个字符的位置截断,然后加上扩展名(例如:".swp")。看两 个例子:"test.c"变成"test_c.bak","thisisat.est" 变成 "thisisat.bak" 为了 减少这些问题,默认的 'backupext' 是 "~"而不是".bak"。文件 "thisisat.est" 的备份文件是 "thisisat.es~"。'shortname' 选项不可用,因为该选项永远是打开的。

7. 内存的使用和限制 *msdos-limitations*

交换文件用来存储大部分文本。你应该能编辑很大的文件。但内存是用来记录你的操作和 别的一些事情。所以在 Dos16 版本中,如果你删除了大量文本,仍然可能耗尽内存。 如果 Vim 给出"Out of memory"的警告信息,你应该停止编辑。如果继续编辑,那么此 后的操作结果都是不可预料的。把 'undolevels' 设置为 0 可以节省内存。运行大量的 宏肯定会导致内存不够,因为每一次操作都被记录下来。在这种情况下,把 'undolevels' 设置为负值。这样可以完全关掉"撤销(undo)"功能。 *msdos-clipboard-limits* 在 Dos32 版本里,用扩展内存来避免这些问题。然而,如果你用剪贴板你仍然可能遇到 内存的限制,因为 Windows 剪贴板只能通过 Dos 内存与 Vim 通信。这意味着通过剪贴 板传递文本的最大数量取决与你有多少可用的 Dos 内存。 把下面几行添加到 "config.sys" 文件里,可以启用 Dos 扩展内存: DOS=HIGH,UMB DEVICE=C:\WINDOWS\himem.sys DEVICE=C:\WINDOWS\emm386.exe RAM 做了这些修改之后,可以使 DOS 腾出更多的内存给 Vim(Dos16 版本)使用。 在 Dos16 版本里,每行文本不能超过 32000 个字符。当读取一个文件时,这些较长的行 会被自动分割。但是编辑这些"长行"会产生不可预料的后果。

8. 文件的符号链接 *msdos-linked-files*

用 Vim 编辑链接(指向 unix NFS 文件服务器上的文件),可能会出问题。保存文件时, Vim 不会通过连接把文件保存到服务器上,而是在本地创建一个新的文件覆盖掉原来的符 号链接。 在 UNIX 系统中,Vim 可以处理连接(符号连接或硬连接)。Vim 先把文件写入一个备份 文件中,然后用备份文件覆盖原文件。这样做是为了保证所有属性都和原文件相同。在非 UNIX 系统中,首先原文件被改名,然后写入新文件。只有保护位和原文件相同。但是, 不能处理指向 NFS 文件系统的连接。唯一的解决办法是禁用备份文件,可以通过命令": set nobackup nowritebackup"实现 |'writebackup'|

9. 在 DOS 窗口里复制和粘贴 *msdos-copy-paste*

*E450* *E451* *E452* *E453* *E454* 32 位的 DOS 版本可以对 Windows 剪贴板进行操作。用 "* register 命令(register 是寄存器,可以用 :reg 命令查看寄存器及其内容 译者)。大量的文本可以用这种 方法复制,但是可能会受到内存的限制,见 |msdos-clipboard-limits|。从一个 Vim 移 动文本到另一个 Vim 时,所选择的区域(字符、行、块)也一起移动。 在其它版本里,可以用下面的方法:(这是 John Velman <velman@igate1.hac.com> 在 comp.editors 上发表的) 如何在 DOS 窗口里 复制/粘贴 Vim 文本: 1) 让 VIM 以窗口方式运行,而不是全屏,用 ALT-回车 在全屏模式和窗口模式之间切 换。 注意 在 Windows 95 里,你必须保证"属性"里的 "快速粘贴"(MS-DOS 窗口 杂项 快速粘贴)的复选框没被选中。要想永久改变这一选项,可以修改 "\windows\system\conagent.exe" 的属性(Philip Nelson 说的,我没试过)。 2) 要往 Vim 里粘贴文本,先使 Vim 处于插入状态。 3) 把要粘贴的文本放到 Windows 剪贴板上。 4) 点击 Vim 窗体左上角的控制框按钮(像一个大减号),如果你不想用鼠标,可以用 ALT-空格 。 5) 在出现的菜单里选择 "编辑"。 6) 在子菜单里选择 "粘贴"。 从 Vim 复制文本到 Window 剪贴板: 1) 点击窗口控制菜单。 2) 选择 "编辑"。 3) 选择 "标记"。 4) 用鼠标或者方向键选择要复制部分。用方向键选择的时候,你可以按住 Shift 键以 扩大选择范围。 5) 选择完毕,按回车键。所选的区域就复制到剪贴板了。顺便说一句,用这种方法可 以选择任何的矩形区域,例如:4-25 行,7-10 列。所选择的区域可以包含 Vim 窗体内 的任何任何东西,例如 ":!dir" 命令的输出内容也可包含在内。 vim:tw=78:ts=8:ft=help:norl:

Generated by vim2html on 2006年 06月 24日 星期六 00:27:59 UTC