The config is complete but still work in progress as I am new to lua and slowly learning vim stuffs. I'll keep adding new features like snippets etc and clean the config , make neovim (cli version) as functional as an IDE while being eyecandy. Pull requests are welcome.
# Screenshots -
# Very Useful lua plugins used in my config -
#### lspkind-nvim
This tiny plugin adds vscode-like pictograms to neovim built-in lsp completion items :
#### nvim-tree.lua
fast file tree :
### telescope-nvim -
A fuzzy file finder, picker, sorter, previewer and much more:
### indent-blankline.nvim -
adds indentline :
using indenLine plugin on left and blanklineNvim on right
### galaxyline -
fastest statusline plugin I've used so far:
### gitsigns.nvim -
Shows git signs of a repo on the signcolumn to indicate diffs/changes etc (needs plenary.nvim)
### nvim-bufferline.lua -
As a top bufferline like thing which lets me handle tabs like switching, closing tabs.
### nvim-web-devicons -
Lua fork of vim devicons which lets me change icons of filetypes
### nvim-treesitter
Better syntax highlighting for programming languages ( my config just has html,css,js support for now ).
without Treesitter :
with Treesitter :
### nvim-base16 -
contains a collection of all base16 themes for vim , plugin written in lua (comparison of base16-vim and nvim-base16):
nvim-base16 doesnt even take time to load unlike base16-vim which was eating half of the loadup time! ( the below screenshot was taken and tested on my old pentium laptop , so results might differ)
(neovim loads pretty fast on ssds)
# Config structure
```
nvim
├──init.lua
└──lua
└──foo
└──lua.lua
```
- The init.lua is used instead of init.vim.
- The lua folder contains modules , in the example above "foo" could be considered as a module and it contains a lua.lua file in which you could write your config in lua , its like splitting the overall config into small bit . To load/source that "foo" module , you need to specify it in init.lua like this : require('foo.lua').
# Features
- File navigation with Nvimtree
- mouse works
- managing tabs with bufferline
- autosave
- icons on nvimtree , telescope , bufferline/statusline and almost everywhere! with nvim-web-devicons
- minimal status line ( galaxyline)
- gitsigns (colored bars in my config)
- using nvim-lsp
- nvim-lspconfig for nvim-lps configuration
- nvim-compe for autocompletion
- lspkind to show pictograms on autocompletion items
- telescope for file finding , picking , previewing (files and even images)
- nvim-treesitter for syntax highlighting
- nvim-autopairs , for autolosing braces and stuffs
- neoformat for prettifying / formatting code
- packer.nvim as package manager
- indent-blankline.Nvim for indentlines
- smooth scrolling
# Guides to migrate your nvim configs to init.lua -
- https://github.com/nanotee/nvim-lua-guide
- https://alpha2phi.medium.com/neovim-init-lua-e80f4f136030
- https://oroques.dev/notes/neovim-init/
- https://icyphox.sh/blog/nvim-lua/
# Clone my setup -
- Install neovim-nightly , also use a nerdfont on your terminal.
- run the install.sh (this might work only on nix systems) or do it manually :
- Install packer.nvim
```shell
git clone https://github.com/wbthomason/packer.nvim\
~/.local/share/nvim/site/pack/packer/start/packer.nvim
```
- copy lua folder and init.lua into ~/.config/nvim
- Open neovim and install all plugins , :PackerInstall (let treesitter install all its extensionsm
- Install language servers and prettier ( for autocompletion etc and code formatting , nodejs should be installed too!) , this usually depends on the language support you want to add in your neovim config.
```
sudo npm install -g vscode-html-languageserver-bin typescript typescript-language-server vscode-css-languageserver-bin prettier
```
To setup any language server , follow this guide https://github.com/neovim/nvim-lspconfig/blob/master/CONFIG.md and search up the needed LSP. For example if I needed clangd's lsp server :
I'd install it first and add its setup line :
`` -- in /lua/nvim-lspconfig/lua.lua file
require'lspconfig'.clangd.setup{} ``
# Default Mappings to make stuffs easier!
space is the leader key
- Ctrl l Open terminal vertically over right
- Ctrl x Open terminal horizontally below the current window
- Ctrl n toggle neovim tree
- Ctrl a copies everything in the current file
- select any text + y copies the selected text
- leader + f b open all buffers , with telescope
- leader + f p search and preview images with telescope
- leader + f f find files in the current DIR , with telescope
- leader + f o open recently edited files , with telescope
- leader + f f find files in the current DIR , with telescope
- leader + f h opens up a manpage like thing but for all vim related things , with telescope
- leader + f m formats or beautifies the code in current window via neoformat
(currently only html ,css , js can be formatted . To be able to use this keybind you need to install the formatter locally for your language , in my case prettier was required only so I installed it. check this https://github.com/sbdchd/neoformat).
- ``, ``, ``, ``, `` and `` : Smooth scrolling for window movement commands.
# TODO
- add snippets support
- show statusline in inactive windows
# Contact -
- My linux / unix related ricing community: https://t.me/DE_WM (telegram)
- Me: @siduck (telegram)