Don't use what you don't understand.
Screenshot in terminal vim with a function signature in tabline
- Custom statusline with minimal junk, showing short cwd - much faster than airline
- FZF for Most Recently Used files and fuzzy file finder
- Neomake + local use of eslint, custom detection of .eslint, .scss-lint, etc.
- Lots more but you shouldn't use any of it unless you really know what you're doing.
Best used with rest of dotfiles. Should self-install plugins via curl and vim-plug on first load.
(g)vimrc (no dot in filename) in
.vim -- Vim knows to look in there.
pyenv, install python 3+.
- Set up a virtualenv using
pyenv virtualenv neovim3
- Activate the virtualenv
pyenv activate neovim3
pip install neovimin the virtualenv
pip install jedifor python completion while still in the virtualenv
- You can now switch back to whatever python (
pyenv deactivate) you want,
init.vimfor neovim startup is already configured to find the
:UpdateRemotePluginsif installing/upgrading python-based plugins like deoplete.
:CheckHealthto see if the python3 setup and plugins are working. iTerm should use xterm-256color-italic terminfo if the backspace message is there.
- Not used for anything right now.
chrubyinstall and use a ruby.
- Install the
:CheckHealthto see if the gem is found.
nvminstall and use a node.
- When installing/updating plugins, ones that have a dependency on node will be installed.
runtime! archlinux.vim from
/etc/vimrc if you're on Arch Linux
(in spite of its pleas not to.)
/ (dotfiles/vim root)
This is a Vim runtimepath that will load after the user and system runtimepaths
but before the vim-plug ones. So
plugin/xyz.vim will load before
plug/vim/pluginname/plugin/name.vim. Neovim plugins will be in
Use this for settings that must be set before a plugin is loaded (i.e. the
plugin does not check for the existence of a setting on init). The global
g:plugs, which is a dictionary of plugin names and settings from
vim-plug, is available to before since it is created in the main
This is a runtimepath that will load after the system runtimepath but before
the vim-plug one. So
after/plugin/xyz.vim will load after
Use this for settings that should override or extend system or plugin settings. This will take precedence over everything but local vimrc files.
vimrcs are expected to be in
~/.secret/vim/ and follow the standard
Vim directory layout (
indent/, etc.). A base (g)vimrc
file there is probably enough.
All local settings are loaded LAST (after all of the system, user, plugin, and
Settings for various plugins have been interspersed into
plugin/, and a few
after/ftplugin/ as needed. There is generally a wrapper around them that
exists('g:plugs["plugin"]) so grepping for
g:plugs is an easy
way to find them.
- EasyClip changes behavior of pretty much all register operations (
[s]ubstitute, etc.). Prefer
[m]oveto populate registers.
<C-f>-- Expand neosnippet. I use
<C-d>to jump pages instead.
gsno longer sleeps. It's an operator prefix for vim-operator-surround.
||:FZFGrepper - custom, rg/ag with preview or git-grep|
||:FZFRelevant - custom, dirty/new files vs git master|
||:FZFProject - custom, :FZFFiles but from project root|
||:FZFMRU - custom, whitelisted recently used + buffers|
||:FZFFiles - files from Vim's cwd|
||UI - :FZFColors|
||UI - :QuickfixsignsToggle (on by default)|
||do not use -- gnome-terminal menu key|
||UI - dkotabline#Toggle()|
||UI - set pastetoggle|
||UI - incsearch|
||UI - :OverCommandLine|
plugin/mappings.vim (and other
plugin/* files) for other mappings.
Junk defaults and unmapped keys
Plan to remap these at some point
n <C-b>-- backward one screen (page)
n <C-f>-- foreward one screen (page)
n <C-g>-- show file status (everything's already in statusline)
n <C-s>-- nothing (terminal XOFF)
n zh/l-- useless wrap mode scroll
My Vim conventions
Always try to keep as much in the main runtime as possible, using
sparingly (mostly for
setlocal ftplugin settings).
dko#IsPlugged()check if relying on plugins
&cpoptionsguard if there are mappings
<special>if the mapping key is special (irrespective of
l:local_variable- snake_case function-local variables
s:variable_name- snake_case for script-local variables
g:dko_variable_name- dko_snake_case for my global variables
g:dko#variable_name- prefixed autoload-provided global variable