📄 os_msdos.cnx
字号:
*os_msdos.txt* For Vim version 6.1. 原文最后更新: 2001年9月3日 VIM 参考手册 作者:Bram Moolenaar 翻译:Dasn<dasn@users.sf.net> VCD主页:http://vimcdoc.sf.net *msdos* *ms-dos* *MSDOS* *MS-DOS*本文描述 MS-DOS 版本的 Vim1. 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 or Win32 版本。虽然 Dos16 版本可以编辑很大的文件,但是如果你做一些大的改动的话,就会很快耗尽内存。禁用“撤销”功能会解决这个问题:“:setul=-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-behindcaching),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=NNote: 如果你安装了 DJGPP,在你的机器上很可能有一个“djgpp.env”文件,里面包含有“LFN=n”,当你要使用长文件名的时候,你需要设置“LFN=Y”。==============================================================================4. Termcap 编码 *msdos-termcap*如果你想用别的输出方式(例如:用一个串口终端),把终端名设置成“pcansi”即可。你可以在需要的时候改变 termcap 选项(见 |terminal-options|) Note :正常情况下,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-C 和 CTRL-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-回车 在全屏模式和窗口模式之间切换。 NOTE 在 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:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -