Custom neovim configuration adding IDE-like features
- Lazy package manager
- Custom light/dark color theme
- File explorer
- LSP support with autocompletion
- Treesitter syntax highlighting
- Global grep/find-and-replace
- Neovim >= v0.11.0
-
Install Homebrew (skip if already installed):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" -
Install Neovim and dependencies:
brew install neovim fd ripgrep tree-sitter node
fd— fast file finder (used by Telescope)ripgrep— fast text search / live greptree-sitter— builds syntax-highlighting parsersnode— required by several language servers
-
Install a Nerd Font for icons, then set it as your terminal font:
brew install --cask font-jetbrains-mono-nerd-font
-
Clone this config (back up any existing
~/.config/nvimfirst):git clone https://github.com/fenghourun/nvim.git ~/.config/nvim -
Launch Neovim. On first start, Lazy bootstraps itself and installs all plugins, and Mason automatically installs the configured language servers. Give it a minute to finish, then restart Neovim. (Run
:Masonanytime to review or manage installed tools.)
The dark theme (chalk) uses a transparent editor background (background = "none" in lua/theme/themes/chalk.lua) so the terminal's own background
opacity shows through. This is intended to be paired with a terminal configured
for a translucent window — for example WezTerm's window_background_opacity.
Because the background is transparent, highlights that fill a large region
(floating windows, folds, etc.) should reference colors.background (which
resolves to "none" in this theme) rather than an opaque colour — filling with
an opaque colour punches a solid box through the transparency, which looks
jarring over a translucent window.
The one deliberate exception is the sticky outer-scope banner
(treesitter-context): a transparent banner lets the scrolling code bleed
through it, and an underline separator instead picks up the syntax colours of
the code above it. So the banner uses a subtle solid fill —
context_background, a touch lighter than the base background and tinted toward
the theme's greens — to set itself apart with minimal visual weight. Keep any
such intentional fills subtle and close to the base background.
chalk is the only theme; light-mode switching was removed.
The Lean language server is not a Mason package — it ships with the Lean
toolchain, which is managed by elan
(Lean's rustup-style version manager). The lean.nvim plugin spec bootstraps
this automatically: on plugin install/update its build step installs elan
and a default stable toolchain if elan isn't already on your PATH, and
~/.elan/bin is added to Neovim's PATH so the server is discoverable. The
first time you open a Lean project, elan downloads the toolchain version
pinned in that project's lean-toolchain file, which can take a minute.
Requires curl and network access at install time. To trigger the install
manually, run :Lazy build lean.nvim.