Home

Awesome

<p align="center"> <img src="./Screens/screen0.png"> </p>

Why?

Modern Vim distributions are really huge and bloated with way too many fancy features that you won't ever use or need, for example directory trees like Nerd tree, you don't need a tree, you can view a project structure with fzf which is faster and has search. Another example is ThinkVim has a separate extension for formatting while also having ALE which can do that as well, this double functionality is very common, thats one of the things this distro avoids, KISS!

Features

Supported Languages

Neovim provides support for a wide range of languages by default. For more languages install vim-polyglot.

Requirements

Setup

To check if your current environment is correctly set up run :CheckHealth.

Environment

Tools

Installation

After installing the requirements:

Plugins

Thanks to vim-plug the plugins are lazy loaded (anything that is not needed for the current buffer is not loaded) for example opening a python file means all other non python related plugins are not loaded. Coc extensions are lazy loaded as well, they work the same way as vim-plug plugins.

PluginFunctionality
vim-airlineairline status line
deviconsicons everywhere
rainbowrainbow parenthesis
vim-materialmaterial themes
coc.nvimasync completion and more
fzf.vimfuzzy finder vim integration
vim-snippetssnippets for many languages
indentLineauto indent lines
vim-commentarybetter comments everywhere
vim-startifycool startup thingy
vim-fugitivebest git integration around
vim-sandwichsurround stuff with stuff
vim-smoothiesuper smooth scrolling
tmux-navigatorseamless movement between Vim and tmux panes
tmux-completetmux panes completion
vim-eunuchsome common Linux commands
semshibetter highlighting for python
markdown-previewlive markdown preview
vim-MvVismove visual selection

Keyboard shortcuts

To learn the default Vim shortcuts run Tutor and or checkout this vim adventures.

Essentials

Mappingfunctionality
;commands key
,leader key
leader + rreload nvim config
leader + wsave changes
leader + ecall :PlugInstall (install plug-ins)
Enterenter empty line in normal mode
F2trim white spaces
F6open Startify

Visual Mode Essentials

Mappingfunctionality
ctrl + jmove selected text to bottom
ctrl + kmove selected text to top
ctrl + hmove selected text to the left
ctrl + lmove selected text to the right

Navigation

ctrl + hjkl navigation also supports tmux panes.

Mappingfunctionality
leader + qclose tab
ctrl + qclose all buffers and exit
ctrl + lmove to the split on the right
ctrl + kmove the split above
ctrl + jmove to the split on below
ctrl + hmove the split to the left
Tabswitch to the next buffer(normal mode)
S-Tabswitch to the previous buffer

IDE Features

Mappingfunctionality
leader + oorganize imports
leader + arun cocAction on what's undercursor
leader + sformat file with available formatter
leader + rnrename globally
leader + jdjump to definition
leader + jyjump to type definition
leader + jijump to implementation
leader + jrjump to references
ctrl + ahighlight for multi cursor selection
shift + kshow current symbol documentation
]gnext diagnostic
[gPrevious diagnostic

Flutter

Mappingfunctionality
F3show list of devices
F4show list of emulators
F5start development server (flutter run)

FZF windows

Mappingfunctionality
leader + ffiles viewer
leader + cshow editor commands
leader + /search in current folder files
leader + shsearch / history
leader + bshow open buffers
leader + tsearch current file tags
F1show keyboard shortcuts for current mode

In FZF

these only work on an open fzf window

MappingFunctionality
C-xopen file in horizontal split
C-vopen file in vertical split
C-topen file in new tab

Git

Mappingfunctionality
leader + gdgit diff split
leader + gcgit commits
leader + gbgit blame
leader + gsgit status in fzf window

Custom commands

CommandFunctionality
Formatformat file with any available formatter
ORorganize imports
Rgadvanced Grep

Customizations

Since the file is pretty small its very easy to interpret by even those who don't have any knowledge about vim script, most of the sections have comments about their functionality, and can be removed, commented out or swapped easily, there are some defaults that are not everyone's cup of tea (after all this is highly opinionated).

for more customizations read throw the config file, there are comments everywhere and its easy to interpret, you can also checkout the linked github page for each plugin for even more options.

Demos

Project files with fzf

fzf preview

Project wide search with fzf

Rg preview

Git Status

git status

workflow demo

Workflow Demo

Credits

All the Credit goes to the Neovim team for making most of the extensions possible and better (async), and to all the plugins developers, and the hackers who spend time Finding good shortcuts and tricks to make this an even more superb experience.