# My Neovim configuration ## Motivation After doing my first steps with , I decided to roll my own, custom, "lightweight" Neovim configuration in order to better understand Neovim and its configuration/customization, package managers, plugins etc. and have "my own" config that only includes things I really need. ## Installation 1. Install Neovim 0.9.x 1. Install OS dependencies documented in `init.lua` 1. Clone this Git repository to `~/.config/nvim` ### Finishing touches - Install Treesitter comment parser (to highlight `FIXME:/NOTE:/TODO:/XXX:`) with `:TSInstall comment` - Create a `$HOME/.ignore` file and add big, useless directories to it, so Telescope/ripgrep/fd can ignore those. My current list of files/directories is available in `lua/weeheavy/plugins/telescope-fzf-native.lua` ## Speed Output from lazy.nvim profiling (`:Lazy`, then `P`): ### Start and open init.lua ```bash Startuptime: 71.69ms Based on the actual CPU time of the Neovim process till UIEnter. This is more accurate than `nvim --startuptime`. LazyStart 10.92ms LazyDone 40.71ms (+29.78ms) UIEnter 71.69ms (+30.99ms) ``` ### Starting with empty file Around 50% of the plugins are lazy-loaded. ```bash Startuptime: 46.94ms Based on the actual CPU time of the Neovim process till UIEnter. This is more accurate than `nvim --startuptime`. LazyStart 10.59ms LazyDone 40.6ms (+30.02ms) UIEnter 46.94ms (+6.34ms) ``` ## Plugins | Name | Purpose | URL | | ------------------------------- | ----------------------------------------------------------- | ---------------------------------------------------------------- | | **lazy.nvim** | Package manager | | | **telescope.nvim** | Find, Filter, Preview, Pick | | | **telescope-fzf-native.nvim** | Fuzzy finder for Telescope | | | **nvim-treesitter** | Parser/syntax highlighting | | | **nvim-treesitter-context** | Shows current line context | | | **nvim-treesitter-textobjects** | ? | | | **nightfox.nvim** | Theme with treesitter/lsp support | | | **tokyonight.nvim** | Theme with treesitter/lsp support | | | **lualine.nvim** | Status line | | | **nvim-web-devicons** | filetype glyphs (icons) for plugins | | | **gitsigns.nvim** | Git change indicator | | | **which-key.nvim** | Shows contextual key bindings | | | **indent-blankline.nvim** | Visual indentation guide | | | **vim-illuminate** | Highlight word under the cursor (w/ LSP, Treesitter, regex) | | | **lsp-zero.nvim** | LSP for mere mortals | | | **conform.nvim** | Black magic wizardry, replacement for `null-ls` | | ## Looks This is how it looks like: ![My Neovim setup](./sample.png) ## Open issues/TODOs - ollama integration - Solution to run file_browser when doing a vertical/horizontal split? - - Implement linting, see