--- publish: true permalink: /10-19 LIFE/13 TECH SETUP/13.11 APPS/nvim.md title: nvim (Neovim) created: 2026-01-30T08:08:10.433-07:00 modified: 2026-02-05T09:12:58.916-07:00 tags: - editor - terminal - development cssclasses: "" --- Neovim is a hyperextensible Vim-based text editor. I use [LazyVim](http://www.lazyvim.org/) as a pre-configured distribution for a batteries-included experience. ## Installation **Arch Linux:** ```bash sudo pacman -S neovim ``` **Dependencies for full LazyVim experience:** ```bash sudo pacman -S git lazygit ripgrep fd nodejs npm ``` ## LazyVim Setup LazyVim provides sensible defaults, plugin management, and a curated set of plugins. **Backup existing config:** ```bash mv ~/.config/nvim ~/.config/nvim.bak mv ~/.local/share/nvim ~/.local/share/nvim.bak ``` **Install LazyVim:** ```bash git clone https://github.com/LazyVim/starter ~/.config/nvim rm -rf ~/.config/nvim/.git nvim ``` On first launch, LazyVim will install all plugins automatically. ## Key Bindings (LazyVim defaults) ### General | Key | Action | |-----|--------| | `Space` | Leader key | | `Space Space` | Find files | | `Space /` | Live grep | | `Space e` | File explorer | | `Space gg` | LazyGit | ### Buffers | Key | Action | |-----|--------| | `Space bd` | Delete buffer | | `H` / `L` | Prev/next buffer | | `Space bb` | Switch buffer | ### Windows | Key | Action | |-----|--------| | `Ctrl+h/j/k/l` | Navigate windows | | `Space w-` | Split horizontal | | `Space w\|` | Split vertical | ### Code | Key | Action | |-----|--------| | `gd` | Go to definition | | `gr` | Find references | | `K` | Hover documentation | | `Space ca` | Code action | | `Space cf` | Format | ## Configuration LazyVim config lives in `~/.config/nvim/lua/`: ### Add plugins `~/.config/nvim/lua/plugins/custom.lua`: ```lua return { -- Add plugins here { "tpope/vim-surround" }, -- Override existing plugin config { "nvim-treesitter/nvim-treesitter", opts = { ensure_installed = { "lua", "python", "typescript" }, }, }, } ``` ### Options `~/.config/nvim/lua/config/options.lua`: ```lua vim.opt.relativenumber = true vim.opt.wrap = true vim.opt.tabstop = 4 ``` ## Resources - LazyVim docs: http://www.lazyvim.org/ - Neovim docs: https://neovim.io/doc/ - `:Lazy` - Plugin manager UI - `:Mason` - LSP/formatter installer