【问题标题】:Vim freezes when using auto-complete with dictionary as well as current file对字典和当前文件使用自动完成时,Vim 冻结
【发布时间】:2014-01-24 23:03:50
【问题描述】:

正如这里所讨论的:Vim auto complete, both with current file and dictionary, 我正在尝试同时使用字典和当前文件来确定自动完成期间的建议。 在我的 vimrc 中,我有以下两行用于自动完成:

set complete=k,.
set dictionary+=pathfile-to-dictionary

但是当我按下自动完成按钮时,我得到了错误:

match in file the-dictionary-pathfile

系统因该错误而完全死机,我必须关闭控制台并重新开始才能回到原来的位置。 我尝试将字典文件的正确设置更改为 777,并尝试将字典文件放在主目录中。同样的错误。

我还注意到,每当我在字典和当前文件中都有一个单词然后尝试自动完成该单词时,就会弹出错误。所以这可能是两者之间的某种碰撞。

如何同时使用字典和当前文件来完成单词?

【问题讨论】:

  • 您可以尝试使用'verbose' 选项来获取有关导致问题的原因的提示。
  • 这看起来不像是一条错误消息。我认为 vim 找到了一个匹配项,并且仍在寻找其他匹配项。如果您尝试使用:set dictionary=pathfile-to-dictionary 而不是使用+=,会发生什么情况?您使用的字典有多大?
  • 我收到相同的消息,系统冻结。但奇怪的是,在此之前我可以毫无问题地进行一些自动完成。我从我的 vimrc 中删除了该行,删除了 .vim/view 下的视图文件夹并通过 get 安装了字典,但结果相同。
  • 我尝试将其设置为详细,但在冻结时它没有给我更多信息。我使用的字典有五行。

标签: vim dictionary autocomplete


【解决方案1】:

抱歉:我要求提供更多信息,但并未尝试重现问题。我认为您在两个地方使用相同的词或至少可能匹配的词是正确的。

它看起来确实像一个错误。我发现<C-C> 一次或两次让我出局;我不必做任何激烈的事情。

如果我颠倒顺序,我发现问题就消失了:

:set complete=.,k

【讨论】:

  • 我试过了,但系统仍然死机。 两次确实让我出去了。
  • 您使用的是什么版本的 vim(和补丁级别)? (我的是 7.3.646。)你是从命令行做的:set complete=.,k,对,不是在你的 vimrc 文件中?我用的字典是cat catharsis catechism catastrophe;我正在编辑的文件是cat dog fish;我通过输入<C-P>完成了“ca”。
  • 好的,现在可以了,我认为是一些视图文件弄乱了它。
  • 字典似乎不适用于特殊字符,如 '(' 等。你知道如何在其中添加这些字符吗?
  • 根据:help 'dictionary'... Each file should contain a list of words. This can be one word per line, or several words per line, separated by non-keyword characters (white space is preferred). Maximum line length is 510 bytes.,也就是说(这样的字符会被解释为分隔词。如果您希望它被视为单词的一部分,请将其添加到 'iskeyword' 选项::set isk+=(。 (我刚刚测试,现在“foo(bar”被识别为一个词,而不是两个。)
【解决方案2】:

这是一个错误,因为 Vim 启动了一个无限循环。我创建了一个patch 并将其发送到 vim-dev 邮件列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    相关资源
    最近更新 更多