2021-05-17 22:14:10 +02:00
2021-05-13 06:42:36 +02:00
An attempt to make neovim (cli version) as functional as an IDE while being very eyecandy.
2021-03-08 09:14:21 +01:00
2021-03-14 17:48:48 +01:00
# Screenshots -
2021-03-08 09:14:21 +01:00
2021-03-26 06:02:04 +01:00
< img src = "https://raw.githubusercontent.com/siduck76/dotfiles/master/rice%20flex/initialNvim.png" > < hr >
< kbd > < img src = "https://raw.githubusercontent.com/siduck76/dotfiles/master/rice%20flex/nvimRice2.png" > < / kbd > < hr >
2021-03-10 10:05:16 +01:00
2021-03-26 06:02:04 +01:00
# Very Useful lua plugins used in my config -
2021-03-14 17:48:48 +01:00
#### lspkind-nvim
2021-03-26 06:02:04 +01:00
2021-03-15 11:55:25 +01:00
This tiny plugin adds vscode-like pictograms to neovim built-in lsp completion items :
2021-03-14 17:48:48 +01:00
2021-03-26 06:02:04 +01:00
< kbd > < img src = "https://raw.githubusercontent.com/siduck76/dotfiles/master/rice%20flex/lspkind.png" > < / kbd > < hr >
2021-03-14 17:48:48 +01:00
2021-03-26 06:02:04 +01:00
#### nvim-tree.lua
fast file tree :
< kbd > < img src = "https://raw.githubusercontent.com/siduck76/dotfiles/master/rice%20flex/nvimtree.png" > < / kbd > < hr >
2021-03-13 09:04:10 +01:00
2021-03-26 06:02:04 +01:00
### telescope-nvim -
A fuzzy file finder, picker, sorter, previewer and much more:
< kbd > < img src = "https://raw.githubusercontent.com/siduck76/dotfiles/master/rice%20flex/tel.png" > < / kbd >
< kbd > < img src = "https://raw.githubusercontent.com/siduck76/dotfiles/master/rice%20flex/telmedia.png" > < / kbd > < hr >
### indent-blankline.nvim -
adds indentline :
< kbd > < img src = "https://raw.githubusercontent.com/siduck76/dotfiles/master/rice%20flex/blanklineNvim.png" > < / kbd >
2021-03-13 09:04:10 +01:00
2021-03-31 03:23:59 +02:00
using indenLine plugin on left and blanklineNvim on right
< kbd > < img src = "https://raw.githubusercontent.com/siduck76/dotfiles/master/rice%20flex/blanklineVSindentline.png" > < / kbd >
2021-03-14 17:48:48 +01:00
### galaxyline -
2021-03-26 06:02:04 +01:00
fastest statusline plugin I've used so far:
< kbd > < img src = "https://raw.githubusercontent.com/siduck76/dotfiles/master/rice%20flex/statusline.png" > < / kbd > < hr >
2021-03-14 17:48:48 +01:00
### gitsigns.nvim -
2021-03-26 06:02:04 +01:00
Shows git signs of a repo on the signcolumn to indicate diffs/changes etc (needs plenary.nvim)
2021-03-14 17:48:48 +01:00
< hr >
2021-03-13 03:18:06 +01:00
2021-03-14 17:48:48 +01:00
### nvim-bufferline.lua -
2021-03-26 06:02:04 +01:00
2021-03-14 17:48:48 +01:00
As a top bufferline like thing which lets me handle tabs like switching, closing tabs.
2021-03-26 06:02:04 +01:00
< kbd > < img src = "https://raw.githubusercontent.com/siduck76/dotfiles/master/rice%20flex/bufferline.png" > < / kbd >
2021-03-14 17:48:48 +01:00
< hr >
2021-03-13 03:18:06 +01:00
2021-03-14 17:48:48 +01:00
### nvim-web-devicons -
Lua fork of vim devicons which lets me change icons of filetypes
2021-03-26 06:02:04 +01:00
< kbd > < img src = "https://raw.githubusercontent.com/siduck76/dotfiles/master/rice%20flex/image.png" > < / kbd > < hr >
2021-03-13 03:18:06 +01:00
2021-03-14 17:48:48 +01:00
### nvim-treesitter
2021-03-26 06:02:04 +01:00
Better syntax highlighting for programming languages ( my config just has html,css,js support for now ).
2021-03-13 04:05:22 +01:00
2021-04-29 17:25:03 +02:00
without / with Treesitter :
2021-03-26 06:02:04 +01:00
< kbd > < img src = "https://raw.githubusercontent.com/siduck76/dotfiles/master/rice%20flex/woTree.png" > < / kbd >
2021-04-03 20:06:25 +02:00
### 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)
< kbd > < img src = "https://raw.githubusercontent.com/siduck76/dotfiles/master/rice%20flex/nvim-base16.png" > < / kbd > < hr >
(neovim loads pretty fast on ssds)
< kbd > < img src = "https://raw.githubusercontent.com/siduck76/dotfiles/master/rice%20flex/nvim-startup.png" > < / kbd > < hr >
2021-04-02 09:35:54 +02:00
# Config structure
2021-04-02 08:48:44 +02:00
```
nvim
├──init.lua
└──lua
2021-05-05 03:21:04 +02:00
└──anything.lua
2021-04-02 08:48:44 +02:00
```
- The init.lua is used instead of init.vim.
2021-05-05 03:21:04 +02:00
- The lua folder contains modules ( config files ) , in the example above anything.lua file in lua folder could be considered as a module.
- The anything.lua file is supposed to have any neovim config written in lua , its like splitting the overall config into small bits and make it more organized , like one module for highlights and colors , another one for statusline and so on!.
- To load or source that "anything" module (like making it load with init.lua ) ,add this is in init.lua : require "anything".
2021-04-02 08:48:44 +02:00
2021-03-19 13:34:18 +01:00
# Features
2021-03-26 06:02:04 +01:00
- File navigation with Nvimtree
2021-03-19 13:34:18 +01:00
- mouse works
2021-03-26 06:02:04 +01:00
- managing tabs with bufferline
2021-03-19 13:34:18 +01:00
- 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
2021-03-26 06:02:04 +01:00
- nvim-compe for autocompletion
2021-03-19 13:34:18 +01:00
- lspkind to show pictograms on autocompletion items
- telescope for file finding , picking , previewing (files and even images)
2021-03-26 06:02:04 +01:00
- nvim-treesitter for syntax highlighting
- nvim-autopairs , for autolosing braces and stuffs
- neoformat for prettifying / formatting code
2021-03-19 13:34:18 +01:00
- packer.nvim as package manager
2021-03-31 03:23:59 +02:00
- indent-blankline.Nvim for indentlines
2021-03-31 04:00:33 +02:00
- smooth scrolling
2021-05-04 19:34:12 +02:00
- Snip support from VSCode through vsnip supporting custom and predefined snips (friendly-snippets)
2021-05-05 03:21:04 +02:00
2021-03-26 06:02:04 +01:00
# Guides to migrate your nvim configs to init.lua -
2021-03-13 12:03:42 +01:00
- https://github.com/nanotee/nvim-lua-guide
- https://alpha2phi.medium.com/neovim-init-lua-e80f4f136030
2021-03-26 06:02:04 +01:00
- https://oroques.dev/notes/neovim-init/
2021-03-13 12:03:42 +01:00
- https://icyphox.sh/blog/nvim-lua/
2021-05-04 19:34:12 +02:00
- https://github.com/rafamadriz/friendly-snippets/wiki
2021-03-26 06:02:04 +01:00
# Clone my setup -
2021-03-13 04:05:22 +01:00
2021-03-13 04:06:52 +01:00
- Install neovim-nightly , also use a nerdfont on your terminal.
2021-04-18 15:16:14 +02:00
- 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 ).
2021-04-12 13:07:15 +02:00
- 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.
2021-04-11 04:49:59 +02:00
- Manual installation , incase the install.sh doesnt work for you :
2021-04-03 20:06:25 +02:00
2021-03-26 06:02:04 +01:00
- Install packer.nvim
2021-03-13 04:06:52 +01:00
2021-04-24 12:03:37 +02:00
```
2021-03-13 04:07:27 +01:00
git clone https://github.com/wbthomason/packer.nvim\
~/.local/share/nvim/site/pack/packer/start/packer.nvim
2021-05-05 03:21:04 +02:00
2021-03-13 14:07:38 +01:00
```
2021-03-26 06:02:04 +01:00
2021-04-03 20:06:25 +02:00
- 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.
2021-03-26 06:02:04 +01:00
```
2021-05-05 03:21:04 +02:00
npm config set prefix=~/.node_modules
2021-05-01 17:18:13 +02:00
npm install -g vscode-html-languageserver-bin typescript typescript-language-server vscode-css-languageserver-bin prettier
(ADD ~/.node_modules at your PATH)
2021-03-26 06:02:04 +01:00
```
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 :
2021-03-13 12:07:43 +01:00
< kbd >
2021-03-26 06:02:04 +01:00
< img src = "https://raw.githubusercontent.com/siduck76/dotfiles/master/rice%20flex/clang.png" >
2021-03-13 12:07:43 +01:00
< / kbd >
2021-03-13 11:43:44 +01:00
2021-03-26 06:02:04 +01:00
I'd install it first and add its setup line :
`` -- in /lua/nvim-lspconfig/lua.lua file
require'lspconfig'.clangd.setup{} ``
2021-04-24 11:59:38 +02:00
# Default Mappings
2021-03-26 06:02:04 +01:00
2021-04-24 11:59:38 +02:00
< kbd > space </ kbd > is the **leader** key.
2021-03-26 06:02:04 +01:00
2021-04-24 11:59:38 +02:00
- Opening terminals!
2021-04-01 20:54:26 +02:00
- < kbd > Ctrl </ kbd > < kbd > l </ kbd > Open terminal vertically over right
2021-03-26 06:02:04 +01:00
- < kbd > Ctrl </ kbd > < kbd > x </ kbd > Open terminal horizontally below the current window
2021-04-24 11:59:38 +02:00
- **File tree (nvim-tree)**
2021-03-26 06:02:04 +01:00
- < kbd > Ctrl </ kbd > < kbd > n </ kbd > toggle neovim tree
2021-04-24 11:59:38 +02:00
- < 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**
2021-03-26 06:02:04 +01:00
- < kbd > Ctrl </ kbd > < kbd > a </ kbd > copies everything in the current file
- select any text + < kbd > y </ kbd > copies the selected text
2021-04-24 11:59:38 +02:00
- **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**
2021-03-26 06:02:04 +01:00
- leader + < kbd > f </ kbd > < kbd > m </ kbd > formats or beautifies the code in current window via neoformat
2021-04-24 11:59:38 +02:00
(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**
2021-03-31 04:00:33 +02:00
- `<C-u>` , `<C-d>` , `<C-b>` , `<C-f>` , `<C-y>` and `<C-e>` : Smooth scrolling for window movement commands.
2021-03-26 06:02:04 +01:00
2021-04-24 11:59:38 +02:00
- **Managing tabs with bufferline!**
2021-05-10 19:06:48 +02:00
- < kbd > TAB </ kbd > or < kbd > Shift TAB </ kbd > cycle through opened tabs
2021-05-09 07:57:38 +02:00
- < kbd > Shift </ kbd > < kbd > x </ kbd > close current tab
- < kbd > Shift </ kbd > < kbd > t </ kbd > open new tab
2021-04-24 11:59:38 +02:00
2021-05-12 18:55:34 +02:00
**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
2021-05-12 18:56:41 +02:00
- 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)
2021-05-12 18:55:34 +02:00
-
2021-03-26 06:02:04 +01:00
# TODO
2021-04-14 03:59:42 +02:00
- Make the statusline more elegant.
- Add more themes.
2021-03-26 06:02:04 +01:00
# Contact -
- My linux / unix related ricing community: https://t.me/DE_WM (telegram)
- Me: @siduck (telegram)