vimrc.d/dein_early_setup.vim¶
This file holds setup that is required for lazy loading to function correctly
with dein.vim, but which can’t be stored within the plugin
configuration as it would break caching.
ale maps¶
Use my custom maps:
if v:version >= 800 && has('signs')
call keymaps#mnemonic_map('ale', #{local: v:true})
for [s:key, s:cmd] in [
\ ['br', 'reset_buffer'],
\ ['bt', 'toggle_buffer'],
\ ['d', 'detail'],
\ ['f', 'fix'],
\ ['gd', 'go_to_definition'],
\ ['gt', 'go_to_type_definition'],
\ ['l', 'lint'],
\ ['r', 'reset'],
\ ['t', 'toggle'],
\ ['vgd', 'go_to_definition_in_vsplit'],
\ ['vgt', 'go_to_type_definition_in_vsplit'],
\ ['<Home>', 'first'],
\ ['<End>', 'last'],
\ ['<Down>', 'next_wrap'],
\ ['<Up>', 'previous_wrap'],
\ ]
execute printf('nmap <silent> [ale]%s <Plug>(ale_%s)', s:key, s:cmd)
endfor
nnoremap [ale]i <Cmd>call ale#debugging#Info()<CR>
endif
Note
You can, of course, simply use the normal location list bindings for movement too.
See also
calendar-vim maps¶
Use my custom maps:
const g:calendar_no_mappings = v:true
call keymaps#mnemonic_map('Calendar')
for [s:key, s:cmd] in [
\ ['v', ''],
\ ['h', 'H'],
\ ['f', 'T'],
\ ['r', 'VR'],
\ ]
execute printf('nnoremap [Calendar]%s <Cmd>Calendar%s<CR>',
\ s:key, s:cmd)
endfor
See also
committia.vim filetype¶
We lazy load on filetype definition for my normal workflow with
clientserver, but want to forcibly load on vim being called from
git commit:
if plugins#dein#has_exec('git')
if get(v:argv, 0, '') =~# '/.git/COMMIT_EDITMSG$'
call dein#source('committia.vim')
endif
endif
dwm.vim maps¶
Use my custom maps:
const g:dwm_map_keys = v:false
call keymaps#mnemonic_map('dwm')
Configure maps to match, to some degree, my window manager’s configuration:
for [s:key, s:cmd] in [
\ ['n', 'New'],
\ ['c', 'Close'],
\ ['f', 'Focus'],
\ ['<Left>', 'RotateCounterclockwise'],
\ ['<Right>', 'RotateClockwise'],
\ ['<Up>', 'New'],
\ ['<Down>', 'Close'],
\ ['+', 'GrowMaster'],
\ ['-', 'ShrinkMaster'],
\ ]
execute printf('nmap [dwm]%s <Plug>DWM%s', s:key, s:cmd)
endfor
See also
Tip
Imagine <Up> increases window count, and <Down>… well, yeah.
fzf.vim maps¶
Configure convenience mappings for common command usage:
if plugins#dein#has_exec('fzf')
let g:fzf_commands = ['Buffers', 'Colors', 'Commands', 'Files',
\ 'History', 'Lines', 'Maps', 'Marks', 'Windows']
if plugins#dein#has_exec('ag')
let g:fzf_commands += ['Ag', ]
endif
if plugins#dein#has_exec('git')
let g:fzf_commands += ['GFiles', ]
endif
if has('insert_expand')
let g:fzf_commands += ['Snippets', ]
endif
call keymaps#mnemonic_map('fzf', #{key: '`'})
for s:cmd in g:fzf_commands
execute printf('nnoremap [fzf]%s <Cmd>FZF%s<CR>',
\ tolower(s:cmd[0]), s:cmd)
endfor
endif
See also
Tip
I use grave as my binding for fzf commands to reflect my use of <Mod4-`> to open a drop down terminal in my window manager. The pattern here and throughout these configuration files is extremely useful as a way to remember bindings.
git-messenger.vim maps¶
Use my custom maps:
if has('signs') && plugins#dein#has_exec('git')
let g:git_messenger_no_default_mappings = v:true
call keymaps#mnemonic_map('messenger')
for [s:key, s:cmd] in [
\ ['o', ''],
\ ['c', '-close'],
\ ['i', '-into-popup'],
\ ['<Down>', '-scroll-down-1'],
\ ['<Up>', '-scroll-up-1'],
\ ['<PageDown>', '-scroll-down-page'],
\ ['<PageUp>', '-scroll-up-page'],
\ ]
execute printf(
\ 'nmap <silent> [messenger]%s <Plug>(git-messenger%s)',
\ s:key, s:cmd)
endfor
endif
See also
nerdtree maps¶
Use my custom maps:
call keymaps#mnemonic_map('nerdtree')
for [s:key, s:cmd] in [
\ ['O', 'VCS'],
\ ['T', 'ToggleVCS'],
\ ['c', 'Close'],
\ ['f', 'Focus'],
\ ['o', ''],
\ ['t', 'Toggle'],
\ ]
execute printf('nnoremap [nerdtree]%s <Cmd>NERDTree%s<CR>',
\ s:key, s:cmd)
endfor
See also
sideways.vim maps¶
Use my custom maps:
call keymaps#mnemonic_map('sideways', #{local: v:true})
for s:key in ['Left', 'Right']
execute printf('nnoremap [sideways]<%s> <Cmd>Sideways%s<CR>', s:key,
\ s:key)
execute printf(
\ 'nnoremap [sideways]<S-%s> <Cmd>SidewaysJump%s<CR>', s:key, s:key)
endfor
See also
switch.vim maps¶
Use <C-M-T> to flip word under cursor to match my old
True/False map memory:
for [s:mode, s:cmd_prefix] in [
\ ['i', '<C-O>'],
\ ['n', ''],
\ ['v', '<ESC>'],
\ ]
execute printf('%snoremap <C-M-T> %s:Switch<CR>', s:mode, s:cmd_prefix)
endfor
unicode.vim maps¶
:UnicodeName output is far more useful than vim’s ga, and in my
opinion it is also easier to read.
Command |
Output |
|---|---|
|
|
|
|
So, we’ll override the ga mapping:
nmap ga <Plug>(UnicodeGA)
Tip
If for some reason you want the default ga output :ascii still
does that.
vim-bufmru maps¶
Use my custom maps:
call keymaps#mnemonic_map('bufmru')
nnoremap [bufmru]l <Cmd>BufMRU<CR>
nnoremap [bufmru]<Left> <Cmd>BufMRUPrev<CR>
nnoremap [bufmru]<Right> <Cmd>BufMRUNext<CR>
See also
Tip
Imagine <Left> and <Right> are moving across a timeline of used buffers.
vim-editqf maps¶
Add custom maps in to my quickfix map hierarchy:
nmap [quickfix]a <Plug>QFAddNote
nmap [quickfix]A <Plug>QFAddPatternNote
nnoremap [location]a <Cmd>LocAddNote<CR>
nnoremap [location]A <Cmd>LocAddNotePattern<CR>
vim-fugitive maps¶
Add map to change directory to git project root using vim-projectionist:
if plugins#dein#has_exec('git')
nnoremap <C-p> <Cmd>Gcd<CR>
endif
Note
I never use <C-p> or <C-n> for navigation, as vim generally offers far more useful navigation, and anyway you can still move up with k.
vim-gitgutter maps¶
Use my custom maps:
if has('signs') && plugins#dein#has_exec('git')
call keymaps#mnemonic_map('gitgutter')
let g:gitgutter_map_keys = v:false
for [s:key, s:cmd] in [
\ ['<Down>', 'NextHunk'],
\ ['<Up>', 'PrevHunk'],
\ ['<Space>', 'Toggle'],
\ ['f', 'Fold'],
\ ['p', 'PreviewHunk'],
\ ['q', 'QuickFix'],
\ ]
execute printf(
\ 'nnoremap [gitgutter]%s <Cmd>GitGutter%s<CR>',
\ s:key, s:cmd
\ )
endfor
endif
See also
vim-ledger maps¶
Use my custom maps:
call keymaps#mnemonic_map('Ledger', #{buffer: v:true, key: 'L',
\ local: v:true})
for [s:key, s:cmd] in [
\ ['a', ':LedgerAlign'],
\ ['d', 'align_amount_at_cursor()'],
\ ['n', 'entry()'],
\ ['s', 'transaction_state_toggle(line("."), " *?!")'],
\ ['t', 'transaction_date_set(".", "auxiliary")'],
\ ]
if s:cmd[0] !=# ':'
let s:cmd = 'call ledger#' .. s:cmd
else
let s:cmd = s:cmd[1:]
endif
execute printf(
\ 'autocmd Filetype ledger nnoremap [Ledger]%s <Cmd>%s<CR>',
\ s:key, s:cmd)
endfor
See also
vim-mundo maps¶
Use my custom maps:
if has('pythonx') && v:version >= 703
nnoremap <LocalLeader># <Cmd>MundoToggle<CR>
endif
vim-quick-radon maps¶
Configure my custom maps:
if plugins#dein#has_exec('radon')
call keymaps#mnemonic_map('radon', #{key: 'p', local: v:true})
endif
See also
Note
<Leader>r is free globally, but jedi-vim uses it in my Python
files.
vim-vebugger maps¶
Use my custom maps:
call keymaps#mnemonic_map('vebugger', #{local: v:true})
const g:vebugger_leader='[vebugger]'
See also
wordnet.vim maps¶
Use my custom maps:
if plugins#dein#has_exec('wn')
call keymaps#mnemonic_map('wordnet')
for [s:key, s:cmd] in [
\ ['o', 'WordNetOverviews(expand("<cword>"))'],
\ ['c', 'plugins#wordnet_vim#close_win()'],
\ ]
execute printf('nnoremap [wordnet]%s <Cmd>call %s<CR>',
\ s:key, s:cmd)
endfor
endif