vim使用过程中的以前的消息和错误消息代码介绍

本文包含一个 Vim 产生的消息和错误信息按字母排序的列表。如果你不理解消息的含义,可以在这里查找。不过,该列表不一定完整。部分翻译可能不是很准确,敬请谅解,如果你想添加可以在本文留言讨论。

本文约定:

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

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

:messages” 命令可以查看以前给出的消息。根据 ‘shortmess’ 选项的设置,消息可能被覆盖或者截断。这时该命令尤其有用。

记住的消息数目固定是 20。

如果使用翻译的消息,显示的第一行会告诉你谁维护这个消息翻译。如果你发现问题,可以联系该维护者。

如果你想要查找特定 (错误) 消息,使用消息开始的 ID 号。比如,要得到下面消息的帮助:

  1. E72: Close error on swap file

或者 (经翻译的):

  1. E72: Errore durante chiusura swap file

使用:

  1. :help E72

如果你很忙,不按 shift 键也可以:

  1. :help e72

错误信息 *error-messages*

显示的错误信息,如果在你没读到之前就已经消失了,你可以这样重新看到:

  1. :echo errmsg

或者查看最近的消息列表:

  1. :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|

  1. ATTENTION
  2. 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 会消耗很多颜色。要避免这个问题,你可以告诉它使用自己的颜色映射表:

  1. netscape -install

或者告诉它只使用有限种的颜色 (64 应该足够了):

  1. netscape -ncols 64

这也可以通过 Xdefaults 文件设置:

  1. Netscape*installColormap: Yes

或者

  1. 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

在使用 “: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)

系统为了保护你,不让你不小心覆盖已存在文件。如果你需要,使用相同的命令,但在命令之后加 “!”。例如:

  1. :w /tmp/test

改成:

  1. :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}

一个被改变的缓冲区没有文件名。所以不能被写入。你需要给缓冲区一个文件名:

  1. :buffer {number}
  2. :file {filename}

*E33*

No previous substitute regular expression

在 “:substitute” 命令里,模式里使用的 ‘~’ 字符会被替换成上次用到的模式。如果这个命令还没用过,就会失败。见 |/~|。

*E35*

No previous regular expression

使用空的搜索模式会引用到上次用到的模式。如果没有上一次搜索,那么就会失败。

*E24*

No such abbreviation

你使用了 “:unabbreviate” 命令,但是所带的参数不是一个已有的缩写。这个命令的各种变形都会给出相同的消息 “:cunabbrev”、”:iunabbrev”,等等。检查一下尾部的空白。

  1. /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” 写回,或者,如果你还是要放弃之并丢失所有的改变,可以在你使用的命令之后增加 ‘!’ 字符。例如:

  1. :e other_file

改为:

  1. :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’ 选项,或者在你用的命令后面增加 ‘!’ 字符。例如:

  1. :w

改为:

  1. :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’ 限制最高的递归层数。该例子显示如何得到这个消息:

  1. :map gq :normal gq

如果你输入 “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 需要在命令后使用 !,比如:

  1. ":3,10w!"。

Warning: Cannot convert string “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 “

当 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

有两个用户定义的命令,它们有相同的前缀,而你用命令行补全来执行其中的一个。

  1. |user-cmd-ambiguous|

示例:

  1. :command MyCommand1 echo "one"
  2. :command MyCommand2 echo "two"
  3. :MyCommand

*E492*

Not an editor command

你试图执行一个既不是 Ex 命令也不是用户定义的命令。

消息 *messages*

这是一个 (不完全) Vim 给出的各种消息的总览:

*hit-enter* *press-enter* *hit-return* *press-return*

Hit ENTER or type command to continue

如果屏幕上有东西要你阅读,而屏幕即将刷新的时候,就会给出该消息:

  • - 执行完外部命令以后 (例如,”:!ls” 和 “=”)。
  • - 在状态行显示的内容超过了窗口的宽度或者跨越到 ‘showcwd’ 或者 ‘ruler’ 的输出位置。

-> 按 或者 可以重画屏幕并继续,除此以外就像该键没按过一样。
-> 按 “:” 或者其它普通模式的命令字符开始执行该命令。
-> 按 复制 (抽出) 一个无模式的选择到剪贴板寄存器中。
-> 使用菜单。应用命令行模式定义的字符。
-> 如果 ‘mouse’ 包含 ‘r’ 标志位,按鼠标左键和按 效果相同。不过这使得选择文本成为不可能。
-> GUI 模式上,在末行按鼠标左键和按 效果相同。

{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| 高亮组。

输入 效果
或 或 j 或 下一行
或 k 或 往回一行 (*)
下页
b 或 上页 (*)
d 往下半页
u 往上半页 (*)
q、 或 CTRL-C 终止列表
: 终止列表并进入命令行
  抽出 (复制) 无模式的选择|modeless-selection| 到剪贴板(“* 和 “+ 寄存器)
{menu-entry} 命令行模式里定义的菜单项。
(**) 下页

任何其它的键使得它们的含义被显示出来。

(*) 反向滚动只有在以下的命令里才支持:

  1. :clist

(**) 鼠标左键的点击只有在以下情况下才生效:

  • - GUI: 屏幕的最后一行。
  • - ‘mouse’ 里定义了 ‘r’ (不过这时文本选择不会工作)。

注意: 键的输入是直接从终端取得的。它不通过映射,预输入也被忽略。

  1. vim:tw=78:ts=8:ft=help:norl:
本站文章除注明转载外,均为本站原创或翻译,欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创和谐网络环境。
转载请注明:文章转载自: 问说 »  vim使用过程中的以前的消息和错误消息代码介绍
本文标题:vim使用过程中的以前的消息和错误消息代码介绍
本文地址:http://www.uedsc.com/vim-error-code.html

你可能感兴趣的:(cmd,command,cmd,编辑器,vim)