【问题标题】:Vim configuration throwing errors on one machine but not the otherVim 配置在一台机器上抛出错误,但在另一台机器上没有
【发布时间】:2011-12-06 14:05:11
【问题描述】:

考虑到两个系统具有相同的 vim 配置,什么可能导致 Vim 在一台机器上抛出错误而不在另一台机器上抛出错误?

我有两台 Mac OS X Lion 机器,它们都运行操作系统附带的默认 vim 二进制文件。

我将 .vimrc 和 .vim 目录保存在 git repo 中。但是,在其中一台机器上启动 vim 会引发错误:

Error detected while processing function <SNR>41_CreateMaps..<SNR>41_DefineVariables..AutoClose#DefaultPairs..AutoClose#ParsePairs:
line   18:
AutoClose: Bad pair string - a pair longer then two character
line   19:
E121: Undefined variable: a:sring
E15: Invalid expression: " `- String: " . a:sring
line   20:
 `- Pair: «» Pair len: 4

我使用Vundle 插件来组织我的插件。该错误似乎是由 AutoClose 插件引起的。

为了节俭,我删除了 vim 目录和我的主目录中的所有 .vim 文件,然后从 repo 中获取所有内容并重新安装插件,但错误仍然存​​在。

我应该补充一点,启动 MacVim 时不会出现问题,只有终端中的 vim。

由于 vim 预装了 Mac OS X Lion,而我的另一台机器(运行相同版本的 Mac OS)在使用相同的设置时不会产生这些错误,我不知道该去哪里找……

p>

如果有什么不同,两台机器都安装了 MacVim,但错误只显示在其中一台上,并且仅在从命令行启动 vim 时显示。

【问题讨论】:

  • 它是否与“AutoClose”插件隔离?另外,是否有可能在 vim 而不是 MacVim 中存在一个依赖加载一个插件的依赖关系?

标签: macos vim macvim


【解决方案1】:

这可能是因为文件的编码(latin1 vs UTF-8)与 VIM 预期的不同。

如果您将 scriptencoding utf-8 放在 .vimrc 的顶部(假设您的 vimrc 实际上是用 UTF-8 编码的,如果它是用 Latin1 编码的,则使用 ISO-8859-1),从那时起的所有内容都应该被正确识别.

要查看有关此功能的更多文档,请在 vim 中输入 :help scriptencoding。

(来源:http://vim.wikia.com/wiki/Converting_LANG_to_UTF-8 和 vim 手册)

【讨论】:

  • 我按照您的建议添加了scriptencoding utf-8,但错误仍然发生。
  • 我认为您需要将其放入导致错误的插件中。并告诉插件的作者 :)
  • 成功了,干杯!我很好奇,根据错误,您是如何确定问题出在编码上的?
  • 它说“«»”对的长度为 4。这只发生在多字节编码中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-06
  • 2016-02-19
  • 1970-01-01
  • 2018-09-18
  • 2016-09-28
  • 2015-11-08
  • 1970-01-01
相关资源
最近更新 更多