This is my personal VIM config, I like it very much.
The configuration is split up in multiple .vim
files,
so everything looks nice and clean (and maybe even
modular).
It is verified to work on these systems:
vim
on GNU/Linux in GNOME terminal or kittyvim
on Termux for AndroidMacVIM
on MacOS
If you want this VIM config, do this in your Terminal:
mv ~/.vim ~/.vim__NOTSOAWESOME;
mv ~/.vimrc ~/.vimrc__NOTSOAWESOME;
git clone https://github.com/cookiengineer/dotvim ~/.vim;
ln -s ~/.vim/.vimrc ~/.vimrc;
The plugins are contained in ./plugged and are statically shipped in this repository (for the sake of having a known-to-work-failsafe history).
For details on plugins and how to update, read Plugins and Updates respectively down below.
- Copy/Paste from GUI applications into Terminal
- Copy/Paste leads to auto-indented code
Auto commands are defined in autocmds.vim.
BufWritePre
removes trailing whitespaces.BufWritePre
andFileWritePre
creates non-existing parent folder paths viamkdir -p
.FileChangedRO
,FileChangedShell
,FileChangedShellPost
have been modified to echo the warning instead of opening an annoying shell.
:W
will write files withsudo
/root
rights.
Key Bindings that don't require a plugin are defined in mappings.vim,
those that do are defined in the settings.<plugin-name>.vim
file.
[F1]
opensnetrw
as sidebar.[F2]
turns off highlighting (/<search>
in normal mode).[F3]
formats, auto-indents and auto-lints the current buffer.[+]
([Shift] + [-]
on US keyboard) toggles current window zoom (aka fullscreen mode).[p]
auto formats bad indents on paste.
Tab Navigation
[Ctrl] + [E], [S]
creates a new tab.[Ctrl] + [E], [V]
creates a new tab.[Ctrl] + [E], [C]
closes the current tab.[Ctrl] + [E], [Arrow Key]
moves focus to different tab.[Ctrl] + [E], [H/L]
moves focus to different tab.
Window/Buffer Navigation
(Default Bindings)
[Ctrl] + [W], [S]
horizontally splits current window.[Ctrl] + [W], [V]
vertically splits current window.[Ctrl] + [W], [Arrow Key]
moves focus to different window.[Ctrl] + [W], [H/J/K/L]
moves focus to different window.
Additional Bindings are defined in settings.tradewinds.vim.
[Shift] + [W], [Arrow Key]
moves the current window.[Shift] + [W], [H/J/K/L]
moves the current window.
Error Navigation
Error Navigation Bindings are defined in settings.ale.vim.
[Ctrl] + [Arrow Key]
moves focus to to different linting error.[Ctrl] + [J/K]
moves focus to different linting error.
(Default Bindings)
[g], [f]
opens File under cursor in current window.[g], [x]
opens Browser or Application viagio open
.
Additional Bindings are defined in settings.move.vim.
[Ctrl] + [J/K]
moves currently selected block.
The templates are defined in templates.vim
-
,css
inserts the default.css template -
,html
inserts the default.html template -
,mjs
inserts the default.mjs template -
,eslintrc
inserts the eslintrc.json template -
,make
inserts the make.mjs template -
,package
inserts the package.json template
The plugins are defined in .vimrc and use a static copy of vim-zen located at ./autoload/zen.vim.
- w0rp/ale
- ervandew/supertab
- djoshea/vim-autoread
- sgur/vim-editorconfig
- itchyny/lightline.vim
- vim-utils/vim-man
- matze/vim-move
- andymass/vim-tradewinds
The zen.vim
file is modified to use git clone --depth=1 --single-branch --branch=master
in order to save bandwidth. In order to make a full plain copy,
just remove the subfolders in ./plugged, do a :ZenInstall
via vim
, and execute the bin/clean.sh file afterwards
via bash
.
It is wise to modify the bin/clean.sh when some
unnecessary bloat was added to plugins and appear in a git diff
afterwards (Pull Requests welcomed).