MESSAGE

*message.txt*   For Vim version 6.4.  最近更新: 2006年2月


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


本文件包含一个 Vim 产生的消息和错误信息按字母排序的列表。如果你不理解消息的含
义,可以在这里查找。不过,该列表不一定完整。

1. 以前的消息           |:messages|
2. 错误信息             |error-messages|
3. 消息                 |messages|


1. 以前的消息 *:messages* *:mes* *message-history*

:messages" 命令可以查看以前给出的消息。根据 'shortmess' 选项的设置,消息可能被 覆盖或者截断。这时该命令尤其有用。 记住的消息数目固定是 20。 如果使用翻译的消息,显示的第一行会告诉你谁维护这个消息翻译。如果你发现问题,可 以联系该维护者。 如果你想要查找特定 (错误) 消息,使用消息开始的 ID 号。比如,要得到下面消息的帮 助: E72: Close error on swap file 或者 (经翻译的): E72: Errore durante chiusura swap file 使用: :help E72 如果你很忙,不按 shift 键也可以: :help e72

2. 错误信息 *error-messages*

显示的错误信息,如果在你没读到之前就已经消失了,你可以这样重新看到: :echo errmsg 或者查看最近的消息列表: :messages 消 息 列 表 *E222* *E228* *E232* *E256* *E293* *E298* *E304* *E317* *E318* *E356* *E438* *E439* *E440* *E316* *E320* *E322* *E323* *E341* *E473* *E570* Add to read buffer makemap: Illegal mode Cannot create BalloonEval with both message and callback Hangul automata ERROR block was not locked Didn't get block nr {N}? ml_timestamp: Didn't get block 0?? pointer block id wrong {N} Updated too many blocks? get_varp ERROR u_undo: line numbers wrong undo list corrupt undo line missing ml_get: cannot find line {N} cannot find line {N} line number out of range: {N} past the end line count wrong in block {N} Internal error fatal error in cs_manage_matches 这是一个内部错误。如果你能够使之重现,请发送漏洞报告。|bugs| ATTENTION Found a swap file by the name ... 见 |ATTENTION|。 *E92* Buffer {N} not found 你请求的缓冲区不存在。在你清除了一个缓冲区,而它包含一个位置标记或者有其它途径 还被引用的时候,也会出现这个错误。 |:bwipeout| *E95* Buffer with this name already exists 你不能有两个同名的缓冲区。 *E72* Close error on swap file 用来保存编辑文本的备份的 |swap-file| 不能被正确关闭。大多数情况下这不会有什么 问题。 *E169* Command too recursive 当 Ex 命令执行了一个 Ex 命令,后者又执行一个 Ex 命令,等等的时候,就可能发生。 最多能有 200 层。这很有可能是一个无穷循环。有可能涉及到一个 |:execute| 或者 |:source| 命令。 *E254* Cannot allocate color {name} 颜色名 {name} 未知。多数系统中可用的颜色列表可以参见 |gui-colors|。 *E458* Cannot allocate colormap entry for "xxxx" Cannot allocate colormap entry, some colors may be incorrect 这意味着 Vim 没有足够的颜色可以分配。Vim 还能运行,但是有的颜色可能不会以指定 的颜色出现。试试停止其它使用很多颜色的应用程序,或者在启动 gvim 之后启动它们。 已经知道 Netscape 会消耗很多颜色。要避免这个问题,你可以告诉它使用自己的颜色映 射表: netscape -install 或者告诉它只使用有限种的颜色 (64 应该足够了): netscape -ncols 64 这也可以通过 Xdefaults 文件设置: Netscape*installColormap: Yes 或者 Netscape*maxImageColors: 64 *E79* Cannot expand wildcards 文件名包含特殊的字符组合,这使得 Vim 试图扩展通配符,但是无法成功。这_不_意味 着没有匹配的文件名,而是使用了非法的模式。 *E459* Cannot go back to previous directory 在扩展文件名的时候,Vim 不能回到最近用过的目录名。所有用到的文件名都变成非法 了!你需要得到当前目录的可执行 (遍历) 权限。 *E190* *E212* Cannot open "{filename}" for writing Can't open file for writing 由于某种原因,你在写的文件不能建立或者覆盖。该原因可能是你没有目录的写权限,或 者该文件名不合法。 *E166* Can't open linked file for writing 你试图写入一个覆盖的文件,而且该文件是一个链接 (硬链接或者符号链接)。如果包含 该连接或者文件的目录可写,写入还是可以的,但是 Vim 不知道你是要删除该连接并在 同样的位置写入实际文件呢,还是你要删除连接到的文件并用新文件覆盖之。如果你确实 需要用同样的名字写入实际文件,你需要手动删除这个连接或者文件,后者改变权限,使 得 Vim 可以覆盖之。 *E46* Cannot set read-only variable "{name}" 你试图给一个函数参数 |a:var| 或者 Vim 的内部只读变量 |v:var| 赋值。 *E90* Cannot unload last buffer Vim 总是要求有一个缓冲区被装载,不然窗口中就没有东西可以显示了。 *E40* Can't open errorfile <filename> 在使用 ":make" 或者 ":grep" 命令时: 该文件用于保存错误信息或者 grep 的输出结 果,而该文件不能打开。这可能有几个原因: - 'shellredir' 的值不正确。 - 外壳改变了目录,使得错误文件写到别的目录里。这可以通过改变 'makeef' 修正,但 是 make 命令还是在错误的目录下执行。 - 'makeef' 的值不正确。 - 'grepprg' 或者 'makeprg' 不能执行。这不一定总能检测得到 (尤其在 MS-Windows 上)。检查你的 $PATH。 Can't open file C:\TEMP\VIoD243.TMP 在 MS-Windows 上,在外部命令输出的结果被读入,但是命令没有正确执行的时候会显示 这个信息。这可能有多种原因。检查 'shell'、'shellquote'、'shellxquote'、 'shellslash' 和相关的选项。这也可能是因为外部命令没有找到。错误信息里没法看到 两者的区别。 *E12* Command not allowed from exrc/vimrc in current dir or tag search 因为安全原因,有的命令不允许被执行。这些命令通常来自当前目录的 .exrc 或者 .vimrc 文件,或者来自标签文件。另见 'secure'。 *E74* Command too complex 某个映射产生了太长的命令行字符串。可能是因为一个映射间接的引用了自己。 CONVERSION ERROR 在写入文件时出现这个错误,意味着有些位在从内部 UTF-8 格式转化到文件本身格式的 过程中丢失了。文件不会被标为未修改。如果你关心信息的丢失,把 'fileencoding' 选 项设为别的能够处理缓冲区的字符的值,并再写一次。如果你不关心,你可以放弃缓冲 区,或者复位 'modified' 选项。 *E302* Could not rename swap file 如果文件名改变了,Vim 试图给 |swap-file| 也换名。如果不成功,那么接着使用旧的 交换文件。一般情况下这没有什么问题。 *E43* *E44* Damaged match string Corrupted regexp program Vim 的内部有问题,产生了一个毁坏了的正规表达式。如果你知道如何重现该问题,请报 告。|bugs| *E208* *E209* *E210* Error writing to "{filename}" Error closing "{filename}" Error reading "{filename}" 如果 Vim 试图给一个文件换名,但是简单的文件名更改不能工作时,文件会被复制,如 果这也失败了,就会报错。结果可能是,原始文件和目标文件都存在,但是目标文件不完 整。 Vim: Error reading input, exiting... Vim 在需要输入却不能读入输入的字符时,就会报错。Vim 没法继续,唯一能做的只能退 出。这可能发生在,比如标准输入和标准错误 (stderr) 都被重定向,而执行一个不会退 出 Vim 的脚本的情况。 *E47* Error while reading errorfile 不能读入错误文件,这_不_是因为错误信息不能识别造成的。 *E80* Error while writing 写入文件不能成功完成,该文件可能不完整。 *E13* *E189* File exists (use ! to override) "{filename}" exists (use ! to override) 系统为了保护你,不让你不小心覆盖已存在文件。如果你需要,使用相同的命令,但在命 令之后加 "!"。例如: :w /tmp/test 改成: :w! /tmp/test *E139* File is loaded in another buffer 你试图写入文件,但是该名字被别的缓冲区所使用。这会导致相同的文件两个版本。 *E142* File not written: Writing is disabled by 'write' option 'write' 选项被关闭。这使得所有试图写入文件的命令产生这个消息。这可能由 |-m| 命 令行参数引起。你可以用 ":setwrite" 切换 'write' 选项。 *E25* GUI cannot be used: Not enabled at compile time 你运行的 Vim 版本不支持 GUI 代码。所以 "gvim" 和 ":gui" 都不工作。 *E49* Invalid scroll size 这是由 'scroll'、'scrolljump' 或者 'scrolloff' 选项的值不正确引起的。 *E17* "{filename}" is a directory 你试图写入一个和目录名字相同的文件。这是不可以的。你需要附加一个文件名。 *E19* Mark has invalid line number 你使用一个位置标记,它所指的行号不存在。这可能是因为你有指向别的文件的位置标 记,或者别的程序从中删除了一些行引起。 *E219* *E220* Missing {. Missing }. 在文件名中使用了 {} 构造,但时候只有 { 而没有匹配的 } 或者相反。它应该只能这么 用: {foo,bar}。这样能匹配 "foo" 和 "bar"。 *E315* ml_get: invalid lnum: 这是一个内部错误。如果你知道如何重现该问题,请提交漏洞报告。|bugreport.vim|。 *E173* {number} more files to edit 你试图退出,但是参数列表里的最后一项还没有被编辑到。这保护你在还有文件要编辑的 时候意外的退出。见 |argument-list|。如果你想退出,再试一次,就行了。 *E23* *E194* No alternate file No alternate file name to substitute for '#' 轮换文件还没有定义。见 |alternate-file|。 *E32* No file name 当前的缓冲区没有名字。要写入,可用 ":w fname"。或者用 ":file fname" 给出缓冲区 的名字。 *E141* No file name for buffer {number} 一个被改变的缓冲区没有文件名。所以不能被写入。你需要给缓冲区一个文件名: :buffer {number} :file {filename} *E33* No previous substitute regular expression 在 ":substitute" 命令里,模式里使用的 '~' 字符会被替换成上次用到的模式。如果这 个命令还没用过,就会失败。见 |/~|。 *E35* No previous regular expression 使用空的搜索模式会引用到上次用到的模式。如果没有上一次搜索,那么就会失败。 *E24* No such abbreviation 你使用了 ":unabbreviate" 命令,但是所带的参数不是一个已有的缩写。这个命令的各 种变形都会给出相同的消息 ":cunabbrev"、":iunabbrev",等等。检查一下尾部的空白。 /dev/dsp: No such file or directory 只有在带 Gnome 支持的 GTK GUI 才会给出。Gnome 试图使用音频设备但是它不存在。你 可以忽略这个错误。 *E31* No such mapping 你使用了 ":unmap" 命令,但是所带的参数不是已有的映射。这个命令的各种变形都会给 出相同的消息 ":cunmap"、":unmap!",等等。检查一下尾部的空白。 *E37* *E89* No write since last change (use ! to override) No write since last change for buffer {N} (use ! to override) 你试图放弃 |abandon| 一个有过改动的文件。Vim 不让你这么做,以免丢失你的工作。 你可以把改动的部分用 ":w" 写回,或者,如果你还是要放弃之并丢失所有的改变,可以 在你使用的命令之后增加 '!' 字符。例如: :e other_file 改为: :e! other_file *E162* No write since last change for buffer "{name}" 如果你退出 Vim 时有的缓冲区已经被改变了就会发生这个错误。你或者可以写入改动过 的缓冲区 (用 |:w|),或者可以用一个强迫放弃缓冲区的命令,比如,":qa!"。要小心, 不要丢掉你想保留的改变。你可能忘记某个缓冲区,尤其是置位了 'hidden' 的时候。 *E38* Null argument 有的时候 Vim 出错会产生一个 NULL 指针。如果你知道如何重现,请报告。|bugs| *E172* Only one file name allowed ":edit" 命令只支持一个文件名。如果你需要指定多个,可用 ":next" |:next|。 *E41* *E82* *E83* *E342* Out of memory! Out of memory! (allocating {number} bytes) Cannot allocate any buffer, exiting... Cannot allocate buffer, using other one... 噢,噢。你可能作了一些特别复杂的操作,或者有的程序占用了你的内存。小心!Vim 没 有完全准备好内存溢出的情况。首先确保所有的改变被保存。然后试图解决内存的短缺问 题。要确保安全,退出 Vim,再重新开始。另见 |msdos-limitations|。 *E339* Pattern too long 这只有可能发生在 16 位整数的系统上: 编译的正规表达式模式超过了 65000 个字节。 试试短一些的模式。 *E45* 'readonly' option is set (use ! to override) 你试图写入一个标为只读的文件。如果要坚持这么做,或者复位 'readonly' 选项,或者 在你用的命令后面增加 '!' 字符。例如: :w 改为: :w! *E294* *E295* *E301* Read error in swap file Seek error in swap file read Oops, lost the swap file!!! Vim 试图从 |swap-file| 里读取文本,但是出了些问题。相关缓冲区的文本现在可能已 经没法用了!在写入缓冲区的时候仔细检查。你可能需要写到别的文件里,再比较两者的 差异。 *E192* Recursive use of :normal too deep 你在使用 ":normal" 命令,而它的参数又递归使用 ":normal" 命令。'maxmapdepth' 限 制最高的递归层数。该例子显示如何得到这个消息: :map gq :normal gq<CR> 如果你输入 "gq",就会执行这个映射,它又会再次调用 "gq"。 *E22* Scripts nested too deep 脚本可以通过 "-s" 命令行参数或者 ":source" 命令读取。脚本又可以读取别的脚本。 这可以继续大概 14 层。如果需要更多的嵌套,Vim 假设其中出现了递归的循环,所以用 此错误信息停止。 *E319* Sorry, the command is not available in this version 你使用了目前使用的 Vim 版本不存在的命令。在编译 Vim 的时候,许多不同的特性可以 打开或者关闭。这取决于需要多大的 Vim 的选择和不同的操作系统。能用的特性可见 |+feature-list|。|:version| 命令显示 Vim 编译时所带的特性。 *E300* Swap file already exists (symlink attack?) 当 Vim 试图打开交换文件并发现它已经存在,而且是一个符号链接时,显示该错误。这 不应该发生,因为 Vim 已经检查过该文件不存在。除非别人同时打开了相同的文件 (非 常不太可能) 或者有人试图一个符号链接的攻击 (如果编辑 /tmp 下的文件或者 'directory' 以 "/tmp" 开始,这是一个坏的选择)。 *E432* Tags file not sorted: {file name} Vim (和 Vi) 期待标签文件以 ASCII 顺序排序。然后就可以使用二分法搜索了,这比线 性查找要快多了。如果你的标签文件没有适当的排序,复位 |'tagbsearch'| 选项。 这个消息只有在 Vim 在搜索标签时发生问题的时候才会给出。有的时候即使标签文件没 有适当排序,这个消息也不会给出。 *E460* The resource fork would be lost (add ! to override) 在 Macintosh (classic) 上,在写入文件时,Vim 试图保留文件的所有信息,包括它的 资源派生。如果这做不到,你就会得到这个错误信息。在命令之后附加 "!" 强迫写入 (但丢失了信息)。 *E424* Too many different highlighting attributes in use Vim 只能处理 223 种不同的高亮。如果遇到了这个限制,你一定用了太多的带不同参数 的 |:highlight| 命令。":highlight link" 不计算在内。 *E77* Too many file names 在扩展文件名的时候,找到了多于一个的匹配。该命令只支持单一匹配的参数。 *E303* Unable to open swap file for "{filename}", recovery impossible Vim 不能建立交换文件。你可以继续编辑该文件,但如果 Vim 不正常的退出,你所有的 改变就丢失了。同时,Vim 可能在编辑大文件时消耗大量的内存。要避免这个错误,你可 能想改变 'directory' 选项。见 |swap-file|。 *E140* Use ! to write partial buffer 将区域对应缓冲区的部分内容写到一个已有的文件是不常见的。这可能是个错误 (比如, 如果在可视模式下使用 ":w" 的时候),所以 Vim 需要在命令后使用 !,比如: ":3,10w!"。 Warning: Cannot convert string "<Key>Escape,_Key_Cancel" to type VirtualBinding 启动时的时候可能出现这样的错误。这不是 Vim 的问题,而是你的 X11 配置有问题。你 可以在这里看到如何解决这个问题的提示: http://groups.yahoo.com/group/solarisonintel/message/12179。 *W10* Warning: Changing a readonly file 文件是只读的,而你还要修改它。你可以用 |FileChangedRO| 自动命令事件来避免这个 消息 (自动命令必须复位 'readonly' 选项)。'modifiable' 可以完全禁止修改文件。 *W13* Warning: File "{filename}" has been created after editing started 你在 Vim 里开始编辑文件时它并不存在,但是现在存在了。你可以决定保留 Vim 的版本 还是新建的文件。这个消息在 'buftype' 非空的时候不会给出。 *W11* Warning: File "{filename}" has changed since editing started 你开始编辑的文件有了别的时间戳,而且内容也发生了改变 (更精确地说,使用当前选 项设置和自动命令重新读入文件会给你不同的文本)。这可能是因为别的程序修改了文 件。你需要自己研究发生了什么事,并决定保留那个版本的内容。如果你想自动处理,参 见 'autoread' 选项。如果 'buftype' 不为空,该消息不会给出。 有一种情况即使没发生任何错误也会得到这个消息: 在 Windows 上,你在夏令时开始的 那天保存一个文件。有几种方法可以修正之: - 在你的 autoexec.bat 增加这行: SET TZ=-1 根据你的时区调整 "-1" 为其它值。 - 关闭 "根据夏令时时间自动调整时钟"。 - 第二天再次写入文件。或者把时钟设为第二天,写入文件两次,再把时钟调回来。 *W12* Warning: File "{filename}" has changed and the buffer was changed in Vim as well 和上面类似,而这个 Vim 里这个文件的缓冲区也改变了。你必须决定要保留这个 Vim 的 版本还是磁盘上的。这个消息在 'buftype' 非空时不会给出。 *W16* Warning: Mode of file "{filename}" has changed since editing started 缓冲区的时间戳发生了改变时,内容保持不变但是模式 (许可权限) 发生了改变。这通常 是从版本控制系统里取出文件而复位了只读位引起的。重读文件应该是安全的选择。置位 'autoread' 可以自动重读文件。 *E211* Warning: File "{filename}" no longer available 你开始编辑的文件不存在了,或者不能访问了。确定你把缓冲区写到某处,以免丢失改 变。如果 'buftype' 非空,该消息不会给出。 *W14* Warning: List of file names overflow 你一定用了太多的缓冲区了。可能两个缓冲区使用相同的号码,这可能引起问题。你可能 要退出 Vim 并重启。 *E296* *E297* Seek error in swap file write Write error in swap file 这通常是因为磁盘空间满引起的。Vim 不能把文本写到 |swap-file| 里。它不直接有 害。当如果 Vim 意外退出时,有些文本可能丢失,而无法恢复。出现这个问题时,Vim 可能会内存溢出。 *connection-refused* Xlib: connection to "<machine-name:0.0" refused by server 当 Vim 试图连接到 X 服务器,但是 X 服务器不允许连接的时候,就会发生这个错误。 只有建立 X 服务器的连接才能恢复标题和得到 xterm 的剪贴板的支持。不幸的是,这 个错误信息无法避免,除非关闭 |+xterm_clipboard| 和 |+X11| 特性。 *E10* \\ should be followed by /, ? or & 命令行以反斜杠开始,或者命令的范围包含了在错误位置出现的反斜杠。通常,这是因为 命令行的行继续功能被关闭了。从 'cpoptions' 选项里去掉 'C' 标志位就可以打开这一 功能。 *E471* Argument required 这是由 Ex 命令执行时需要的参数没有提供引起的。 *E474* *E475* Invalid argument Ex 命令执行时使用了非法的参数。 *E488* Trailing characters 在不允许有参数的 Ex 命令后带了参数。 *E477* *E478* No ! allowed Don't panic! 在不支持带 ! 后缀的 Ex 命令加了 "!" 命令。 *E481* No range allowed 在不支持范围参数的 Ex 命令前加了范围。见 |cmdline-ranges|。 *E482* *E483* Can't create file {filename} Can't get temp file name Vim 不能建立临时文件。 *E484* *E485* Can't open file %s" Can't read file %s" Vim 不能读临时文件。 *E464* Ambiguous use of user-defined command 有两个用户定义的命令,它们有相同的前缀,而你用命令行补全来执行其中的一个。 |user-cmd-ambiguous| 示例: :command MyCommand1 echo "one" :command MyCommand2 echo "two" :MyCommand *E492* Not an editor command 你试图执行一个既不是 Ex 命令也不是用户定义的命令。

3. 消息 *messages*

这是一个 (不完全) Vim 给出的各种消息的总览: *hit-enter* *press-enter* *hit-return* *press-return* Hit ENTER or type command to continue 如果屏幕上有东西要你阅读,而屏幕即将刷新的时候,就会给出该消息: - 执行完外部命令以后 (例如,":!ls" 和 "=")。 - 在状态行显示的内容超过了窗口的宽度或者跨越到 'showcwd' 或者 'ruler' 的输出位 置。 -> 按 <Enter> 或者 <Space> 可以重画屏幕并继续,除此以外就像该键没按过一样。 -> 按 ":" 或者其它普通模式的命令字符开始执行该命令。 -> 按 <C-Y> 复制 (抽出) 一个无模式的选择到剪贴板寄存器中。 -> 使用菜单。应用命令行模式定义的字符。 -> 如果 'mouse' 包含 'r' 标志位,按鼠标左键和按 <Space> 效果相同。不过这使得选 择文本成为不可能。 -> GUI 模式上,在末行按鼠标左键和按 <Space> 效果相同。 {Vi: 只有 ":" 命令得到处理} 要减少 hit-enter 提示的次数: - 把 'cmdheight' 设为 2 或者更高。 - 在 'shortmess' 里增加标志位。 - 复位 'showcmd' 和/或 'ruler'。 另见 'mouse'。hit-enter 消息使用 |hl-Question| 高亮组。 *more-prompt* *pager* -- More -- -- More -- (RET: line, SPACE: page, d: half page, q: quit) -- More -- (RET/BS: line, SPACE/b: page, d/u: half page, q: quit) 如果屏幕被消息全部占据,本消息就可能出现。只有在 'more' 选项打开的时候它才会出 现。它的显示使用 |hk-MoreMsg| 高亮组。 输入 效果 <CR><NL> 或 j 或 <Down> 下一行 <BS> 或 k 或 <Up> 往回一行 (*) <Space><PageDown> 下页 b 或 <PageUp> 上页 (*) d 往下半页 u 往上半页 (*) q、<Esc>CTRL-C 终止列表 : 终止列表并进入命令行 <C-Y> 抽出 (复制) 无模式的选择 |modeless-selection| 到剪贴板 ("* 和 "+ 寄存器) {menu-entry} 命令行模式里定义的菜单项。 <LeftMouse> (**) 下页 任何其它的键使得它们的含义被显示出来。 (*) 反向滚动只有在以下的命令里才支持: :clist (**) 鼠标左键的点击只有在以下情况下才生效: - GUI: 屏幕的最后一行。 - 'mouse' 里定义了 'r' (不过这时文本选择不会工作)。 注意: 键的输入是直接从终端取得的。它不通过映射,预输入也被忽略。 vim:tw=78:ts=8:ft=help:norl:

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