π A Hackable, Fully Featured, Rice Friendly Neovim Configuration π
Features β’
Installation β’
Usage β’
Required Tools
- π¨ Colorscheme generated with pywal
- π Intellisense, Completion, and Linting with coc.nvim
- π·οΈ Tag management with vista.vim
- π Git integration with vim-fugitive, vim-gitgutter and lazygit
βοΈ Informative statusline and tabline with vim-airline- βοΈ Code snippets powered by UltiSnips
- π‘ Intelligent suggestions with vim-tabnine
- π Simple file browsing with NERDTree
- π Dynamic homepage with vim-startify
- π Distraction free writing with Goyo
- π§ Easily configfurable to suit your needs
- β¨οΈ Common sense keybinds, so you can get right to work
- π§° Assorted editing enhancements with
The update_config.sh
script simply copies the nvim
folder into your $HOME/.config
directory. This script can also be used to update configurations that you have modified or have been updated from git.
Before installing for the first time, go into the vim.reaper/nvim
directory and run nvim -u init.vim
. This will tell neovim to launch using this configuration file. This lets you fully get everything up and running before you commit to puting it in .config
. Back up any old configs!
Click to expand
Basic keybinds
π
Function | Keybind |
---|---|
Leader Key | SPACE |
Exit insert mode | jk or kj |
Editing
π§¬
Function | Keybind |
---|---|
NERDComment toggle comment | <Leader>n |
NERDComment sexy comment | <Leader>ns |
NERDComment append comment | <Leader>na |
NERDComment uncomment | <Leader>nu |
NERDComment comment | <Leader>nc |
NERDComment invert | <Leader>ni |
Navigation
π
Function | Keybind |
---|---|
Navigate to left window | Ctrl+h |
Navigate to right window | Ctrl+l |
Navigate to top window | Ctrl+k |
Navigate to bottom window | Ctrl+j |
Horizontal split then move to bottom window | <Leader>+Ctrl+s |
Horizontal split then move to right window | <Leader>+Ctrl+l |
Next tab | Tab |
Previous tab | Shift+Tab |
Kill buffer | <Leader>bk |
Scroll up | Ctrl+j or mouse scroll |
Scroll down | Ctrl+k or mouse scroll |
coc.nvim
π
Function | Keybind |
---|---|
Open completion window | Tab |
Accept completion | Enter |
coc-definition | <Leader>cd |
coc-type-definition | <Leader>ctd |
coc-type-implementation | <Leader>ci |
coc-references | <Leader>cr |
coc-rename | <Leader>crn |
coc-format-selected | <Leader>cf |
coc-fix-current | <Leader>cfl |
:CocList diagnostics | <Leader>cdi |
:CocList extensions | <Leader>ce |
:CocList commands | <Leader>cc |
:CocList outline | <Leader>co |
git
π
Function | Keybind |
---|---|
:Gstatus | <Leader>gs |
:Gdiffsplit | <Leader>gd |
:Gcommit | <Leader>gc |
:Gpush | <Leader>gp |
:Gpull | <Leader>gP |
:Gmove | <Leader>gm |
:Gmerge | <Leader>gM |
:Gbrowse | <Leader>gb |
:CocCommand git.browserOpen | <Leader>gbl |
:CocCommand git.chunkInfo | <Leader>gh |
:CocCommand git.showCommit | <Leader>gsc |
:CocCommand git.toggleGutters | <Leader>gg |
:ToggleLazyGit | <Leader>lg |
Translation
π
Function | Keybind |
---|---|
:Translate | <Leader>t |
:TranslateW | <Leader>tw |
:TranslateR | <Leader>tr |
LaTeX
π
Function | Keybind |
---|---|
:VimtexCompile | <Leader>lc |
:VimtexCompileSelected | <Leader>ls |
:VimtexInfo | <Leader>li |
:VimtexTocToggle | <Leader>lt |
:VimtexView | <Leader>lv |
Misc
π§°
Function | Keybind |
---|---|
:ToggleLazyDocker | <Leader>ld |
:MarkdownPreview | <Leader>md |
Check mappings.vim
for a complete list of keybinds.
To open Neovim to the startify buffer, simply launch nvim
without any arguments. Your recently edited files will be displayed, as well as recently edited files from the current directory.
In the middle of a word, you can press Tab
to open the Coc floating completion menu and cycle through options. This menu should be populated with sippets from UltiSnips
, smart complete from TabNine
, and any other completion suggestions. Press Shift+Tab
to go up in the menu, and Enter
to select an option.
In any buffer, press F7
to open the NERDTree file browser. Optionally disable the nerdtree-highlights
plugin if you don't want syntax highlighting in NT.
The tabline will display the currently open buffers, and whether they have been modified.
The status bar displays the current editing mode, git hunks, git branch with branch status, the modified status of the buffer, the filename and filetype, the character encoding method, progress through file, and warnings/errors found by linter.
I am still ironing out the kinks in my vista config (specifically with C files), but it should work pretty well for most filetypes. Press F8
to toggle the Vista window.
For quick location of tags, you can activate the Vista finder
fuzzyfinder by pressing <Leader>ft
To navigate the fzf menu, you can type the name of the tag or use Ctrl+j
or Ctrl+k
LazyGit and LazyDocker give you a convenient TUI portal to your current git repo or docker stack. They can be brought up with <Leader>lg
and <Leader>ld
respectively.
By default I set the target language to french. This option is configurable in the plugin-settings, plus a ton of other options for that plugin I'm not even using at the moment.
Here's what it looks like if you translate a phrase to a window with <Leader>tw
.
While editing a markdown document, press <Leader>md
to open a live preview of your document. You must edit the plugin settings to point to the absolute filepath of the css
file. This shoud just mean changing the username.
If you are running pywal, your colors will be dynamically sourced!
While editing a LaTeX document, press <Leader>lc
to start automatic compilation.
use zathura pywal for the most cohesive theme!
These must be installed to make use of all the awesome features
fzf
to enable fuzzy findingeslint
npm package for coc-eslint (only for JavaScript)ccls
package for C/C++ language serversOracleJDK
orOpenJDK
, version 8+ (only for Java)git
- coc.nvim npm package
- pywal for colorscheme
neovim
python module from pip- lazydocker for TUI docker management
- lazygit for TUI git management
vim.reaper is only part of a balanced linux diet. Check out my dotfiles for more ricing goodness. Please feel free to let me know about any errors, or create PRs that expand the configuration or make it more robust on different systems.