使用VIM进行C++/Qt开发并带有自动补全功能

14

在工作中,我主要使用 C++ 进行编程,需要图形化、多线程或网络功能时则使用 Qt。我们的环境是 Windows,我目前使用 Visual Studio(仅用于调试)和 Qt Creator 进行实际编码(因为我更喜欢它们的自动完成功能而非 VS)。

在家中,我主要使用 Linux(Fedora),仍然使用 Qt Creator,因为我还没有找到替代品。编辑器方面,我几乎都使用 VIM,并且我基本上喜欢它的所有功能。

我想要能够在编程时使用 VIM(无论是在家中还是在工作中),但发现没有自动完成功能会让我变得不那么高效。

有没有人知道如何获得“好”的自动完成功能(是的...这个描述并不是很详细...“好”...)以及在 VIM 中为 C++ 和 Qt 编程提供帮助的教程、论坛帖子或个人经验?我相信在 Linux/VIM/Qt/C++ 上做到这点非常容易,但在 Windows 上也有可能吗?

谢谢

4个回答

12

看一下这个:http://vim.wikia.com/wiki/VimTip1608
虽然配置有点麻烦,但你会得到类似VS的自动完成功能,以及所有美味的omnicompletion东西,例如用Ctrl-P来补全单词、Ctrl-X-Ctrl-L来补全整行等。


谢谢提供链接。看起来正是我需要的东西。 - g19fanatic
非常好用。谢谢您的发布。有一点需要注意,在链接附近确保阅读底部的评论。它也可以自动完成本地变量名称,这也很有用。 - phyatt

9

我不认为我的vimrc中有任何魔法设置可以启用此功能,但我只需开始输入,然后(仍处于插入模式)按下Ctrl+N,vim就会建议补全。它似乎检查打开的缓冲区以获取可能的补全。它不是完美的,但在98%的情况下,它可以满足我的要求,而且不需要设置工作。


非常有趣,我得试试! - g19fanatic
很高兴我使用了搜索而不是再发一篇关于这个问题的问题。这正是我所需要的。 - John Riselvato
1
这真的成为了一个时间节省器,只要你在不同的缓冲区中保持一堆文件打开。 - g19fanatic
请查看http://vimdoc.sourceforge.net/htmldoc/insert.html#i_CTRL-N和http://vim.wikia.com/wiki/Any_word_completion以获取更多信息! - phyatt
我想回答这个问题并更新一下... 我现在仅使用本地VIM(与tmux结合)进行c++开发。诀窍是使用此默认自动完成,同时打开尽可能多的缓冲区。我使用find和grep在cmd行中加载VIM,并使用每个目录和文件。然后,我使用Ctrl+NCtrl+P:b filename(它有自己的搜索)相结合。它会从当前打开的缓冲区、其他切换的窗口、其他打开的标签、最近打开的缓冲区以及任何其他匹配项中提供项目... https://gitlab.com/snippets/1885618 - g19fanatic

2

你可能想看一下OmniCpp

这是一组基于c-tags的Vim脚本,可以实现自动完成。

它的安装设置并不是很直接,但之后效果相当不错。基本上,你需要为使用的include文件生成c-tags标签。然后该插件将集成到Vim中,根据变量类型补全你所输入的内容。


有没有任何可以帮助我入门的链接?看起来我需要ctags和omnicpp。它们在Windows上可用吗? - g19fanatic
2
@g19fanatic:当然。我在Linux和Windows上都使用它。非常好用。看看我发布的链接和这个链接:http://ctags.sourceforge.net/ - ereOn

1

由于在配置omnicompletion方面,vim是一个“痛苦的”选择,并且没有人提到过这一点。既然你也想在Windows电脑上解决这个问题,我找到了最好且最不费力的解决方案-激活qt creator中的“Fake Vim”。因为它已经预置在最近版本的选项中,所以我相信这将会帮助很多其他人。

工具-->选项-->FakeVim and [x] Use Fake Vim

在qt creator中使用Fake Vim

这样,QT-creator的行为就像vim一样,而打开qt-crator和打开vim之间不应该有任何区别。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接