Skip to content

Latest commit

 

History

135 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Minimal Neovim Config

A super-minimal Neovim configuration contained in a single init.lua.

It keeps Neovim close to the defaults while adding only the essentials: sensible editor options, syntax highlighting, language-server support, fast file search, image support, and a few practical keymaps. There is no configuration framework, completion engine, statusline, dashboard, or file explorer.

Requirements

  • Neovim 0.12+ for the built-in vim.pack package manager
  • Git for downloading plugins
  • A Nerd Font is recommended for file icons
  • A terminal supporting the Kitty graphics protocol for images, such as Kitty, Ghostty, or WezTerm
  • ImageMagick for converting non-PNG images
  • The language-server executables you want to use; this configuration does not install them

Installation

Back up an existing configuration, then clone this repository:

mv ~/.config/nvim ~/.config/nvim.bak
git clone <repository-url> ~/.config/nvim
nvim

On first launch, Neovim installs the plugins and Tree-sitter parsers automatically. FFF downloads a prebuilt search binary, or builds one when necessary.

Replace <repository-url> with this repository's Git URL.

What is included

Plugins

Plugins are installed with Neovim's native vim.pack.add() API.

Plugin Purpose
nvim-treesitter Fast, accurate syntax highlighting
fff Fuzzy file finding and live grep
nvim-web-devicons File-type icons used by plugins
snacks.nvim Inline terminal image rendering
lean.nvim Lean language support and mappings
nvim-lspconfig Language-server configurations

Tree-sitter parsers are installed for Lua, Python, JavaScript, TypeScript, HTML, CSS, JSON, Bash, Zig, Odin, Go, Go templates, C, C++, and Rust.

The PackChanged autocommand performs plugin-specific setup after installs and updates:

  • Downloads or builds the FFF native binary.
  • Runs TSUpdate for Tree-sitter parsers.

Plugin revisions are recorded in nvim-pack-lock.json for reproducible installs. Do not edit this file manually.

Language servers

Neovim's built-in LSP client is enabled for:

  • Python (pyrefly)
  • Go and Go templates (gopls)
  • Rust (rust_analyzer)
  • JavaScript and TypeScript (tsc)
  • JSON (jsonls)
  • HTML (html)
  • CSS (cssls)
  • Lua (lua_ls)

gopls recognizes .gotmpl and .gohtml template files. lua_ls is configured for Neovim's LuaJIT runtime unless the workspace supplies its own .luarc.json or .luarc.jsonc.

Editor behavior

The configuration enables:

  • Absolute and relative line numbers
  • System clipboard integration
  • Cursor-line highlighting
  • Four-space indentation with spaces
  • Persistent undo in ~/.cache/nvim/undodir
  • Visible whitespace characters
  • Recursive file lookup through path=**
  • True-color support and Neovim's built-in retrobox colorscheme

Line wrapping, swap files, and backup files are disabled.

Keymaps

The leader key is Space.

Mode Key Action
Normal <Space>ff Find files with FFF
Normal <Space>fg Live grep with FFF
Normal/Visual <Space>fw Grep the word under the cursor or selected text
Normal Alt-h Open a terminal below the current window
Terminal Esc Return to Normal mode
Visual J Move the selected lines down
Visual K Move the selected lines up

Plugin updates

Run the native package update UI from Neovim:

:lua vim.pack.update()

Review and confirm the changes. The lockfile and plugin-specific setup hooks are updated automatically.

Repository layout

.
├── init.lua             # Complete Neovim configuration
├── nvim-pack-lock.json  # Locked plugin revisions
└── README.md

Minimal by design

This config provides a small editing foundation rather than a complete IDE. It includes language-server integration, but formatting, linting, debugging, snippets, and autocompletion are intentionally left out. Add only the tools you actually need and keep the setup understandable.

About

My NeoVim Config in the age of AGI

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages