本文包含一个 Vim 产生的消息和错误信息按字母排序的列表。如果你不理解消息的含义,可以在这里查找。不过,该列表不一定完整。部分翻译可能不是很准确,敬请谅解,如果你想添加可以在本文留言讨论。
本文约定:
:messages” 命令可以查看以前给出的消息。根据 ‘shortmess’ 选项的设置,消息可能被覆盖或者截断。这时该命令尤其有用。
记住的消息数目固定是 20。
如果使用翻译的消息,显示的第一行会告诉你谁维护这个消息翻译。如果你发现问题,可以联系该维护者。
如果你想要查找特定 (错误) 消息,使用消息开始的 ID 号。比如,要得到下面消息的帮助:
或者 (经翻译的):
使用:
如果你很忙,不按 shift 键也可以:
显示的错误信息,如果在你没读到之前就已经消失了,你可以这样重新看到:
或者查看最近的消息列表:
消息列表
*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|。
Buffer {N} not found
你请求的缓冲区不存在。在你清除了一个缓冲区,而它包含一个位置标记或者有其它途径还被引用的时候,也会出现这个错误。|:bwipeout|
Buffer with this name already exists
你不能有两个同名的缓冲区。
Close error on swap file
用来保存编辑文本的备份的 |swap-file| 不能被正确关闭。大多数情况下这不会有什么问题。
Command too recursive
当 Ex 命令执行了一个 Ex 命令,后者又执行一个 Ex 命令,等等的时候,就可能发生,最多能有 200 层。这很有可能是一个无穷循环。有可能涉及到一个 |:execute| 或者|:source| 命令。
Cannot allocate color {name}
颜色名 {name} 未知。多数系统中可用的颜色列表可以参见 |gui-colors|。
Cannot allocate colormap entry for “xxxx”
Cannot allocate colormap entry, some colors may be incorrect
这意味着 Vim 没有足够的颜色可以分配。Vim 还能运行,但是有的颜色可能不会以指定的颜色出现。试试停止其它使用很多颜色的应用程序,或者在启动 gvim 之后启动它们。已经知道 Netscape 会消耗很多颜色。要避免这个问题,你可以告诉它使用自己的颜色映射表:
或者告诉它只使用有限种的颜色 (64 应该足够了):
这也可以通过 Xdefaults 文件设置:
或者
Cannot expand wildcards
文件名包含特殊的字符组合,这使得 Vim 试图扩展通配符,但是无法成功。这_不_意味着没有匹配的文件名,而是使用了非法的模式。
Cannot go back to previous directory
在扩展文件名的时候,Vim 不能回到最近用过的目录名。所有用到的文件名都变成非法了!你需要得到当前目录的可执行 (遍历) 权限。
Cannot open “{filename}” for writing
Can’t open file for writing
由于某种原因,你在写的文件不能建立或者覆盖。该原因可能是你没有目录的写权限,或者该文件名不合法。
Can’t open linked file for writing
你试图写入一个覆盖的文件,而且该文件是一个链接 (硬链接或者符号链接)。如果包含该连接或者文件的目录可写,写入还是可以的,但是 Vim 不知道你是要删除该连接并在同样的位置写入实际文件呢,还是你要删除连接到的文件并用新文件覆盖之。如果你确实需要用同样的名字写入实际文件,你需要手动删除这个连接或者文件,后者改变权限,使得 Vim 可以覆盖之。
Cannot set read-only variable “{name}”
你试图给一个函数参数 |a:var| 或者 Vim 的内部只读变量 |v:var| 赋值。
Cannot unload last buffer
Vim 总是要求有一个缓冲区被装载,不然窗口中就没有东西可以显示了。
Can’t open errorfile
在使用 “:make” 或者 “:grep” 命令时: 该文件用于保存错误信息或者 grep 的输出结果,而该文件不能打开。这可能有几个原因:
Can’t open file C:\TEMP\VIoD243.TMP
在 MS-Windows 上,在外部命令输出的结果被读入,但是命令没有正确执行的时候会显示这个信息。这可能有多种原因。检查 ‘shell’、’shellquote’、’shellxquote’、’shellslash’ 和相关的选项。这也可能是因为外部命令没有找到。错误信息里没法看到两者的区别。
Command not allowed from exrc/vimrc in current dir or tag search
因为安全原因,有的命令不允许被执行。这些命令通常来自当前目录的 .exrc 或者.vimrc 文件,或者来自标签文件。另见 ‘secure’。
Command too complex
某个映射产生了太长的命令行字符串。可能是因为一个映射间接的引用了自己。
CONVERSION ERROR
在写入文件时出现这个错误,意味着有些位在从内部 UTF-8 格式转化到文件本身格式的过程中丢失了。文件不会被标为未修改。如果你关心信息的丢失,把 ‘fileencoding’ 选项设为别的能够处理缓冲区的字符的值,并再写一次。如果你不关心,你可以放弃缓冲区,或者复位 ‘modified’ 选项。
Could not rename swap file
如果文件名改变了,Vim 试图给 |swap-file| 也换名。如果不成功,那么接着使用旧的交换文件。一般情况下这没有什么问题。
Damaged match string
Corrupted regexp program
Vim 的内部有问题,产生了一个毁坏了的正规表达式。如果你知道如何重现该问题,请报告。|bugs|
Error writing to “{filename}”
Error closing “{filename}”
Error reading “{filename}”
如果 Vim 试图给一个文件换名,但是简单的文件名更改不能工作时,文件会被复制,如果这也失败了,就会报错。结果可能是,原始文件和目标文件都存在,但是目标文件不完整。
Vim: Error reading input, exiting…
Vim 在需要输入却不能读入输入的字符时,就会报错。Vim 没法继续,唯一能做的只能退出。这可能发生在,比如标准输入和标准错误 (stderr) 都被重定向,而执行一个不会退出 Vim 的脚本的情况。
Error while reading errorfile
不能读入错误文件,这_不_是因为错误信息不能识别造成的。
Error while writing
写入文件不能成功完成,该文件可能不完整。
File exists (use ! to override)
“{filename}” exists (use ! to override)
系统为了保护你,不让你不小心覆盖已存在文件。如果你需要,使用相同的命令,但在命令之后加 “!”。例如:
改成:
File is loaded in another buffer
你试图写入文件,但是该名字被别的缓冲区所使用。这会导致相同的文件两个版本。
File not written: Writing is disabled by ‘write’ option
‘write’ 选项被关闭。这使得所有试图写入文件的命令产生这个消息。这可能由 |-m| 命令行参数引起。你可以用 “:setwrite” 切换 ‘write’ 选项。
GUI cannot be used: Not enabled at compile time
你运行的 Vim 版本不支持 GUI 代码。所以 “gvim” 和 “:gui” 都不工作。
Invalid scroll size
这是由 ‘scroll’、’scrolljump’ 或者 ‘scrolloff’ 选项的值不正确引起的。
“{filename}” is a directory
你试图写入一个和目录名字相同的文件。这是不可以的。你需要附加一个文件名。
Mark has invalid line number
你使用一个位置标记,它所指的行号不存在。这可能是因为你有指向别的文件的位置标记,或者别的程序从中删除了一些行引起。
Missing {.
Missing }.
在文件名中使用了 {} 构造,但时候只有 { 而没有匹配的 } 或者相反。它应该只能这么用: {foo,bar}。这样能匹配 “foo” 和 “bar”。
ml_get: invalid lnum:
这是一个内部错误。如果你知道如何重现该问题,请提交漏洞报告。|bugreport.vim|。
{number} more files to edit
你试图退出,但是参数列表里的最后一项还没有被编辑到。这保护你在还有文件要编辑的时候意外的退出。见 |argument-list|。如果你想退出,再试一次,就行了。
No alternate file
No alternate file name to substitute for ‘#’
轮换文件还没有定义。见 |alternate-file|。
No file name
当前的缓冲区没有名字。要写入,可用 “:w fname”。或者用 “:file fname” 给出缓冲区的名字。
No file name for buffer {number}
一个被改变的缓冲区没有文件名。所以不能被写入。你需要给缓冲区一个文件名:
No previous substitute regular expression
在 “:substitute” 命令里,模式里使用的 ‘~’ 字符会被替换成上次用到的模式。如果这个命令还没用过,就会失败。见 |/~|。
No previous regular expression
使用空的搜索模式会引用到上次用到的模式。如果没有上一次搜索,那么就会失败。
No such abbreviation
你使用了 “:unabbreviate” 命令,但是所带的参数不是一个已有的缩写。这个命令的各种变形都会给出相同的消息 “:cunabbrev”、”:iunabbrev”,等等。检查一下尾部的空白。
只有在带 Gnome 支持的 GTK GUI 才会给出。Gnome 试图使用音频设备但是它不存在。你可以忽略这个错误。
No such mapping
你使用了 “:unmap” 命令,但是所带的参数不是已有的映射。这个命令的各种变形都会给出相同的消息 “:cunmap”、”:unmap!”,等等。检查一下尾部的空白。
No write since last change (use ! to override)
No write since last change for buffer {N} (use ! to override)
你试图放弃 |abandon| 一个有过改动的文件。Vim 不让你这么做,以免丢失你的工作。
你可以把改动的部分用 “:w” 写回,或者,如果你还是要放弃之并丢失所有的改变,可以在你使用的命令之后增加 ‘!’ 字符。例如:
改为:
No write since last change for buffer “{name}”
如果你退出 Vim 时有的缓冲区已经被改变了就会发生这个错误。你或者可以写入改动过的缓冲区 (用 |:w|),或者可以用一个强迫放弃缓冲区的命令,比如,”:qa!”。要小心,不要丢掉你想保留的改变。你可能忘记某个缓冲区,尤其是置位了 ‘hidden’ 的时候。
Null argument
有的时候 Vim 出错会产生一个 NULL 指针。如果你知道如何重现,请报告。|bugs|
Only one file name allowed
“:edit” 命令只支持一个文件名。如果你需要指定多个,可用 “:next” |:next|。
Out of memory!
Out of memory! (allocating {number} bytes)
Cannot allocate any buffer, exiting…
Cannot allocate buffer, using other one…
噢,噢。你可能作了一些特别复杂的操作,或者有的程序占用了你的内存。小心!Vim 没有完全准备好内存溢出的情况。首先确保所有的改变被保存。然后试图解决内存的短缺问题。要确保安全,退出 Vim,再重新开始。另见 |msdos-limitations|。
Pattern too long
这只有可能发生在 16 位整数的系统上: 编译的正规表达式模式超过了 65000 个字节。试试短一些的模式。
‘readonly’ option is set (use ! to override)
你试图写入一个标为只读的文件。如果要坚持这么做,或者复位 ‘readonly’ 选项,或者在你用的命令后面增加 ‘!’ 字符。例如:
改为:
Read error in swap file
Seek error in swap file read
Oops, lost the swap file!!!
Vim 试图从 |swap-file| 里读取文本,但是出了些问题。相关缓冲区的文本现在可能已经没法用了!在写入缓冲区的时候仔细检查。你可能需要写到别的文件里,再比较两者的差异。
Recursive use of :normal too deep
你在使用 “:normal” 命令,而它的参数又递归使用 “:normal” 命令。’maxmapdepth’ 限制最高的递归层数。该例子显示如何得到这个消息:
如果你输入 “gq”,就会执行这个映射,它又会再次调用 “gq”。
Scripts nested too deep
脚本可以通过 “-s” 命令行参数或者 “:source” 命令读取。脚本又可以读取别的脚本。
这可以继续大概 14 层。如果需要更多的嵌套,Vim 假设其中出现了递归的循环,所以用此错误信息停止。
Sorry, the command is not available in this version
你使用了目前使用的 Vim 版本不存在的命令。在编译 Vim 的时候,许多不同的特性可以打开或者关闭。这取决于需要多大的 Vim 的选择和不同的操作系统。能用的特性可见|+feature-list|。|:version| 命令显示 Vim 编译时所带的特性。
Swap file already exists (symlink attack?)
当 Vim 试图打开交换文件并发现它已经存在,而且是一个符号链接时,显示该错误。这不应该发生,因为 Vim 已经检查过该文件不存在。除非别人同时打开了相同的文件 (非常不太可能) 或者有人试图一个符号链接的攻击 (如果编辑 /tmp 下的文件或者’directory’ 以 “/tmp” 开始,这是一个坏的选择)。
Tags file not sorted: {file name}
Vim (和 Vi) 期待标签文件以 ASCII 顺序排序。然后就可以使用二分法搜索了,这比线性查找要快多了。如果你的标签文件没有适当的排序,复位 |’tagbsearch’| 选项。
这个消息只有在 Vim 在搜索标签时发生问题的时候才会给出。有的时候即使标签文件没有适当排序,这个消息也不会给出。
The resource fork would be lost (add ! to override)
在 Macintosh (classic) 上,在写入文件时,Vim 试图保留文件的所有信息,包括它的资源派生。如果这做不到,你就会得到这个错误信息。在命令之后附加 “!” 强迫写入(但丢失了信息)。
Too many different highlighting attributes in use
Vim 只能处理 223 种不同的高亮。如果遇到了这个限制,你一定用了太多的带不同参数的 |:highlight| 命令。”:highlight link” 不计算在内。
Too many file names
在扩展文件名的时候,找到了多于一个的匹配。该命令只支持单一匹配的参数。
Unable to open swap file for “{filename}”, recovery impossible
Vim 不能建立交换文件。你可以继续编辑该文件,但如果 Vim 不正常的退出,你所有的改变就丢失了。同时,Vim 可能在编辑大文件时消耗大量的内存。要避免这个错误,你可能想改变 ‘directory’ 选项。见 |swap-file|。
Use ! to write partial buffer
将区域对应缓冲区的部分内容写到一个已有的文件是不常见的。这可能是个错误 (比如,如果在可视模式下使用 “:w” 的时候),所以 Vim 需要在命令后使用 !,比如:
Warning: Cannot convert string “
VirtualBinding
启动时的时候可能出现这样的错误。这不是 Vim 的问题,而是你的 X11 配置有问题。你可以在这里看到如何解决这个问题的提示:
http://groups.yahoo.com/group/solarisonintel/message/12179。
Warning: Changing a readonly file
文件是只读的,而你还要修改它。你可以用 |FileChangedRO| 自动命令事件来避免这个消息 (自动命令必须复位 ‘readonly’ 选项)。’modifiable’ 可以完全禁止修改文件。
Warning: File “{filename}” has been created after editing started
你在 Vim 里开始编辑文件时它并不存在,但是现在存在了。你可以决定保留 Vim 的版本还是新建的文件。这个消息在 ‘buftype’ 非空的时候不会给出。
Warning: File “{filename}” has changed since editing started
你开始编辑的文件有了别的时间戳,而且内容也发生了改变 (更精确地说,使用当前选项设置和自动命令重新读入文件会给你不同的文本)。这可能是因为别的程序修改了文件。你需要自己研究发生了什么事,并决定保留那个版本的内容。如果你想自动处理,参见 ‘autoread’ 选项。如果 ‘buftype’ 不为空,该消息不会给出。
有一种情况即使没发生任何错误也会得到这个消息: 在 Windows 上,你在夏令时开始的那天保存一个文件。有几种方法可以修正之:
Warning: File “{filename}” has changed and the buffer was changed in Vim as well
和上面类似,而这个 Vim 里这个文件的缓冲区也改变了。你必须决定要保留这个 Vim 的版本还是磁盘上的。这个消息在 ‘buftype’ 非空时不会给出。
Warning: Mode of file “{filename}” has changed since editing started
缓冲区的时间戳发生了改变时,内容保持不变但是模式 (许可权限) 发生了改变。这通常是从版本控制系统里取出文件而复位了只读位引起的。重读文件应该是安全的选择。置位’autoread’ 可以自动重读文件。
Warning: File “{filename}” no longer available
你开始编辑的文件不存在了,或者不能访问了。确定你把缓冲区写到某处,以免丢失改变。如果 ‘buftype’ 非空,该消息不会给出。
Warning: List of file names overflow
你一定用了太多的缓冲区了。可能两个缓冲区使用相同的号码,这可能引起问题。你可能要退出 Vim 并重启。
Seek error in swap file write
Write error in swap file
这通常是因为磁盘空间满引起的。Vim 不能把文本写到 |swap-file| 里。它不直接有害。当如果 Vim 意外退出时,有些文本可能丢失,而无法恢复。出现这个问题时,Vim可能会内存溢出。
Xlib: connection to “ 当 Vim 试图连接到 X 服务器,但是 X 服务器不允许连接的时候,就会发生这个错误。 只有建立 X 服务器的连接才能恢复标题和得到 xterm 的剪贴板的支持。不幸的是,这个错误信息无法避免,除非关闭 |+xterm_clipboard| 和 |+X11| 特性。 \\ should be followed by /, ? or & 命令行以反斜杠开始,或者命令的范围包含了在错误位置出现的反斜杠。通常,这是因为命令行的行继续功能被关闭了。从 ‘cpoptions’ 选项里去掉 ‘C’ 标志位就可以打开这一功能。 Argument required 这是由 Ex 命令执行时需要的参数没有提供引起的。 Invalid argument Ex 命令执行时使用了非法的参数。 Trailing characters 在不允许有参数的 Ex 命令后带了参数。 No ! allowed 在不支持带 ! 后缀的 Ex 命令加了 “!” 命令。 No range allowed 在不支持范围参数的 Ex 命令前加了范围。见 |cmdline-ranges|。 Can’t create file {filename} Vim 不能建立临时文件。 Can’t open file %s” Vim 不能读临时文件。 Ambiguous use of user-defined command 有两个用户定义的命令,它们有相同的前缀,而你用命令行补全来执行其中的一个。 示例: Not an editor command 你试图执行一个既不是 Ex 命令也不是用户定义的命令。 这是一个 (不完全) Vim 给出的各种消息的总览: *hit-enter* *press-enter* *hit-return* *press-return* Hit ENTER or type command to continue 如果屏幕上有东西要你阅读,而屏幕即将刷新的时候,就会给出该消息: -> 按 {Vi: 只有 “:” 命令得到处理} 要减少 hit-enter 提示的次数: 另见 ‘mouse’。hit-enter 消息使用 |hl-Question| 高亮组。 *more-prompt* *pager* 如果屏幕被消息全部占据,本消息就可能出现。只有在 ‘more’ 选项打开的时候它才会出现。它的显示使用 |hk-MoreMsg| 高亮组。 任何其它的键使得它们的含义被显示出来。 (*) 反向滚动只有在以下的命令里才支持: (**) 鼠标左键的点击只有在以下情况下才生效: 注意: 键的输入是直接从终端取得的。它不通过映射,预输入也被忽略。 *E10*
*E471*
*E474* *E475*
*E488*
*E477* *E478*
Don’t panic! *E481*
*E482* *E483*
Can’t get temp file name *E484* *E485*
Can’t read file %s” *E464*
*E492*
消息 *messages*
-> 按 “:” 或者其它普通模式的命令字符开始执行该命令。
-> 按
-> 使用菜单。应用命令行模式定义的字符。
-> 如果 ‘mouse’ 包含 ‘r’ 标志位,按鼠标左键和按
-> GUI 模式上,在末行按鼠标左键和按
输入
效果
或 或 j 或
下一行
或 k 或
往回一行 (*)
或
下页
b 或
上页 (*)
d
往下半页
u
往上半页 (*)
q、 或 CTRL-C
终止列表
:
终止列表并进入命令行
抽出 (复制) 无模式的选择|modeless-selection| 到剪贴板(“* 和 “+ 寄存器)
{menu-entry}
命令行模式里定义的菜单项。
(**)
下页
转载请注明:文章转载自: 问说 » vim使用过程中的以前的消息和错误消息代码介绍
本文标题:vim使用过程中的以前的消息和错误消息代码介绍
本文地址:http://www.uedsc.com/vim-error-code.html