"============================================================================= " leader.vim --- mapping leader definition file for SpaceVim " Copyright (c) 2016-2023 Wang Shidong & Contributors " Author: Shidong Wang < wsdjeg@outlook.com > " URL: https://spacevim.org " License: GPLv3 "============================================================================= "" " @section windows-and-tabs, usage-windows-and-tabs " @parentsection usage " Window manager key bindings can only be used in normal mode. " The default leader `[WIN]` is `s`, you can change it via `windows_leader` " in the `[options]` section: " > " [options] " windows_leader = "s" " < " > " Key Bindings | Descriptions " ------------ | -------------------------------------------------- " q | Smart buffer close " WIN v | :split " WIN V | Split with previous buffer " WIN g | :vsplit " WIN G | Vertically split with previous buffer " WIN t | Open new tab (:tabnew) " WIN o | Close other windows (:only) " WIN x | Remove buffer, leave blank window " WIN q | Remove current buffer " WIN Q | Close current buffer (:close) " Shift-Tab | Switch to alternate window (switch back and forth) " < " SpaceVim has mapped normal `q` (record a macro) as smart buffer close, " and record a macro (vim's `q`) has been mapped to ` q r`, " if you want to disable this feature, you can use `vimcompatible` mode. " " @subsection General Editor windows " > " Key Bindings | Descriptions " ------------ | -------------------------------- " | Toggle tagbar " | Toggle Vimfiler " Ctrl-Down | Move to split below ( Ctrl-w j ) " Ctrl-Up | Move to upper split ( Ctrl-w k ) " Ctrl-Left | Move to left split ( Ctrl-w h ) " Ctrl-Right | Move to right split ( Ctrl-w l ) " < " @subsection Window manipulation key bindings " " Every window has a number displayed at the start of the statusline " and can be quickly accessed using `SPC number`. " > " Key Bindings | Descriptions " ------------ | --------------------- " SPC 1 | go to window number 1 " SPC 2 | go to window number 2 " SPC 3 | go to window number 3 " SPC 4 | go to window number 4 " SPC 5 | go to window number 5 " SPC 6 | go to window number 6 " SPC 7 | go to window number 7 " SPC 8 | go to window number 8 " SPC 9 | go to window number 9 " < " Windows manipulation commands (start with `w`): " > " Key Bindings | Descriptions " --------------------- | -------------------------------------------------- " SPC w . | windows transient state " SPC w | switch to alternate window in the current frame " SPC w = | balance split windows " SPC w c | Distraction-free reading current window " SPC w C | Distraction-free reading other windows " SPC w d | delete a window " SPC w D | delete another window using vim-choosewin " SPC w f | toggle follow mode " SPC w F | create new tab " SPC w h | move to window on the left " SPC w H | move window to the left " SPC w j | move to window below " SPC w J | move window to the bottom " SPC w k | move to window above " SPC w K | move window to the top " SPC w l | move to window on the right " SPC w L | move window to the right " SPC w m | maximize/minimize a window " SPC w M | swap windows using vim-choosewin " SPC w o | cycle and focus between tabs " SPC w r | rotate windows forward " SPC w R | rotate windows backward " SPC w s / SPC w - | horizontal split " SPC w S | horizontal split and focus new window " SPC w u | undo window layout " SPC w U | redo window layout " SPC w v / SPC w / | vertical split " SPC w V | vertical split and focus new window " SPC w w | cycle and focus between windows " SPC w W | select window using vim-choosewin " SPC w x | exchange current window with next one " < let s:file = expand(':~') let s:lnum = expand('') + 3 function! SpaceVim#mapping#leader#defindWindowsLeader(key) abort if !empty(a:key) exe 'nnoremap [Window] :LeaderGuide "' . \ a:key . '"' exe 'nmap ' .a:key . ' [Window]' nnoremap [Window]v \ :split let lnum = expand('') + s:lnum - 4 let g:_spacevim_mappings_windows.v = ['split', \ 'split-window', \ [ \ '[WIN v] is to split windows, switch to the new window', \ '', \ 'Definition: ' . s:file . ':' . lnum, \ ] \ ] nnoremap [Window]V \ :split +bp let lnum = expand('') + s:lnum - 4 let g:_spacevim_mappings_windows.V = ['split +bp', \ 'split-previous-buffer', \ [ \ '[WIN V] is to split previous buffer, switch to the new window', \ '', \ 'Definition: ' . s:file . ':' . lnum, \ ] \ ] nnoremap [Window]g \ :vsplit let lnum = expand('') + s:lnum - 4 let g:_spacevim_mappings_windows.g = ['vsplit', \ 'vsplit-window', \ [ \ '[WIN g] is to split previous buffer vertically, switch to the new window', \ '', \ 'Definition: ' . s:file . ':' . lnum, \ ] \ ] nnoremap [Window]G \ :vsplit +bp let lnum = expand('') + s:lnum - 4 let g:_spacevim_mappings_windows.G = ['vsplit +bp', \ 'vsplit-previous-buffer', \ [ \ '[WIN G] is to split windows vertically, switch to the new window', \ '', \ 'Definition: ' . s:file . ':' . lnum, \ ] \ ] nnoremap [Window]t \ :tabnew let lnum = expand('') + s:lnum - 4 let g:_spacevim_mappings_windows.t = ['tabnew', \ 'create-new-tab', \ [ \ '[WIN t] is to create new tab', \ '', \ 'Definition: ' . s:file . ':' . lnum, \ ] \ ] nnoremap [Window]o \ :onlydoautocmd WinEnter let lnum = expand('') + s:lnum - 4 let g:_spacevim_mappings_windows.o = ['only | doautocmd WinEnter', \ 'close-other-windows', \ [ \ '[WIN o] is to close all other windows', \ '', \ 'Definition: ' . s:file . ':' . lnum, \ ] \ ] nnoremap [Window]x \ :call SpaceVim#mapping#BufferEmpty() let lnum = expand('') + s:lnum - 4 let g:_spacevim_mappings_windows.x = ['call SpaceVim#mapping#BufferEmpty()', \ 'empty-current-buffer', \ [ \ '[WIN x] is to empty current buffer', \ '', \ 'Definition: ' . s:file . ':' . lnum, \ ] \ ] nnoremap [Window]\ \ :b# let lnum = expand('') + s:lnum - 4 let g:_spacevim_mappings_windows['\'] = ['b#', \ 'switch-to-the-last-buffer', \ [ \ '[WIN \] is to switch to the last buffer', \ '', \ 'Definition: ' . s:file . ':' . lnum, \ ] \ ] nnoremap [Window]Q \ :close let lnum = expand('') + s:lnum - 4 let g:_spacevim_mappings_windows.Q = ['close', \ 'close-current-windows', \ [ \ '[WIN Q] is to close current windows', \ '', \ 'Definition: ' . s:file . ':' . lnum, \ ] \ ] nnoremap [Window]q \ :call SpaceVim#mapping#close_current_buffer() let lnum = expand('') + s:lnum - 4 let g:_spacevim_mappings_windows.q = ['call SpaceVim#mapping#close_current_buffer()', \ 'delete-current-windows', \ [ \ '[WIN q] is to delete current windows', \ '', \ 'Definition: ' . s:file . ':' . lnum, \ ] \ ] nnoremap [Window]c \ :call SpaceVim#mapping#clear_buffers() let lnum = expand('') + s:lnum - 4 let g:_spacevim_mappings_windows.c = ['call SpaceVim#mapping#clear_buffers()', \ 'clear-all-the-buffers', \ [ \ '[WIN c] is to clear all the buffers', \ '', \ 'Definition: ' . s:file . ':' . lnum, \ ] \ ] endif endfunction function! SpaceVim#mapping#leader#defindDeniteLeader(key) abort if !empty(a:key) if a:key ==# 'F' nnoremap F F endif exe 'nnoremap [denite] :LeaderGuide "' . \ a:key . '"' exe 'nmap ' .a:key . ' [denite]' let g:_spacevim_mappings_denite = {} nnoremap [denite]r \ :Denite -resume let g:_spacevim_mappings_denite.r = ['Denite -resume', \ 'resume denite window'] nnoremap [denite]f :Denite file_rec let g:_spacevim_mappings_denite.f = ['Denite file_rec', 'file_rec'] nnoremap [denite]i :Denite file_rec/git let g:_spacevim_mappings_denite.i = ['Denite file_rec/git', 'git files'] nnoremap [denite]g :Denite grep let g:_spacevim_mappings_denite.g = ['Denite grep', 'denite grep'] nnoremap [denite]t :Denite tag let g:_spacevim_mappings_denite.t = ['Denite tag', 'denite tag'] nnoremap [denite]T :Denite tag:include let g:_spacevim_mappings_denite.T = ['Denite tag/include', \ 'denite tag/include'] nnoremap [denite]j :Denite jump let g:_spacevim_mappings_denite.j = ['Denite jump', 'denite jump'] nnoremap [denite]h :Denite neoyank let g:_spacevim_mappings_denite.h = ['Denite neoyank', 'denite neoyank'] nnoremap [denite] :DeniteCursorWord help let g:_spacevim_mappings_denite[''] = ['DeniteCursorWord help', \ 'denite with cursor word help'] nnoremap [denite]o :Denite -buffer-name=outline \ -auto-preview outline let g:_spacevim_mappings_denite.o = ['Denite outline', 'denite outline'] nnoremap [denite]e :Denite \ -buffer-name=register register let g:_spacevim_mappings_denite.e = ['Denite register', 'denite register'] nnoremap [denite] :Denite menu:CustomKeyMaps let g:_spacevim_mappings_denite[''] = ['Denite menu:CustomKeyMaps', \ 'denite customkeymaps'] endif endfunction function! SpaceVim#mapping#leader#getName(key) abort if a:key ==# ' ' return '[SPC]' elseif a:key ==# 'g' return '[g]' elseif a:key ==# 'z' return '[z]' elseif a:key ==# g:spacevim_windows_leader return '[WIN]' elseif a:key ==# '\' return '' else return '' endif endfunction function! SpaceVim#mapping#leader#defindKEYs() abort call SpaceVim#logger#debug('defind SPC h k prefixs') if !g:spacevim_vimcompatible && !empty(g:spacevim_windows_leader) let g:_spacevim_mappings_prefixs[g:spacevim_windows_leader] = {'name' : '+Window prefix'} call extend(g:_spacevim_mappings_prefixs[g:spacevim_windows_leader], g:_spacevim_mappings_windows) endif let g:_spacevim_mappings_prefixs['g'] = {'name' : '+g prefix'} call extend(g:_spacevim_mappings_prefixs['g'], g:_spacevim_mappings_g) let g:_spacevim_mappings_prefixs['z'] = {'name' : '+z prefix'} call extend(g:_spacevim_mappings_prefixs['z'], g:_spacevim_mappings_z) let leader = get(g:, 'mapleader', '\') let g:_spacevim_mappings_prefixs[leader] = {'name' : '+Leader prefix'} call extend(g:_spacevim_mappings_prefixs[leader], g:_spacevim_mappings) endfunction " vim:set et sw=2 cc=80: