9

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

现在我试着从基础开始。试图让自动完成首先在 HTML 文档上工作。但即使这也成为一个问题。

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

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

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

filetype plugin indent on

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

大家觉得我接下来应该怎么做?我不知道我应该从这里去哪里..

无论如何,当我使用“全方位完成”选项时。又名 (Ctrl+X, Ctrl+O),它总是说:

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

语法高亮默认工作,甚至不使用:

:syntax on/:syntax enable

它只是按应有的文件类型识别。这样就可以了。自从我取消注释“文件类型插件缩进”以来,缩进就开始工作了。但我无法让它正常工作。

但也许,我在这里错过了重点,并以错误的方式思考了这一点。所以如果我错了,请纠正我。我正在寻找什么功能,当我输入“<”时,它会自动弹出一个下拉列表,其中包含所有可能的标签,并说我输入“<”它会进一步细化为“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 也可以自动加载。

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

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

希望有帮助。

4

2 回答 2

1

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

你不需要任何东西,~/.vim/autoload因为htmlcomplete.vim已经在$VIMRUNTIME.

简而言之,鉴于我对您的设置的了解,完成应该可以工作。

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

编辑

Omnicompletion 是正确的功能,但您正在寻找一个特定的插件,该插件在每次击键时都在引擎盖下使用omnicompletion,因为没有内置设置来启用自动完成。AutoComplPop就是这样一个插件(也是我使用的那个),还有其他插件。选择与您以前的经验最匹配的一个。

你不应该触摸/usr/share/vim/or中的任何东西/etc/vim/。你的所有设置都应该进入~/.vimrc,你的插件应该进入~/.vim/.

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

在进一步操作之前,您必须将默认文件和目录恢复为其原始状态。

结束编辑

于 2012-08-20T11:02:06.507 回答
1

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

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

我猜你有一个插件或其他东西。实施起来并不难。在不加载任何插件的情况下启动 Vim 以检查它。无论如何,对于这个问题。

很多人不知道,Vim 7+对 XML/XHTML/HTML 语言有很好的支持(不需要插件!),并且有可能用任何你想要的基于 XML 的语言来扩展它。您可以做的是使用准备 Vim 定义的 DTD/RNG 转换器,该定义用于为您提供全方位的完成。

例如,我的 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>

现在尝试插入正文标签,键入“bo”并按 Ctrl X O. Bang。尝试添加一个属性,输入“on”并再次点击它。答对了。

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

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

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

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

于 2012-08-20T11:42:00.403 回答