## Kris's guide to **Neovim** configuration #### Build off of mine, or start your own!
> Before starting, ensure you have: > - **neovim** (duh) > - a [patched font](https://www.nerdfonts.com/) and a terminal that supports glyphs
### Quickstart with my config: ``` cd ~/.config/ && git clone https://github.com/BreadOnPenguins/nvim ``` - On first boot, run `:PlugInstall` to ensure all plugins are installed and updated with [vim-plug](https://github.com/junegunn/vim-plug) - Key maps are in `lua/config/mappings.lua` * **Leader is bound to space**, you can press space by itself for which-key to pop up with bindings info - Neovim options are set in `lua/config/options.lua` with some comments for info - All plugin configuration is located in the `lua/plugins/` folder * To add or remove plugins, modify the `Plug()` section in `init.lua` appropriately, and ensure to modify `require()` as needed for configuration. * Then run `:PlugInstall` to install or `:PlugClean` to uninstall
### Starting your own config: Yes, there are a lot of choices! But don't worry, you can easily change your mind later. **1. Do you want:** * Minimal? * Power User? * Full IDE? An example directory structure and plugin configuration for each of those is included below. **2. Choose directory structure** - If you prefer vimscript, use an `init.vim` - Otherwise, use an `init.lua` - If you intend to have a lot of plugins or want a neater structure, split into separate files * You can always expand to more files later **3. Pick plugin manager** - [vim-plug](https://github.com/junegunn/vim-plug) is a minimal option - [lazy.nvim](https://github.com/folke/lazy.nvim) is more feature-rich - or [several other choices](https://github.com/rockerBOO/awesome-neovim?tab=readme-ov-file#plugin-manager) **4. Pick plugins** - [Awesome neovim plugins list](https://github.com/rockerBOO/awesome-neovim) - See below for a rough guide on types of plugins **5. Set mappings, options, and plugin config** - Use `:help options` or browse [here](https://neovim.io/doc/user/options.html) - You don't *always* need to configure plugins: most have sensible defaults, and you can set as few or as many opts as you wish.

### the Minimalist (better text editor) ``` ~/.config/nvim/ └── init.vim ``` Plugins might include: - File tree - Fuzzy finder - Comment quick toggle - Surround editing - Better syntax highlighting - Probably a color scheme and status line

### the Power User ``` ~/.config/nvim/ ├── init.lua └── lua ├── core │   ├── keymaps.lua │   └── options.lua └── plugins └── plugin.lua └── configs.lua ``` Plugins might include: - Everything above, AND - LSP & autocompletion - Snippets - Git integration - Faster motions, window management - Terminal integration - Project and session management - Tabline and cursorline

### full IDE (do you even need this guide?) ``` ~/.config/nvim/ ├── init.lua ├── lazy-lock.json └── lua ├── core │   ├── keymaps.lua │   ├── options.lua │   └── plugins.lua ├── plugins │   └── lots.lua │   └── of.lua │   └── plugin.lua │   └── configs.lua └── UltiSnips └── tex.snippets ``` Plugins might include: - Everything above, AND - Debugging - Code runners - Remote development - Refactoring