{"name":"YouCompleteMe: Advanced Code Completion and IDE Features for Vim","description":"YouCompleteMe is a powerful, fast, as-you-type code completion and refactoring engine for Vim. It integrates multiple language servers, offering semantic completion, diagnostics, and IDE-like features across various programming languages. With its client-server architecture, it provides an enhanced coding experience directly within Vim.","github":"https://github.com/Valloric/YouCompleteMe","url":"https://osrepos.com/repo/valloric-youcompleteme","source":"osrepos.com","sourceDescription":"This repository profile is provided by osrepos.com, an open source repository discovery platform.","repositoryProfile":"https://osrepos.com/repo/valloric-youcompleteme","generatedFor":"open source discovery and AI-assisted research","markdown":"https://osrepos.com/repo/valloric-youcompleteme.md","json":"https://osrepos.com/repo/valloric-youcompleteme.json","topics":["code-analysis","code-completion","semantic-engine","vim","Python","IDE","productivity","developer-tools"],"keywords":["code-analysis","code-completion","semantic-engine","vim","Python","IDE","productivity","developer-tools"],"stars":null,"summary":"YouCompleteMe is a powerful, fast, as-you-type code completion and refactoring engine for Vim. It integrates multiple language servers, offering semantic completion, diagnostics, and IDE-like features across various programming languages. With its client-server architecture, it provides an enhanced coding experience directly within Vim.","content":"## Introduction\n\nYouCompleteMe is a powerful, fast, as-you-type, fuzzy-search code completion, comprehension, and refactoring engine for [Vim](https://www.vim.org/){:target=\"_blank\"}. Designed to bring advanced IDE-like features directly into your favorite text editor, it significantly enhances productivity for developers working with various programming languages.\n\nThe engine boasts several built-in completers, including an identifier-based engine for all languages, a robust [clangd](https://clang.llvm.org/extra/clangd.html){:target=\"_blank\"}-based engine for C-family languages, [Jedi](https://github.com/davidhalter/jedi){:target=\"_blank\"} for Python, [OmniSharp-Roslyn](https://github.com/OmniSharp/omnisharp-roslyn){:target=\"_blank\"} for C#, [Gopls](https://github.com/golang/go/wiki/gopls){:target=\"_blank\"} for Go, [TSServer](https://github.com/Microsoft/TypeScript/tree/master/src/server){:target=\"_blank\"} for JavaScript and TypeScript, [rust-analyzer](https://rust-analyzer.github.io){:target=\"_blank\"} for Rust, and [jdt.ls](https://github.com/eclipse/eclipse.jdt.ls){:target=\"_blank\"} for Java. It also supports any Language Server Protocol (LSP) compliant server, making it highly versatile.\n\n## Installation\n\nGetting YouCompleteMe up and running typically involves a straightforward process using its `install.py` script. Key requirements include a supported Vim or Neovim version (Vim 9.1.0016+ or Neovim 0.5+), Python 3.8+, CMake 3.13+, and a C++17 compatible compiler (GCC 8+, Clang 7+, MSVC 15.7+).\n\nFor a quick start with all language completers, after installing the plugin via a Vim package manager like [Vundle](https://github.com/VundleVim/Vundle.vim#about){:target=\"_blank\"}, you can often run:\n\nbash\ncd ~/.vim/bundle/YouCompleteMe\npython3 install.py --all\n\n\nThis command handles the setup for C-family, C#, Go, Java, JavaScript/TypeScript, and Rust support, provided their respective runtime dependencies (like JDK for Java, Node.js for JS/TS) are met. Detailed, OS-specific instructions for macOS, Linux, and Windows are available in the official documentation for more advanced configurations.\n\n## Examples\n\nYouCompleteMe provides a seamless and intuitive coding experience. As you type, suggestions appear automatically, filtered intelligently by subsequence matching, meaning `abc` matches `xaybgc`. You can accept suggestions with TAB, cycle through them, or continue typing to refine the list.\n\nKey features demonstrated include:\n*   **Auto-completion**: Instant, context-aware suggestions for identifiers, functions, and variables without needing manual triggers.\n*   **Signature Help**: Displays function prototypes and argument hints as you type function calls.\n*   **Real-time Diagnostics**: Shows errors and warnings directly in the Vim gutter and highlights relevant text, updating as you type.\n*   **Navigation Commands**: `GoToDeclaration`, `GoToDefinition`, `GoToReferences`, `GoToImplementation`, and `GoToType` allow quick jumps through your codebase.\n*   **Refactoring**: Commands like `FixIt` for automatic error corrections and `RefactorRename` for semantic renaming across files streamline code maintenance.\n*   **Semantic Highlighting & Inlay Hints**: Provides richer code highlighting based on semantic types and displays non-buffer text hints for types or argument names, enhancing code readability.\n*   **Symbol Search**: Interactively search and jump to symbols within your workspace or document.\n*   **Type/Call Hierarchy**: Explore inheritance and call relationships interactively.\n\n## Why Use It\n\nYouCompleteMe transforms Vim into a powerful, feature-rich IDE. Its primary advantages include:\n*   **Exceptional Speed**: Designed for performance, offering fast, as-you-type completion.\n*   **Broad Language Support**: Native support for many popular languages (C-family, Python, C#, Go, Java, JS/TS, Rust) and extensibility via LSP.\n*   **Comprehensive Features**: Beyond basic completion, it offers advanced diagnostics, code navigation, refactoring, and semantic analysis.\n*   **Seamless Integration**: Works within the familiar Vim environment, enhancing existing workflows without requiring a full IDE switch.\n*   **Customization**: Extensive options allow users to tailor its behavior to their specific needs and preferences.\n\n## Links\n\n*   **GitHub Repository**: [https://github.com/ycm-core/YouCompleteMe](https://github.com/ycm-core/YouCompleteMe){:target=\"_blank\"}\n*   **Gitter Room**: [https://gitter.im/Valloric/YouCompleteMe](https://gitter.im/Valloric/YouCompleteMe){:target=\"_blank\"}\n*   **Issue Tracker**: [https://github.com/ycm-core/YouCompleteMe/issues?state=open](https://github.com/ycm-core/YouCompleteMe/issues?state=open){:target=\"_blank\"}","metrics":{"detailViews":6,"githubClicks":6},"dates":{"published":null,"modified":"2025-11-25T08:01:03.000Z"}}