HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
ycm-core
YouCompleteMe
Python2013–2023
ycm-core / YouCompleteMe

YouCompleteMe

A code-completion engine for Vim

36Distinct people
38Mentions
1Explicit recommenders
25.9KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A code-completion engine for Vim

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

90% of the stuff I need to do are minor changes that don't need the nuance that requires a full Syntax tree. The other 10% I fire up an IDE for and make the change. For vim and…

zaphar used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year38 dated mentions

Observed mentions: 2013-02-05 11:26:14 UTC to 2023-04-02 18:07:41 UTC.

0510152013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 14 mentions; 2 submissions, 12 comments20132014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20182019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2023

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC14212
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC505
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC505
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC606
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC505
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC000
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC101
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC101
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC000
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC101

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
YouCompleteMe: a code-completion engine for Vim Help, Advice, Support Looking for help, advice, or support? Having problems getting YCM to work? First carefully read the installation instructions for your OS. We recommend you use the supplied install.py - the "full" installation guide is for rare, advanced use cases and most users should use install.py. If the server isn't starting and you're getting a "YouCompleteMe unavailable" error, check the Troubleshooting guide. Next, check the User Guide section on the semantic completer that you are using. For C/C++/Objective-C/Objective-C++/CUDA, you must read this section. Finally, check the FAQ. If, after reading the installation and user guides, and checking the FAQ, you're still having trouble, check the contacts section below for how to get in touch. Please do NOT go to #vim on Freenode for support. Please contact the YouCompleteMe maintainers directly using the contact details below. Vundle Please note that the below instructions suggest using Vundle. Currently there are problems with Vundle, so here are some alternative instructions using Vim packages. Contents Intro Installation Requirements macOS Linux 64-bit Windows Full Installation Guide Quick Feature Summary User Guide General Usage Client-Server Architecture Completion String Ranking General Semantic Completion Signature Help Semantic Highlighting Inlay Hints C-family Semantic Completion Java Semantic Completion C# Semantic Completion Python Semantic Completion Rust Semantic Completion Go Semantic Completion JavaScript and TypeScript Semantic Completion Semantic Completion for Other Languages LSP Configuration Writing New Semantic Completers Diagnostic Display Diagnostic Highlighting Groups Symbol Search Type/Call Hierarchy Commands YcmCompleter subcommands GoTo Commands Semantic Information Commands Refactoring Commands Miscellaneous Commands Functions Autocommands Options FAQ Contributor Code of Conduct Contact License Sponsorship Intro YouCompleteMe is a fast, as-you-type, fuzzy-search code completion, comprehension and refactoring engine for Vim. It has several completion engines built-in and supports any protocol-compliant Language Server, so can work with practically any language. YouCompleteMe contains: an identifier-based engine that works with every programming language, a powerful clangd-based engine that provides native semantic code completion for C/C++/Objective-C/Objective-C++/CUDA (from now on referred to as "the C-family languages"), a Jedi-based completion engine for Python 2 and 3, an OmniSharp-Roslyn-based completion engine for C#, a Gopls-based completion engine for Go, a TSServer-based completion engine for JavaScript and TypeScript, a rust-analyzer-based completion engine for Rust, a jdt.ls-based completion engine for Java. a generic Language Server Protocol implementation for any language and an omnifunc-based completer that uses data from Vim's omnicomplete system to provide semantic completions for many other languages (Ruby, PHP, etc.). Here's an explanation of what happened in the last GIF demo above. First, realize that no keyboard shortcuts had to be pressed to get the list of completion candidates at any point in the demo. The user just types and the suggestions pop up by themselves. If the user doesn't find the completion suggestions relevant and/or just wants to type, they can do so; the completion engine will not interfere. When the user sees a useful completion string being offered, they press the TAB key to accept it. This inserts the completion string. Repeated presses of the TAB key cycle through the offered completions. If the offered completions are not relevant enough, the user can continue typing to further filter out unwanted completions. A critical thing to notice is that the completion filtering is NOT based on the input being a string prefix of the completion (but that works too). The input needs to be a subsequence match of a completion. This is a fancy way of saying that any input characters need to be present in a completion string in the order in which they appear in the input. So abc is a subsequence of xaybgc, but not of xbyxaxxc. After the filter, a complicated sorting system ranks the completion strings so that the most relevant ones rise to the top of the menu (so you usually need to press TAB just once). All of the above works with any programming language because of the identifier-based completion engine. It collects all of the identifiers in the current file and other files you visit (and your tags files) and searches them when you type (identifiers are put into per-filetype groups). The demo also shows the semantic engine in use. When the user presses ., -> or :: while typing in insert mode (for C++; different triggers are used for other languages), the semantic engine is triggered (it can also be triggered with a keyboard shortcut; see the rest of the docs). The last thing that you can see in the demo is YCM's diagnostic display features (the little red X that shows up in the left gutter; inspired by Syntastic) if you are editing a C-family file. As the completer engine compiles your file and detects warnings or errors, they will be presented in various ways. You don't need to save your file or press any keyboard shortcut to trigger this, it "just happens" in the background. And that's not all... YCM might be the only Vim completion engine with the correct Unicode support. Though we do assume UTF-8 everywhere. YCM also provides semantic IDE-like features in a number of languages, including: displaying signature help (argument hints) when entering the arguments to a function call (Vim only) finding declarations, definitions, usages, etc. of identifiers, and an interactive symbol finder displaying type information for classes, variables, functions etc., displaying documentation for methods, members, etc. in the preview window, or in a popup next to the cursor (Vim only) fixing common coding errors,
Read the full README on GitHub

What Hacker News says

38 sources
I've had good luck so far with Vim + You Complete Me [1] (which uses a Racer background). Check the GIF in its repo, but it gets you code completion boxes in Vim that pop up automatically in which you can tab through for the next results. It's very ergonomic compared to Vim's awkward built-in completion shortcuts, and gives you completion intelligence that's trending towards something like Visual Studio + C#. [1] https://github.com/Valloric/YouCompleteMe
In Rust and the Future of Systems Programming [video]
If you just need a vim with python, it's fairly simple to compile from source. You can start by modifying what's given here: https://github.com/Valloric/YouCompleteMe/wiki/Building-Vim-... About the package system, yes there really isn't any documentation at all because it doesn't do all that much in the first place. I would suggest just using vim-plug or another package manager. Also, there really isn't anything to learn in Neovim. Mainly just try out the terminal emulator and come up with some terminal maps.
In Vim: So long Pathogen, hello native package loading
Well, since we are stating what we want in an editor, my most wanted feature is fuzzy autocomplete on everything. Functions, variables, whatever. It must understand the context, so if I am about to call a class function on a class, it should only give suggestions that are in that class. It must be fuzzy, because I want to type whatever letters in a row I want, and if it exists in the name, it should suggest it. This mostly needs compiler/linter/interpreter support. I want it to just work. It should detect the language I'm using, and just search/download/connect everything up so I have my awesome fuzzy autocomplete. Why is that not a thing? There are projects like https://github.com/Valloric/YouCompleteMe and other ones for Vim and Emacs, but they are not yet what I want them to be.
In The simple things I want in a text editor

Showing the 15 most recent of 38 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.