2021-03-26 01:02:04 -04:00
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.
2021-03-08 03:14:21 -05:00
2021-03-14 12:48:48 -04:00
# Screenshots -
2021-03-08 03:14:21 -05:00
2021-03-26 01:02:04 -04: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 04:05:16 -05:00
2021-03-26 01:02:04 -04:00
# Very Useful lua plugins used in my config -
2021-03-14 12:48:48 -04:00
#### lspkind-nvim
2021-03-26 01:02:04 -04:00
2021-03-15 06:55:25 -04:00
This tiny plugin adds vscode-like pictograms to neovim built-in lsp completion items :
2021-03-14 12:48:48 -04:00
2021-03-26 01:02:04 -04:00
< kbd > < img src = "https://raw.githubusercontent.com/siduck76/dotfiles/master/rice%20flex/lspkind.png" > < / kbd > < hr >
2021-03-14 12:48:48 -04:00
2021-03-26 01:02:04 -04: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 03:04:10 -05:00
2021-03-26 01:02:04 -04: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 03:04:10 -05:00
2021-03-30 21:23:59 -04: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 12:48:48 -04:00
### galaxyline -
2021-03-26 01:02:04 -04: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 12:48:48 -04:00
### gitsigns.nvim -
2021-03-26 01:02:04 -04:00
Shows git signs of a repo on the signcolumn to indicate diffs/changes etc (needs plenary.nvim)
2021-03-14 12:48:48 -04:00
< hr >
2021-03-12 21:18:06 -05:00
2021-03-14 12:48:48 -04:00
### nvim-bufferline.lua -
2021-03-26 01:02:04 -04:00
2021-03-14 12:48:48 -04:00
As a top bufferline like thing which lets me handle tabs like switching, closing tabs.
2021-03-26 01:02:04 -04:00
< kbd > < img src = "https://raw.githubusercontent.com/siduck76/dotfiles/master/rice%20flex/bufferline.png" > < / kbd >
2021-03-14 12:48:48 -04:00
< hr >
2021-03-12 21:18:06 -05:00
2021-03-14 12:48:48 -04:00
### nvim-web-devicons -
Lua fork of vim devicons which lets me change icons of filetypes
2021-03-26 01:02:04 -04:00
< kbd > < img src = "https://raw.githubusercontent.com/siduck76/dotfiles/master/rice%20flex/image.png" > < / kbd > < hr >
2021-03-12 21:18:06 -05:00
2021-03-14 12:48:48 -04:00
### nvim-treesitter
2021-03-26 01:02:04 -04:00
Better syntax highlighting for programming languages ( my config just has html,css,js support for now ).
2021-03-12 22:05:22 -05:00
2021-03-26 01:02:04 -04:00
without Treesitter :
< kbd > < img src = "https://raw.githubusercontent.com/siduck76/dotfiles/master/rice%20flex/woTree.png" > < / kbd >
with Treesitter :
< kbd > < img src = "https://raw.githubusercontent.com/siduck76/dotfiles/master/rice%20flex/wiTree.png" > < / kbd > < hr >
2021-03-13 03:17:24 -05:00
2021-04-02 03:35:54 -04:00
# Config structure
2021-04-02 02:48:44 -04:00
```
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').
2021-03-19 08:34:18 -04:00
# Features
2021-03-26 01:02:04 -04:00
- File navigation with Nvimtree
2021-03-19 08:34:18 -04:00
- mouse works
2021-03-26 01:02:04 -04:00
- managing tabs with bufferline
2021-03-19 08:34:18 -04: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 01:02:04 -04:00
- nvim-compe for autocompletion
2021-03-19 08:34:18 -04:00
- lspkind to show pictograms on autocompletion items
- telescope for file finding , picking , previewing (files and even images)
2021-03-26 01:02:04 -04:00
- nvim-treesitter for syntax highlighting
- nvim-autopairs , for autolosing braces and stuffs
- neoformat for prettifying / formatting code
2021-03-19 08:34:18 -04:00
- packer.nvim as package manager
2021-03-30 21:23:59 -04:00
- indent-blankline.Nvim for indentlines
2021-03-30 22:00:33 -04:00
- smooth scrolling
2021-03-19 08:34:18 -04:00
2021-03-26 01:02:04 -04:00
# Guides to migrate your nvim configs to init.lua -
2021-03-13 06:03:42 -05:00
- https://github.com/nanotee/nvim-lua-guide
- https://alpha2phi.medium.com/neovim-init-lua-e80f4f136030
2021-03-26 01:02:04 -04:00
- https://oroques.dev/notes/neovim-init/
2021-03-13 06:03:42 -05:00
- https://icyphox.sh/blog/nvim-lua/
2021-03-26 01:02:04 -04:00
# Clone my setup -
2021-03-12 22:05:22 -05:00
2021-03-12 22:06:52 -05:00
- Install neovim-nightly , also use a nerdfont on your terminal.
2021-03-26 01:02:04 -04:00
- run the install.sh script as root or copy the configs manually :
- Install packer.nvim
2021-03-12 22:06:52 -05:00
2021-03-13 08:07:38 -05:00
```shell
2021-03-12 22:07:27 -05:00
git clone https://github.com/wbthomason/packer.nvim\
~/.local/share/nvim/site/pack/packer/start/packer.nvim
2021-03-13 08:07:38 -05:00
```
2021-03-26 01:02:04 -04:00
- copy all config files in from this repo except ( plugin folder as it has config related to my system's username! )
- Open neovim and install all plugins , :PackerInstall and :TSUpdate
- Install language servers and prettier ( for autocompletion etc and code formatting , nodejs should be installed too!)
```
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 :
2021-03-13 06:07:43 -05:00
< kbd >
2021-03-26 01:02:04 -04:00
< img src = "https://raw.githubusercontent.com/siduck76/dotfiles/master/rice%20flex/clang.png" >
2021-03-13 06:07:43 -05:00
< / kbd >
2021-03-13 05:43:44 -05:00
2021-03-26 01:02:04 -04:00
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!
< kbd > space < / kbd > is the leader key
2021-04-01 14:54:26 -04:00
- < kbd > Ctrl </ kbd > < kbd > l </ kbd > Open terminal vertically over right
2021-03-26 01:02:04 -04:00
- < kbd > Ctrl </ kbd > < kbd > x </ kbd > Open terminal horizontally below the current window
- < kbd > Ctrl </ kbd > < kbd > n </ kbd > toggle neovim tree
- < kbd > Ctrl </ kbd > < kbd > a </ kbd > copies everything in the current file
- select any text + < kbd > y </ kbd > copies the selected text
- leader + < kbd > f </ kbd > < kbd > b </ kbd > open all buffers , with telescope
- leader + < kbd > f </ kbd > < kbd > p </ kbd > search and preview images with telescope
- leader + < kbd > f </ kbd > < kbd > f </ kbd > find files in the current DIR , with telescope
- leader + < kbd > f </ kbd > < kbd > o </ kbd > open recently edited files , with telescope
- leader + < kbd > f </ kbd > < kbd > f </ kbd > find files in the current DIR , with telescope
- leader + < kbd > f </ kbd > < kbd > h </ kbd > opens up a manpage like thing but for all vim related things , with telescope
- leader + < kbd > f </ kbd > < kbd > m </ kbd > formats or beautifies the code in current window via neoformat
2021-03-18 06:17:42 -04: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 < a > https://github.com/sbdchd/neoformat< / a > ).
2021-03-30 22:00:33 -04:00
- `<C-u>` , `<C-d>` , `<C-b>` , `<C-f>` , `<C-y>` and `<C-e>` : Smooth scrolling for window movement commands.
2021-03-26 01:02:04 -04:00
# TODO
- add snippets support
- show statusline in inactive windows
# Troubleshooting -
![image ](https://user-images.githubusercontent.com/59060246/111059898-f096cf00-84be-11eb-977a-f91d622ee5b9.png )
if you get any errors with packer.nvim , then remove the ~/.config/nvim/plugin/packer_nvim.vim file since it just has file paths for my system
2021-03-14 12:48:48 -04:00
and re-install packer.nvim
2021-03-20 08:09:58 -04:00
2021-03-26 01:02:04 -04:00
# Contact -
- My linux / unix related ricing community: https://t.me/DE_WM (telegram)
- Me: @siduck (telegram)