VIM Omni完成:未找到模式

时间:2012-08-20 10:46:49

标签: vim

我一直试图让VIM自动完成工作,但遗憾的是我遇到了问题。

现在我尝试从基础开始。试图让自动完成首先处理HTML文档。但即便如此,这也成为一个问题。

我设置了正确的DOCTYPE,甚至指定了不同的DOCTYPE以查看它是否适用于Transitional,Strict,甚至是XHTML或HTML5,但似乎都没有。

htmlcomplete.vim文件确实位于“autoload”目录中。

在我的vimrc文件中,应用了正确的设置:

filetype plugin indent on

但是这仍然没有用,并且没有多少研究对我有帮助,因为唯一相关的结果是VIM中C ++自动完成的问题。 (目前vim并不完全支持,但它支持HTML自动完成,因为我知道因为我以前在不同系统的多个实例上工作过。)

你们认为我接下来应该怎么做?我不确定我应该从哪里开始......

无论如何,当我使用“omni completion”选项时。 AKA(Ctrl + X,Ctrl + O),它总是说:

Omni Completion (^O^N^P) Pattern not found

默认情况下,语法高亮显示无需使用:

:syntax on/:syntax enable

它只是通过文件类型识别它应该。这样才行。 自从我取消注释“filetype plugin indent on”后,缩进就开始工作了。但我不能让这个正常工作。

但也许,我在这里忽略了这一点,并以错误的方式思考这一点。如果我错了,请纠正我。 我正在寻找什么功能,当我输入“<”它会自动显示一个包含所有标签的下拉列表,并说我输入“<”它将进一步细化为“div”等。这是我在Vim中使用的功能,没有任何配置,只是默认情况下。

当我使用“Ctrl + N”或“Ctrl + P”命令时,我得到一个非常小的(12个标签)可能标签列表,但这是手动的,而不是自动检测键入的“<”。

我看错了吗? Omni Completion不是我应该考虑配置的正确选择吗?或者这是一个提供此功能的不同插件?

每当我调查它时,它总是指“Ctrl + X + Ctrl + O”作为语法自动完成,所以我认为这是我已经知道的功能。但也许我错了。

所以有人可以帮助我更好地解释这一点,指出我正确的方向。或者让我知道我正走在正确的道路上(如果我是)并帮助我解决这个问题?

谢谢你们。 小心。

根据要求,这里是信息:

  

vimrc文件位于:http://pastebin.com/QfUDVvdP

     

我的版本是7.3(又名vim73)

     

我正在使用CLI版本,因为我发现GVIM实际上更令人困惑。但我有两个。并且他们使用相同的vim运行时。

     

我没有添加任何插件或额外功能,因为这是Ubuntu 12.04的全新安装,这也是一个全新的安装。唯一被改变或添加的是“smali.vim”语法突出显示语法文件夹,以及opa.vim和opajs.vim。也是opacomplete.vim自动加载。

     

vimrc和vimrc.tiny以及/ etc / vim /文件夹中的gvimrc。

     

并且vim的所有文件都位于默认目录/ usr / share / vim / vim73 /和/ usr / share / vim /中。除了已经指定的文件之外,没有任何文件被移动,更改或更改。

希望有所帮助。

2 个答案:

答案 0 :(得分:1)

Omnicompletion是正确的功能,<C-x><C-o>是正确的捷径。顺便说一下,你应该停止将它称为自动完成,因为它远非自动化。

~/.vim/autoload中您不需要任何内容​​,因为htmlcomplete.vim已经在$VIMRUNTIME

简而言之,鉴于我对您的设置的了解,完成应该有效。

但事实并非如此。请附上您的~/.vimrc的内容,已安装的插件列表(以及它们的安装方式/位置)以及有关Vim版本,平台以及使用GUI或CLI版本的详细信息。

修改

Omnicompletion是正确的功能,但您正在寻找一个特定的插件,在每次按键时使用omnicompletion,因为没有内置设置来启用自动完成。 AutoComplPop是一个这样的插件(也就是我使用的插件),there are others.选择与您以前的经历最匹配的插件。

您不应触摸/usr/share/vim//etc/vim/中的任何内容。您的所有设置都应该转到~/.vimrc,您的插件应该进入~/.vim/

~
  .vim/
    autoload/
      opacomplete.vim
    syntax/
      opa.vim
      opajs.vim
      smali.vim
  .vimrc

在继续前进之前,您必须将默认文件和目录恢复为原始状态。

EndEdit中

答案 1 :(得分:1)

首先,Omni Completion从未自动工作(或工作)。你说插入'&lt;'时会出现弹出窗口 - 默认情况下,这在Vim中不起作用。您必须按Ctrl X O组合。至少它不适合我。

http://vimdoc.sourceforge.net/htmldoc/version7.html#new-omni-completion

我猜你有这个或那个插件。实现它并不难。启动Vim而不加载任何插件来检查它。无论如何,问题。

许多人不知道,Vim 7+对XML / XHTML / HTML语言有很强的支持不需要插件!),可以随意扩展它您想要的基于XML的语言。你可以做的是使用DTD / RNG转换器来准备Vim定义,用于全面完成。

例如,我的Vim安装默认包含对HTML4和XHTML语言的支持:

$ rpm -ql vim vim-common | grep xml
/usr/share/vim/vim73/autoload/xml
/usr/share/vim/vim73/autoload/xml/html32.vim
/usr/share/vim/vim73/autoload/xml/html401f.vim
/usr/share/vim/vim73/autoload/xml/html401s.vim
/usr/share/vim/vim73/autoload/xml/html401t.vim
/usr/share/vim/vim73/autoload/xml/html40f.vim
/usr/share/vim/vim73/autoload/xml/html40s.vim
/usr/share/vim/vim73/autoload/xml/html40t.vim
/usr/share/vim/vim73/autoload/xml/xhtml10f.vim
/usr/share/vim/vim73/autoload/xml/xhtml10s.vim
/usr/share/vim/vim73/autoload/xml/xhtml10t.vim
/usr/share/vim/vim73/autoload/xml/xhtml11.vim
/usr/share/vim/vim73/autoload/xml/xsd.vim
/usr/share/vim/vim73/autoload/xml/xsl.vim
/usr/share/vim/vim73/autoload/xmlcomplete.vim
/usr/share/vim/vim73/compiler/xmllint.vim
/usr/share/vim/vim73/compiler/xmlwf.vim
/usr/share/vim/vim73/ftplugin/xml.vim
/usr/share/vim/vim73/indent/xml.vim
/usr/share/vim/vim73/syntax/docbkxml.vim
/usr/share/vim/vim73/syntax/xml.vim

诀窍是Vim的自动加载功能。您需要确保您打开的文件具有正确的DOCTYPE定义。因此,对于HTML和XHTML文件使用它,然后Vim 7+将自动为您启用XML / HTML全向完成。 HTML4示例:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                      "http://www.w3.org/TR/html4/loose.dtd">
<html>
</html>

现在尝试插入body标签,输入“bo”并按Ctrl X O. Bang。尝试添加属性,键入“on”并再次点击它。宾果

您可以使用Ctrl X O和其他功能:

  • 在“&lt;”之后完成标签名称,具体取决于上下文
  • 标签内部完成适当的属性
  • 当属性具有有限数量的可能值时,有助于完成 它们
  • 实体的完整名称(在| xml-omni-datafile |中定义) 当前文件“
  • 在“之后使用”

更多信息(以及可能的用户自定义使用自己的XML定义):

http://vimdoc.sourceforge.net/htmldoc/insert.html#ft-xml-omni