# VIM Note: Some features require version 8+ of vim. For instance, the ALE plugin which utilizes the built-in `~/.vim/pack/` for autoloading plugins ## Table of Contents * [Snippets](#snippets) * [Incrementing a column of numbers](#incrementing-a-column-of-numbers) * [Plugins](#plugins) * [Keybindings](#keybindings) * [Display Related](#display-related) * [Formatting Related](#formatting-related) * [Navigation Related](#navigation-related) * [Tabs and Windows Related](#tabs-and-windows-related) * [Misc Related](#misc-related) ## Snippets ``` # select to end of word/variable and yank <)> # cut everything before ) [eg func(text-to-cut)] ``` ### Incrementing a column of numbers ``` # Select all number columns to increment # If using tmux config, may need to hit a twice (e.g. ``` ## Plugins * ~~[Easymotion](https://github.com/easymotion/vim-easymotion) - Easily navigate documents~~ Disabled recently as unused, although useful * [Asynchronous Lint Engine (ALE)](https://github.com/dense-analysis/ale) - Linting while working * [Gruvbox](https://github.com/morhetz/gruvbox) - Retro colorscheme (colorscheme in vimrc) * [Matchit](https://github.com/adelarsq/vim-matchit) - For expanding % matching (matches start/end tags for html, for example) * [Lightline](https://github.com/itchyny/lightline.vim) - Configurable statusline/tabline * [Markdown TOC](https://github.com/mzlogin/vim-markdown-toc) - A markdown Table of Contents generator * [NERDCommenter](https://github.com/preservim/nerdcommenter) - Quick commenting/uncommenting of lines * [NERDTree](https://github.com/scrooloose/nerdtree) - Local file explorer * [python-syntax](https://github.com/vim-python/python-syntax) - Better syntax highlighting for python * [Tabular](https://github.com/godlygeek/tabular/) - Easily align text based on delimeters (e.g. |) * [surround.vim](https://github.com/tpope/vim-surround) - Easily surround with delimeters (e.g. "Something") * [IndentLines](https://github.com/Yggdroot/indentLine) - View the indentations (`i`) * [vim-rainbow](https://github.com/frazrepo/vim-rainbow.git) - Different colors for different levels of brackets ## Keybindings **Leader Key:** `,` (comma) ### Display Related | Shortcut | Description | Plugin | | ---------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------- | | `` | Toggle wordwrap | | | `bg` | Toggle dark/light background | | | `h` | Disable search highlight | | | `f<0-9>` | Set foldlevel (0-9) | | | `i` | Toggle indent guides | IndentLines | ### Formatting Related | Shortcut | Description | Plugin | | ---------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------- | | `-` | Comment out selected lines (filetype needs to be configured in vimrc for support) | NERDcommenter | | `_` | Uncomment selected lines (filetype needs to be configured in vimrc for support) | NERDcommenter | | `` | Remove trailing whitespace from file | | | `a` | Accept various common delimiters for tabulizing blocks of code (e.g. `varname = something`, = being the delimiter) | Tabular | | `d` | Add delimiters around entire line (normal mode) or selection (visual mode) | vim-surround | | `j` | Pretty print json (current open file) | | | `D` | Add delimiters around current word (normal mode) | vim-surround | | `q` | Format a paragraph/line to better fit the textwidth | | | `p` | Toggle paste mode | | | `S)` | Add delimiters current selection | vim-surround | | `cs` | Replace a character with anothere charcter (e.g. `cs"'`, or `cs'

`) | vim-surround | | `ds` | Remove a delimiter | vim-surround | | `ysiw]` | Add delimiters around current word | vim-surround | | `yss)` | Add delimiters around entire line | vim-surround | ### Navigation Related | Shortcut | Description | Plugin | | ---------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------- | | `%` | Find the end {}, [], or start/end tags (e.g. html) | Base, Matchit | | `*` | Highlight all occurences of word under cursor (default in vim) | | | `ff` | Display all occurences of word under cursor | | | `cwd` | Change working dirctory to current file's | | | `n` | Toggle NERDTree | NERDTree | | `j` | Move to next linting error | ALE | | `k` | Move to previous linting error | ALE | ### Tabs and Windows Related | Shortcut | Description | Plugin | | ---------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------- | | `sh` | Split horizontally | | | `sv` | Split vertically | | | `t` | Tab Next | | | `T` | Tab Previous | | | `w` | cycle through split windows | | | `<+>` | Resize horizontal pane (3/2) | | | `<->` | Resize horizontal pane (2/3) | | | `<<>` | Resize vertical pane (3/2) | | | `<>>` | Resize vertical pane (2/3) | | ### Misc Related | Shortcut | Description | Plugin | | ---------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------- | | `` | Reload vimrc file | | | `w!!` | Attempt to sudo and write to file | |