A set of configurations for Neovim made in Lua by someone who doesn't know Lua but has a lot of free time.
I like Neovim. A lot. I tried using VsCode for my really basic programming needs, but I was both a bit overwhelming and kind of dissappointing, specially when it comes to resource usage. So I went back to Neovim, and found out that almost none of the pre-configured configs out there really felt like home, and decided to create my own, using a mix of familiar keybindings for VsCode users and Vim users alike.
With no experience in Lua, a lot of procrastination time that should have gone to college work poured into it and a lot of trial and error, it's alive! So now I want to maintain it and make it public so people who actually know what they are doing can help make it better.
- Neovim 0.5+
- Packer.nvim is the chosen packaging tool;
- A Nerd patched font - I recommend FiraCode NF, which is the one I use
- First, install neovim, preferably through your package manager;
- Install the patched font to get all the icons;
- Then install packer.nvim, in order to manage your plugins:
git clone --depth 1 https://github.com/wbthomason/packer.nvim\ ~/.local/share/nvim/site/pack/packer/start/packer.nvim
- Now, download and extract the package in the releases or (if you want the bleeding edge), clone the repo:
git clone https://github.com/not-a-dev-stein/N-oob-vim ~/.config/nvim
- Now run
nvim +PackerSyncto install and update all the plugins
- Install the language servers you need with :LspInstall
- Install the extras for whatever extra feature you want;
- That's it!
Language servers pre-configured with:
- lspconfig - for native LSP
- lspinstall - to easily install language servers
- cmp-nvim-lsp - for better integration with the native LSP
- cmp-buffer - for suggesting words used in the buffer in the completion
- cmp_luasnip - for using luasnip as a source for nvim-cmp's completion
- LuaSnip - snippets support
- nvim-cmp - for TAB completion
Plugins included and pre-configured are:
- autopairs - for automatic pairing of brackets, parenthesis, etc.
- barbar - A nice tab/buffer bar
- colorizer - for showing color on HEX codes (ex. #ffffff)
- comment - for easier line commenting (pre-configured with 'SPACE+//')
- dashboard - Nice and clean dashboard for when you open nvim cleanly
- gitsigns - for git signs for when and where you have diffs, and checking blame
- indent-blankline - for better indentation, showing visible signs for tabs and spaces
- lualine - a better statusline in both looks and functionality
- markdown-preview - An easy way to preview how your markdown files will look like
- nvim-tree - an easy and fast file explorer to the side of the screen
- suda - for automatically running nvim with sudo when needed
- telescope - really powerful searching tool
- treesitter - for better syntax highlighting, indenting and folding (which you can use with
- ts-rainbow - for color matching of brackets, parenthesis, etc.
- web-devicons - icons for other extensions, like nvim-tree and lualine
Extra plugins outside of nvim
- live-server - for people who do web development, no need to keep refreshing your page after every change
space is your leader key by default, press it twice to quickly switch between the last two buffers;
< > to change indentation levels multiple times on visual mode, instead of having to use
. to repeat;
shift+k to easily move an entire line up or down;
ctrl+shift+i to automatically format your code with Nformat;
ctrl+hjkl to navigate between splits in your screen (including nvim-tree);
leader+t to open a terminal in split;
ctrl+a in terminal mode to return to normal mode;
ctrl+m to toggle the preview of your Markdown files with markdown-preview;
:LiveServer to start your live server
Biggest references and help
Props to the NvChad guys, I have used their config for a long while before using VsCode and used most of the extensions they use as a base for mine, removing what I don't use and adding what's more convenient for me. LunarVim also had a big part in it, specially due to ChrisAtMachine's videos and livestreams, it was probably the best help I got in porting my old config to Lua.
What you can do to help
Everything. No joke. I have no experience in Lua, so I'm sure there's a lot that can be optimized and improved. If you want to check it out (and probably cringe a little) feel free to check the code, and use it for whatever you need. It's all yours, my friend.