- Neovim (v0.11+; v0.12 supported)
- ripgrep - FzfLua live grep
- fd - (Optional) faster file finding for FzfLua
- nerd-fonts - icons
- tree-sitter-cli - compiles parsers for
nvim-treesittermain branch:brew install tree-sitter-cli - Rust toolchain (
rustup/cargo) - required to build blink.cmp's Rust fuzzy matcher on first install git,make, C compiler - required by Mason and various plugin builds
Auto-installed via Mason on first launch. Manually managed via :Mason.
- LSPs:
ts_ls,pyright,gopls,lua_ls,html,cssls - Formatters (via conform): prettier/prettierd, black, isort, stylua, gofmt, goimports, shfmt
- Linters (via nvim-lint): eslint_d, flake8, mypy, golangcilint, shellcheck, markdownlint, yamllint, jsonlint
This configuration uses lazy.nvim as the plugin manager. Lazy.nvim will be automatically installed on first startup.
- Clone this repository.
- Link the
init.luaandluadirectory to the Neovim configuration directory, usually~/.config/nvim.
ln -s $PWD/init.lua ~/.config/nvim/init.lua
ln -s $PWD/lua ~/.config/nvim/lua- Start Neovim - lazy.nvim will automatically bootstrap and install all plugins.
- Optionally run
:Lazyto open the plugin manager interface.
| Keybinding | Description |
|---|---|
[n] <leader> |
\ |
[n] <leader>ff |
FzfLua find files |
[n] <leader>fg |
FzfLua live grep |
[n] <leader>fb |
FzfLua buffers |
[v] <C-f> |
FzfLua live grep selection |
[n] <C-r> |
FzfLua resume |
[n] <C-,> |
Buffer previous |
[n] <C-.> |
Buffer next |
[n] <C-p> |
Buffer pick |
[n] <C-e> |
NvimTree toggle |
[n] <leader>nf |
NvimTree find file |
[n] <leader>nc |
NvimTree collapse |
[n] <leader>p |
Format with conform.nvim |
[n] <leader>e |
Open diagnostics float |
[n] <leader>ih |
Toggle LSP inlay hints |
[n] <leader>xx |
Trouble diagnostics toggle |
[n] <leader>xX |
Trouble diagnostics toggle (current buf) |
[n] <leader>zR |
UFO Open all folds |
[n] <leader>zM |
UFO Close all folds |
This configuration uses Mason for automatic LSP server management. Configured language servers include:
- TypeScript/JavaScript:
ts_ls(formerly tsserver) - Python:
pyright - Go:
gopls - Lua:
lua_ls - HTML:
html - CSS:
cssls
LSP servers are automatically installed and configured through Mason. For more server configurations, see the nvim-lspconfig documentation.
- plenary.nvim - Lua utility functions
- nvim-web-devicons - File type icons
- dashboard-nvim - Startup dashboard
- lualine.nvim - Status line
- tokyonight.nvim - Tokyo Night color scheme
- nvim-tree.lua - File explorer
- barbar.nvim - Buffer tabs
- which-key.nvim - Leader-key discovery popup
- fzf-lua - Fast and powerful file finder and grep
- nvim-lspconfig - LSP configurations
- mason.nvim - LSP server manager
- mason-lspconfig.nvim - Mason integration
- fidget.nvim - LSP progress UI
- blink.cmp - Completion engine (Rust fuzzy matcher)
- LuaSnip - Snippet engine
- vim-fugitive - Git commands
- gitsigns.nvim - Git signs in gutter
- nvim-treesitter - Syntax highlighting
- nvim-autopairs - Auto-close brackets
- Comment.nvim - Commenting utility
- nvim-lint - Auto-linting with external tools
- mason-nvim-lint - Auto-install linters through Mason
- conform.nvim - Code formatting
- neoscroll.nvim - Smooth scrolling
- nvim-notify - Notification system
- todo-comments.nvim - TODO highlighting
- trouble.nvim - Diagnostics panel
- nvim-ufo - Folding enhancement
- promise-async - Async utilities
- statuscol.nvim - Status column
- grug-far.nvim - Search and replace
- vim-startuptime - Startup time profiling
nvim-config/
├── init.lua # Entry point, bootstraps lazy.nvim and loads modules
├── lua/
│ ├── globals.lua # Global variables and aliases
│ ├── settings.lua # Neovim settings and options
│ ├── keybindings.lua # Custom keybindings
│ ├── plugins.lua # Plugin definitions with lazy.nvim
│ └── configs/ # Individual plugin configurations
│ ├── blink.lua
│ ├── conform.lua
│ ├── dashboard-nvim.lua
│ ├── lazy.lua
│ ├── lsp.lua
│ ├── lualine.lua
│ ├── mason-nvim-lint.lua
│ ├── neoscroll.lua
│ ├── nvim-lint.lua
│ ├── nvim-tree.lua
│ ├── nvim-treesitter.lua
│ ├── statuscol.lua
│ └── ufo.lua
└── assets/
└── preview.png
WezTerm with Tokyo Night Moon color scheme:
config.color_scheme = 'Tokyo Night Moon'For more information, see the WezTerm configuration documentation.
