*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 endline 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 writingCan'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
*E33*{filename}
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
如果你输入 "gq",就会执行这个映射,它又会再次调用 "gq"。 *E22*<CR>
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 impossibleVim 不能建立交换文件。你可以继续编辑该文件,但如果 Vim 不正常的退出,你所有的 改变就丢失了。同时,Vim 可能在编辑大文件时消耗大量的内存。要避免这个错误,你可 能想改变 'directory' 选项。见 |swap-file|。 *E140*
Use ! to write partial buffer
将区域对应缓冲区的部分内容写到一个已有的文件是不常见的。这可能是个错误 (比如, 如果在可视模式下使用 ":w" 的时候),所以 Vim 需要在命令后使用 !,比如: ":3,10w!"。
Warning: Cannot convert string "
<Key>
Escape,_Key_Cancel" to typeVirtualBinding
启动时的时候可能出现这样的错误。这不是 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年 07月 02日 星期日 22:43:25 UTC