YouCompleteMe:Vim 的代码补全引擎
文章目录YouCompleteMeVim 的代码补全引擎YouCompleteMeVim 的代码补全引擎YouCompleteMe 是一款 Vim 代码补全引擎在 GitHub 上有 25k Star。它能在你输入代码的时候实时弹出补全建议不需要按任何快捷键。你只管打字候选列表会自己冒出来。觉得不相关就继续输入觉得有用按一下 TAB 就能接受。这款插件内置了多个补全引擎覆盖的语言很广。C/C 用的是 clangdPython 用的是 JediC# 用的是 OmniSharp-RoslynGo 用的是 GoplsJavaScript 和 TypeScript 用的是 TSServerRust 用的是 rust-analyzerJava 用的是 jdt.ls。除了这些语言专属引擎还有一个通用的 Language Server Protocol 实现理论上任何 LSP 兼容的语言服务器都能接入。加上一个基于标识符的引擎基本覆盖了所有编程语言。补全过滤的逻辑比较有意思。它用的是子序列匹配也就是只要输入的字符按顺序出现在候选字符串中就算匹配不需要是前缀关系。比如输入 abcxaybgc 是匹配的xbyxaxxc 就不匹配。过滤之后还有一套排序机制把最相关的候选排到最前面大多数情况下按一次 TAB 就够了。除了补全YouCompleteMe 还提供了一组 IDE 级别的功能。函数调用时会显示参数提示告诉你当前该填第几个参数。可以快速跳转到符号的声明、定义和用法位置。选中一个标识符能看到它的类型信息。文档可以在预览窗口里查看也能以弹窗的形式出现在光标旁边。常见的编码错误比如漏了分号或者拼错了变量名它能自动修复。跨文件重命名变量也没问题。代码格式化、整理 import 这些常规操作也都支持。不同语言支持的功能不一样需要对照官方文档确认。编辑 C/C 文件的时候诊断信息会在后台自动生效。插件会在你输入的过程中编译文件检测到警告或错误就在编辑器左侧 gutter 标记红色符号不需要手动保存或者按快捷键触发。YouCompleteMe 还支持 Unicode 补全编辑包含非 ASCII 字符的代码时不会有乱码或匹配失败的问题。输入 ./ 的时候能触发文件路径补全。它还集成了 UltiSnips 代码片段引擎写代码时可以直接调用已有的代码片段。配置方面YouCompleteMe 提供了大量可调参数。补全触发方式、诊断信息的显示位置和样式、语义高亮、内联提示inlay hints这些都能自定义。比如可以把诊断信息的虚拟文本设为只在离开插入模式时更新减少输入时的视觉干扰。补全菜单的排序策略、悬浮文档的弹出方式也都可以调整。插件装好之后有合理的默认值开箱即用但如果你有特殊偏好官方文档里列出了完整的选项列表供参考。这个插件对运行环境有一定要求。Vim 的最低版本是 9.1.0016Python 需要 3.12 或更高版本。Neovim 最低要求 0.5但部分功能不可用官方也不提供正式支持。编译方面GCC 最低 8Clang 最低 7MSVC 最低 15.7CMake 需要 3.13 以上。安装流程不算复杂。macOS 用户先用 Homebrew 装好 CMake、Python 和 Vim或者 MacVim然后通过 Vundle 安装插件本体最后运行 install.py 编译。加上 --all 参数可以一次性启用所有语言支持也可以按需加 --clangd-completer、–go-completer、–ts-completer 这样的参数只启用特定语言。Linux 和 Windows 的流程类似只是包管理器不同。YouCompleteMe 采用 GPL v3 许可证开源社区持续维护和更新。GPL v3 许可证开源社区持续维护和更新。