Valloric

YouCompleteMe: Add Smart Code Completion to Vim

YouCompleteMe is a Vim completion and code-understanding engine that combines fuzzy identifier search with semantic language tools. It suits Vim users who want IDE-like navigation, diagnostics, and refactoring without leaving their editor.

View on GitHub Compare
Stars
25.9k
Forks
2.7k
Stars, last 30 days
+2

Our take

Health score

42/100

How it is scored
Activity
19
Community
84
Issues
46
Pull requests
20

+2 stars in the last 30 days

  • More contributors than 78% of the projects we track

Project history

Daily GitHub snapshots since Oct 7, 2026. History covers stars and forks; health signals are not tracked historically.

Selected snapshot

Stars

25,874

Forks

2,740

Change since Nov 12, 2026: 0 stars·0 forks

Overview

YouCompleteMe is a code-completion engine for Vim. It addresses the gap between basic text-editor completion and IDE assistance by suggesting identifiers as you type and connecting to semantic engines or Language Server Protocol servers for deeper code understanding.

It is aimed at developers who work in Vim and want features such as code navigation, diagnostics, and refactoring in the editor. Language support and available features vary by completer, and some require separate tools and project configuration.

Key Features

  • Fuzzy, subsequence-based completion from identifiers across files and tags.
  • Semantic completion through language-specific engines and compatible Language Server Protocol servers.
  • Navigation to declarations, definitions, references, and other symbols where supported.
  • Diagnostics, signature help, documentation, and type information for supported languages.
  • Refactoring, code formatting, and import management where supported by the language engine.
  • Filepath and Vim omnifunc completion, plus integration with UltiSnips.

Use Cases

  • Vim users who want suggestions to appear while typing instead of relying only on manual completion commands.
  • C or C++ developers who can provide a compilation database or configuration flags and want clangd-powered analysis.
  • Developers working across supported languages who want navigation and diagnostics without switching to a separate IDE.
  • Users of other languages who have a compatible language server and want to connect it through YCM's LSP support.

Getting Started

After installing the Vim plugin and its prerequisites, run the installer from the repository directory to enable all completers:

python3 install.py --all

See the README for platform-specific setup, language requirements, and configuration details.

Considerations

  • Installation builds compiled components and requires a supported Vim setup with Python 3.12 or later, plus CMake and a supported compiler.
  • Enabling all language completers requires additional language runtimes and tools; a compatible language server may also need its own configuration.
  • C-family semantic analysis needs accurate project compile flags, usually supplied through a compilation database or .ycm_extra_conf.py.
  • Windows support is deprecated and unmaintained. Some features are Vim-only, and Neovim is not officially supported.
  • The GPL-3.0 license may not fit every distribution or integration requirement.

Found this useful?

Share it with someone who would like YouCompleteMe.

Comparisons