function! s:split(...) abort let direction = a:1 let file = exists('a:2') ? a:2 : '' call VSCodeCall(direction ==# 'h' ? 'workbench.action.splitEditorDown' : 'workbench.action.splitEditorRight') if !empty(file) call VSCodeExtensionNotify('open-file', expand(file), 'all') endif endfunction function! s:splitNew(...) let file = a:2 call s:split(a:1, empty(file) ? '__vscode_new__' : file) endfunction function! s:closeOtherEditors() call VSCodeNotify('workbench.action.closeEditorsInOtherGroups') call VSCodeNotify('workbench.action.closeOtherEditors') endfunction function! s:manageEditorHeight(...) let count = a:1 let to = a:2 for i in range(1, count ? count : 1) call VSCodeNotify(to ==# 'increase' ? 'workbench.action.increaseViewHeight' : 'workbench.action.decreaseViewHeight') endfor endfunction function! s:manageEditorWidth(...) let count = a:1 let to = a:2 for i in range(1, count ? count : 1) call VSCodeNotify(to ==# 'increase' ? 'workbench.action.increaseViewWidth' : 'workbench.action.decreaseViewWidth') endfor endfunction command! -complete=file -nargs=? Split call split('h', ) command! -complete=file -nargs=? Vsplit call split('v', ) command! -complete=file -nargs=? New call split('h', '__vscode_new__') command! -complete=file -nargs=? Vnew call split('v', '__vscode_new__') command! -bang Only if ==# '!' | call closeOtherEditors() | else | call VSCodeNotify('workbench.action.joinAllGroups') | endif AlterCommand sp[lit] Split AlterCommand vs[plit] Vsplit AlterCommand new New AlterCommand vne[w] Vnew AlterCommand on[ly] Only " buffer management nnoremap n call splitNew('h', '__vscode_new__') xnoremap n call splitNew('h', '__vscode_new__') nnoremap q call VSCodeNotify('workbench.action.closeActiveEditor') xnoremap q call VSCodeNotify('workbench.action.closeActiveEditor') nnoremap c call VSCodeNotify('workbench.action.closeActiveEditor') xnoremap c call VSCodeNotify('workbench.action.closeActiveEditor') nnoremap call VSCodeNotify('workbench.action.closeActiveEditor') xnoremap call VSCodeNotify('workbench.action.closeActiveEditor') " window/splits management nnoremap s call split('h') xnoremap s call split('h') nnoremap call split('h') xnoremap call split('h') nnoremap v call split('v') xnoremap v call split('v') nnoremap call split('v') xnoremap call split('v') nnoremap = call VSCodeNotify('workbench.action.evenEditorWidths') xnoremap = call VSCodeNotify('workbench.action.evenEditorWidths') nnoremap _ call VSCodeNotify('workbench.action.toggleEditorWidths') xnoremap _ call VSCodeNotify('workbench.action.toggleEditorWidths') nnoremap + call manageEditorHeight(v:count, 'increase') xnoremap + call manageEditorHeight(v:count, 'increase') nnoremap - call manageEditorHeight(v:count, 'decrease') xnoremap - call manageEditorHeight(v:count, 'decrease') nnoremap > call manageEditorWidth(v:count, 'increase') xnoremap > call manageEditorWidth(v:count, 'increase') nnoremap < call manageEditorWidth(v:count, 'decrease') xnoremap < call manageEditorWidth(v:count, 'decrease') nnoremap o call VSCodeNotify('workbench.action.joinAllGroups') xnoremap o call VSCodeNotify('workbench.action.joinAllGroups') nnoremap call VSCodeNotify('workbench.action.joinAllGroups') xnoremap call VSCodeNotify('workbench.action.joinAllGroups') " window navigation nnoremap j call VSCodeNotify('workbench.action.navigateDown') xnoremap j call VSCodeNotify('workbench.action.navigateDown') nnoremap k call VSCodeNotify('workbench.action.navigateUp') xnoremap k call VSCodeNotify('workbench.action.navigateUp') nnoremap h call VSCodeNotify('workbench.action.navigateLeft') xnoremap h call VSCodeNotify('workbench.action.navigateLeft') nnoremap l call VSCodeNotify('workbench.action.navigateRight') xnoremap l call VSCodeNotify('workbench.action.navigateRight') nnoremap call VSCodeNotify('workbench.action.navigateDown') xnoremap call VSCodeNotify('workbench.action.navigateDown') nnoremap call VSCodeNotify('workbench.action.navigateUp') xnoremap call VSCodeNotify('workbench.action.navigateUp') nnoremap call VSCodeNotify('workbench.action.navigateLeft') xnoremap call VSCodeNotify('workbench.action.navigateLeft') nnoremap call VSCodeNotify('workbench.action.navigateRight') xnoremap call VSCodeNotify('workbench.action.navigateRight') nnoremap call VSCodeNotify('workbench.action.moveEditorToBelowGroup') xnoremap call VSCodeNotify('workbench.action.moveEditorToBelowGroup') nnoremap call VSCodeNotify('workbench.action.moveEditorToAboveGroup') xnoremap call VSCodeNotify('workbench.action.moveEditorToAboveGroup') nnoremap call VSCodeNotify('workbench.action.moveEditorToLeftGroup') xnoremap call VSCodeNotify('workbench.action.moveEditorToLeftGroup') nnoremap call VSCodeNotify('workbench.action.moveEditorToRightGroup') xnoremap call VSCodeNotify('workbench.action.moveEditorToRightGroup') nnoremap call VSCodeNotify('workbench.action.moveEditorToBelowGroup') xnoremap call VSCodeNotify('workbench.action.moveEditorToBelowGroup') nnoremap call VSCodeNotify('workbench.action.moveEditorToAboveGroup') xnoremap call VSCodeNotify('workbench.action.moveEditorToAboveGroup') nnoremap call VSCodeNotify('workbench.action.moveEditorToLeftGroup') xnoremap call VSCodeNotify('workbench.action.moveEditorToLeftGroup') nnoremap call VSCodeNotify('workbench.action.moveEditorToRightGroup') xnoremap call VSCodeNotify('workbench.action.moveEditorToRightGroup') nnoremap call VSCodeNotify('workbench.action.moveActiveEditorGroupDown') xnoremap call VSCodeNotify('workbench.action.moveActiveEditorGroupDown') nnoremap call VSCodeNotify('workbench.action.moveActiveEditorGroupUp') xnoremap call VSCodeNotify('workbench.action.moveActiveEditorGroupUp') nnoremap call VSCodeNotify('workbench.action.moveActiveEditorGroupLeft') xnoremap call VSCodeNotify('workbench.action.moveActiveEditorGroupLeft') nnoremap call VSCodeNotify('workbench.action.moveActiveEditorGroupRight') xnoremap call VSCodeNotify('workbench.action.moveActiveEditorGroupRight') nnoremap call VSCodeNotify('workbench.action.moveActiveEditorGroupDown') xnoremap call VSCodeNotify('workbench.action.moveActiveEditorGroupDown') nnoremap call VSCodeNotify('workbench.action.moveActiveEditorGroupUp') xnoremap call VSCodeNotify('workbench.action.moveActiveEditorGroupUp') nnoremap call VSCodeNotify('workbench.action.moveActiveEditorGroupLeft') xnoremap call VSCodeNotify('workbench.action.moveActiveEditorGroupLeft') nnoremap call VSCodeNotify('workbench.action.moveActiveEditorGroupRight') xnoremap call VSCodeNotify('workbench.action.moveActiveEditorGroupRight') nnoremap w call VSCodeNotify('workbench.action.focusNextGroup') xnoremap w call VSCodeNotify('workbench.action.focusNextGroup') nnoremap call VSCodeNotify('workbench.action.focusNextGroup') xnoremap call VSCodeNotify('workbench.action.focusNextGroup') nnoremap W call VSCodeNotify('workbench.action.focusPreviousGroup') xnoremap W call VSCodeNotify('workbench.action.focusPreviousGroup') nnoremap p call VSCodeNotify('workbench.action.focusPreviousGroup') xnoremap p call VSCodeNotify('workbench.action.focusPreviousGroup') nnoremap t call VSCodeNotify('workbench.action.focusFirstEditorGroup') xnoremap t call VSCodeNotify('workbench.action.focusFirstEditorGroup') nnoremap b call VSCodeNotify('workbench.action.focusLastEditorGroup') xnoremap b call VSCodeNotify('workbench.action.focusLastEditorGroup')