A modern, standalone, high-performance Vim & Neovim configuration.
Absorbed and modernized from amix/vimrc / vimrc-fork: sub-millisecond startup, instant file/content search via ripgrep & fd, NERDTree sidebar, lightning code reading & review, seamless system clipboard, precision text editing, and automated fast formatting.
-
Install system dependencies (
ripgrep,fd,bat,fzf,vim,neovim):bash zsh.sh
-
Run full environment setup (interactively choose 1) Vim, 2) Neovim, or 3) Both):
zsh setup.sh
- Vim & Neovim Configuration (
vimrc):- Dual Support: Works identically across standard Vim (
~/.vimrc) and Neovim (~/.config/nvim/init.vim) - Plugin Management:
vim-plugwith auto-bootstrapping and parallel async downloads - File Tree Explorers:
nvim-tree.lua(Neovim async tree) /fern.vim(Vim async tree) +oil.nvim(buffer-based file editor) - Syntax & Highlighting:
vim-polyglot(lazy-loaded 100+ languages) - Git Workflow:
vim-fugitive(status & interactive blame),vim-gitgutter,git-messenger.vim(popup commit info) - Precision Editing:
vim-surround,vim-commentary,vim-repeat,vim-indent-object,vim-visual-multi,editorconfig - Formatters:
ALEwith modern fast linters/fixers (ruff,gofumpt,prettier,shfmt,rustfmt) - UI & Aesthetics:
gruvboxtrue-color scheme,lightline.vimstatusline, hybrid relative numbers - Neovim Enhancements: Live substitution preview (
inccommand=split), terminal escape mappings - System Clipboard: Seamless copy/paste with OS and AI assistants (
clipboard^=unnamed,unnamedplus) - Persistent Undo: Undo history survives editor restarts (
~/.vim/temp_dirs/undodir)
- Dual Support: Works identically across standard Vim (
- Zsh: oh-my-zsh, shell aliases (
bat,ripgrep,fd,fzf,v,n), and fzf key-bindings - Node.js: via
fnm(Fast Node Manager) withpnpm - Python: via
uv(fast Python package manager) withruff - Rust: via
rustupwith optionalrsproxy.cnmirror - Go: with
goimportsandshfmt(installed to~/sdk/go<version>) - VSCode: editor settings (supports official VSCode, Insiders, VSCodium)
- Git: global gitignore configuration
| Shortcut | Action | Description |
|---|---|---|
<leader>nn |
Toggle Tree | Toggle file tree sidebar (nvim-tree / fern.vim) |
<leader>nf |
Locate File | Reveal current file in tree sidebar (nvim-tree / fern.vim) |
- / <leader>o |
:Oil |
Oil.nvim: Edit directory like a text buffer (Neovim) |
<leader>O |
:Oil --float |
Oil.nvim: Open floating directory editor (Neovim) |
<leader>f / <C-p> |
:Files |
Fuzzy search files in workspace via fd (Esc to exit) |
<leader>g / <leader>rg |
:Rg |
Full-text search across files via ripgrep (Esc to exit) |
<leader>b |
:Buffers |
Switch active buffers |
<leader>bl |
:BLines |
Search lines in current buffer |
[b / ]b |
:bprevious / :bnext |
Previous / Next buffer |
<leader>h / <leader>l |
Buffer Nav | Buffer previous / next |
<leader>gb |
:Git blame |
Interactive Git Blame split (Enter on commit to inspect) |
<leader>gm |
git-messenger |
Popup commit message under cursor |
<leader>gs |
:Git |
Git status window (fugitive) |
<leader>gd |
:Gdiffsplit |
Git diff split view |
<leader>d |
:GitGutterToggle |
Toggle Git diff signs |
<leader>cf |
:ALEFix |
Format current buffer on demand |
<leader><cr> |
:nohlsearch |
Clear search highlights |
<C-j/k/h/l> |
Window Move | Fast window navigation |
* / # (Visual) |
Search Selection | Search selected text forwards / backwards |
gcc / gc |
Commentary | Toggle comment for line / selection |
cs"' / ds" |
Surround | Change/delete surrounding quotes/brackets |
During setup.sh, you can choose to use Chinese mirror sources for faster downloads in mainland China.