- Install neovim-nightly , also use a nerdfont on your terminal.
- Use these [colors](https://github.com/siduck76/dotfiles/blob/master/thinkpad/.Xresources) for your terminal , Its in xresources format so it'd would be easier to use a terminal that supports xresources like st , urxvt , xterm , My [st build](https://github.com/siduck76/st).
- run the install.sh (this might work only on nix systems),this opens neovim (press enter or y to skip the errors , the errors will only show once).
- Install ripgrep , fd , ueberzug for telescope media extension to work.
- Manual installation , incase the install.sh doesnt work for you :
- 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.
```
install the languages you want , check [lspInstal-repo](https://github.com/kabouzeid/nvim-lspinstall)
example - :LspInstall html
```
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 :
- <kbd> Ctrl </kbd><kbd> l </kbd> Open terminal vertically over right
- <kbd> Ctrl </kbd><kbd> x </kbd> Open terminal horizontally below the current window
- **File tree (nvim-tree)**
- <kbd> Ctrl </kbd><kbd> n </kbd> toggle neovim tree
- <kbd> Shift </kbd><kbd> h </kbd> show hidden files (use these keybinds when cursor's in the filetree, same for the keybinds below).
- <kbd> Ctrl </kbd> + <kbd> v </kbd> open files in vertical split
- <kbd> Ctrl </kbd> + <kbd> x </kbd> open files in horizontal split
- **Toggling stuffs**
- leader + <kbd> n </kbd> toggle line number
- leader + <kbd> z </kbd> toggle truezen.nvim's Ataraxis mode
- leader + <kbd> m </kbd> toggle truezen.nvim's minimalistic mode
- **Copy text**
- <kbd> Ctrl </kbd><kbd> a </kbd> copies everything in the current file
- select any text + <kbd> y </kbd> copies the selected text
- **Telescope**
- leader + <kbd> f </kbd><kbd> b </kbd> open all buffers
- leader + <kbd> f </kbd><kbd> f </kbd> find files in the current DIR
- leader + <kbd> f </kbd><kbd> o </kbd> open recently edited files
- leader + <kbd> f </kbd><kbd> h </kbd> opens up a help page like thing
- <kbd> Ctrl </kbd> + <kbd> v </kbd> open files in vertical split
- <kbd> Ctrl </kbd> + <kbd> x </kbd> open files in horizontal split
- **Formatting code**
- leader + <kbd> f </kbd><kbd> m </kbd> 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).
- **Neoscroll**
- `<C-u>`, `<C-d>`, `<C-b>`, `<C-f>`, `<C-y>` and `<C-e>` : Smooth scrolling for window movement commands.
- **Managing tabs with bufferline!**
- <kbd> TAB </kbd> or <kbd> Shift TAB </kbd> cycle through opened tabs
- <kbd> Shift </kbd><kbd> x </kbd> close current tab
- <kbd> Shift </kbd><kbd> t </kbd> open new tab
**Nvim-lspconfig (major ones)**
- <kbd> K </kbd> hover and show the definition
- <kbd> gd </kbd> jumps to the definition (works for user and language definitions)
- <kbd> [d </kbd> jumps to the previous error
- <kbd> ]d </kbd> jumps to the next error
- leader <kbd> D </kbd> jumps to the definition
- leader <kbd> w </kbd> + <kbd> q </kbd>list all the errors in a new buffer
- leader <kbd> r </kbd> + <kbd> n </kbd> rename all instances of this definition (user functions and declaration)