Neovim Completion Cockpit
Up: Neovim Config Tutorial Down: LSP completion plugins, snippets
Completion is not just a dropdown. In this config it is a cockpit where several instruments offer signals, and each filetype gets a different panel layout.
Main Controls
blink.cmp is the engine. The config keeps the controls opinionated:
| Control | Behavior |
|---|---|
<C-l> | Accept completion. |
| Arrow keys | Disabled, so movement stays Vim-like. |
| Menu border | Single border, visually quiet. |
| Docs | Auto-show after a short delay. |
| Command line | Completion is enabled for /. |
Default Sources
Most buffers can draw from LSP, paths, snippets, Git, ripgrep, calculator, and emoji sources.
That mix means completion can answer different kinds of questions:
| Source | Question it answers |
|---|---|
| LSP | What does the language server know? |
| Path | What file am I pointing at? |
| Snippets | What pattern do I write often? |
| Git | What issue, PR, branch, or commit context matters? |
| Ripgrep | What words already exist in this project? |
| Calc | What is this small expression worth? |
| Emoji | What symbol belongs in this prose or issue text? |
Filetype-Specific Menus
The config changes sources by context.
| Filetype | Completion bias |
|---|---|
| Comments | Buffer words only, keeping comments calmer. |
| Lua inside the Neovim config | Adds LazyDev and Neovim Lua API knowledge. |
| Python | Adds notebook-related completion when enabled. |
| Markdown notes | Avoids project-wide ripgrep in selected vault contexts to reduce noise. |
| Octo buffers | Adds Git and emoji context. |
| Org files | Adds org, paths, snippets, ripgrep, emoji, and calc. |
| SQL | Adds Dadbod database completion. |
| Terminal buffers | Prefers paths. |
| DAP buffers | Adds debugger completion. |
Environment Keys Without Environment Leaks
ecolog.nvim helps navigate and insert environment keys. Public notes should never include real env values. The useful teaching point is the workflow, not the secrets.
-- Good public example
vim.env.DATABASE_URL = "postgres://example"Related: snippets, debug test data plugins