Skip to content

liubang/nvimrc

Repository files navigation

Neovim Configuration

A fast, practical, and fully Lua-based Neovim setup for day-to-day development.

Neovim

Overview

This repository contains my personal Neovim configuration, shaped around a few goals:

  • Fast startup and responsive editing.
  • Sensible defaults that work out of the box.
  • A modern Lua-first configuration built on top of lazy.nvim.
  • Useful tooling for real projects, including LSP, Telescope, Git, debugging, Markdown, Java, and Bazel workflows.
  • Auto-generated documentation for keymaps and installed plugins so the README stays in sync with the config.

Startup time is typically under 30 ms on a modern machine. That number depends on your hardware, filesystem, and plugin state. The original measurements were taken with rhysd/vim-startuptime.

Table of Contents

Requirements

Required:

  • Neovim >= 0.11.0 with LuaJIT
  • Git >= 2.19.0 for partial clone support
  • A Nerd Font

Recommended:

  • ripgrep for fast project search
  • fd for better file discovery in Telescope pickers
  • Language-specific tools you already use locally, such as LSP servers, formatters, DAP adapters, Java runtimes, or Bazel

Quick Start

If you want to try the configuration without touching your local setup, run it with Docker:

Start Neovim in a container

docker run -it --rm liubang/nvim

Open a local project inside the container

docker run -it --rm -v "$(pwd)":/home/neovim/workspace liubang/nvim

Local Installation

Clone this repository into your Neovim config directory:

git clone https://github.com/liubang/nvimrc ~/.config/nvim
nvim

If you already have a Neovim configuration, back it up first:

mv ~/.config/nvim ~/.config/nvim.bak
git clone https://github.com/liubang/nvimrc ~/.config/nvim
nvim

On first launch, lazy.nvim will install the configured plugins automatically.

What You Get

  • Editor UX: bufferline, statusline, file explorers, surrounding/comment helpers, and smooth motion/navigation improvements.
  • Project navigation: Telescope, live grep, recent files, task pickers, and outline views.
  • Coding support: Treesitter, LSP, completion, snippets, formatting, and diagnostics.
  • Git workflow: signs, blame, diff views, and buffer-aware navigation.
  • Debugging: nvim-dap with keymaps for breakpoints, stepping, REPL, and widgets.
  • Language extras: dedicated support for Java, Markdown, LaTeX, and a few personal productivity plugins.

Screenshots

Neovim

Neovim

Notes

The Keymaps and Plugins sections below are generated from the actual configuration, which helps keep the documentation accurate as the setup evolves.

Keymaps

Key Description Mode
n Next search result n, x, o
N Previous search result n, x, o
<S-j> Move lines down n, x
<S-k> Move lines up n, x
<Esc><Esc> Clear hlsearch n
/ Search in visually selected region x
< Keep the visually selected area when indenting x
> Keep the visually selected area when indenting x
p Replace the selection without overwriting the default register x
<Leader>bp Previous n
<Leader>bn Next n
<Leader>bf First n
<Leader>bl Last n
<Leader>ww Toggle between open windows n
<leader>wd Delete window n
<Leader>wh Move to the left window n
<Leader>wl Move to the right window n
<Leader>wj Move to the bottom window n
<Leader>wk Move to the top window n
<Leader>ws Split window horizontally n
<Leader>wv Split window vertically n
<C-Up> Increase window height n
<C-Down> Decrease window height n
<C-Left> Decrease window width n
<C-Right> Increase window width n
<C-b> asynctasks.vim Build current file n
<C-r> asynctasks.vim Run current file n
<C-x> asynctasks.vim Build and run current file n
<Leader>1 bufferline.nvim Go to visible buffer 1 n
<Leader>2 bufferline.nvim Go to visible buffer 2 n
<Leader>3 bufferline.nvim Go to visible buffer 3 n
<Leader>4 bufferline.nvim Go to visible buffer 4 n
<Leader>5 bufferline.nvim Go to visible buffer 5 n
<Leader>6 bufferline.nvim Go to visible buffer 6 n
<Leader>7 bufferline.nvim Go to visible buffer 7 n
<Leader>8 bufferline.nvim Go to visible buffer 8 n
<Leader>9 bufferline.nvim Go to visible buffer 9 n
<leader>bo bufferline.nvim Delete other buffers n
<Leader>fm conform.nvim Format buffer n, v
s flash.nvim Flash n, x, o
S flash.nvim Flash Treesitter n, x, o
r flash.nvim Remote Flash o
R flash.nvim Treesitter Search o, x
]h gitsigns.nvim Next hunk n
[h gitsigns.nvim Prev hunk n
<Leader>hs gitsigns.nvim Stage the hunk at the cursor position n
<Leader>hr gitsigns.nvim Reset the lines of the hunk at the cursor position n
<leader>sr grug-far.nvim Search and Replace n, v
gc mini.comment Toggle line comment n, x
gcc mini.comment Toggle line comment n
- mini.files Open mini.files (parent directory) n
<leader>ft mini.files Toggle mini.files (Directory of Current File) n
<leader>fT mini.files Toggle mini.files (cwd) n
<Leader>tl outline.nvim Open or close the outline window n
<Leader>mp peek.nvim Markdown Preview n
<Leader>ff snacks.nvim Find files n
<Leader>rf snacks.nvim Recent files n
<Leader>ag snacks.nvim Live grep in files n
<Leader>Ag snacks.nvim Search for string under cursor n, x
<Leader>bb snacks.nvim List open buffers n
<leader>bd snacks.nvim Delete buffer n
<leader>bD snacks.nvim Delete buffer (force) n
<Leader>br snacks.nvim Bazel run n
<Leader>bt snacks.nvim Bazel test n
<Leader>bs snacks.nvim Bazel build n
<Leader>ts snacks.nvim AsyncTasks n
<Leader>sb snacks.nvim Buffer lines n
<Leader>gf snacks.nvim Git files n
<Leader>gs snacks.nvim Git status n
<Leader>gl snacks.nvim Git log n
<Leader>gL snacks.nvim Git log (current file) n
<Leader>gh snacks.nvim Git log (current line) n
<Leader>gv snacks.nvim Git diff (hunks) n
<Leader>gb snacks.nvim Git branches n
<C-t> toggleterm.nvim Toggle terminal n
<C-v> tree-sitter-manager.nvim Treesitter Increment Selection n
V tree-sitter-manager.nvim Treesitter Decrement Selection x
<leader>vv venn.nvim Toggle draw box n

Plugins

About

neovim configuration. 🌸

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

 
 
 

Contributors