gpt4 book ai didi

c++ - Vim 中的自动补全

转载 作者:IT老高 更新时间:2023-10-28 11:25:33 25 4
gpt4 key购买 nike

简而言之,我正在为 Vim 编辑器寻找一个工作自动完成功能。我有 argued before Vim 完全取代了 Linux 下的 IDE,虽然这确实是事实,但它缺少一个重要特性:自动完成。

我知道Ctrl+NExuberant Ctags integration , Taglist , cppcompleteOmniCppComplete .唉,这些都不符合我对“工作自动完成”的描述:

  • Ctrl+N(仅)在您忘记如何拼写 class同时。哦,好吧。
  • Ctags 为您提供了初步的知识,但也有很多缺点。
  • Taglist 只是一个 Ctags 包装器,因此继承了它的大部分缺点(尽管它适用于 listing 声明)。
  • cppcomplete 根本没有按 promise 工作,我无法弄清楚我做错了什么,或者它是否“正常工作”并且限制是设计使然。
  • OmniCppComplete 似乎与 cppcomplete 存在相同的问题,即自动完成无法正常工作。此外,tags 文件再次需要手动更新。

我知道即使是现代的、成熟的 IDE 也不能提供良好的 C++ 代码完成。这就是为什么直到现在我才接受 Vim 在这方面的不足。但我认为代码完成的基本水平并不过分要求,实际上是生产使用所必需的。所以我正在寻找至少可以完成以下事情的东西。

  • 语法意识。 cppcomplete promise (但不为我提供),正确,范围感知自动完成以下内容:

    variableName.abc
    variableName->abc
    typeName::abc

    真的,其他任何东西都完全没用。

  • 可配置性。我需要(轻松地)指定源文件的位置,以及脚本从哪里获取其自动完成信息。事实上,我的目录中有一个 Makefile,它指定了所需的包含路径。 Eclipse 可以解释其中的信息,为什么 Vim 脚本也不能呢?

  • 最新性。一旦我更改了文件中的某些内容,我希望自动完成能够反射(reflect)这一点。我确实想手动触发ctags(或类似的东西)。此外,更改应该是增量,即当我只更改一个文件时, Not Acceptable ctags 重新解析整个目录树(可能很大)。

我忘了什么吗?随时更新。

我对很多配置和/或修补感到满意,但我不想从头开始编写解决方案,而且我不擅长调试 Vim 脚本。

最后一点,我真的很喜欢 Java 和 C# 类似的东西,但我想这太希望了:ctags 只解析代码文件,Java 和 C# 都有庞大的预编译框架那将需要被索引。不幸的是,developing .NET without an IDE比 C++ 更像一个 PITA。

最佳答案

试试 YouCompleteMe .它通过 libclang 接口(interface)使用 Clang,提供语义 C/C++/Objective-C 完成。它很像 clang_complete,但速度更快,并且具有模糊匹配。

除此之外,YCM 还为 C#、Python、Go、TypeScript 等提供语义补全。它还为不支持语义的语言提供非语义、基于标识符的补全。

关于c++ - Vim 中的自动补全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1115876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com