Created
January 2, 2024 20:46
-
-
Save ixahmedxi/ea1753287ef0fe06f801a20b73e4f39f to your computer and use it in GitHub Desktop.
vscode neovim init.vim
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
" packadd quickscope | |
" execute 'luafile ' . stdpath('config') . '/lua/settings.lua' | |
function! s:manageEditorSize(...) | |
let count = a:1 | |
let to = a:2 | |
for i in range(1, count ? count : 1) | |
call VSCodeNotify(to == 'increase' ? 'workbench.action.increaseViewSize' : 'workbench.action.decreaseViewSize') | |
endfor | |
endfunction | |
function! s:vscodeCommentary(...) abort | |
if !a:0 | |
let &operatorfunc = matchstr(expand('<sfile>'), '[^. ]*$') | |
return 'g@' | |
elseif a:0 > 1 | |
let [line1, line2] = [a:1, a:2] | |
else | |
let [line1, line2] = [line("'["), line("']")] | |
endif | |
call VSCodeCallRange("editor.action.commentLine", line1, line2, 0) | |
endfunction | |
function! s:openVSCodeCommandsInVisualMode() | |
normal! gv | |
let visualmode = visualmode() | |
if visualmode == "V" | |
let startLine = line("v") | |
let endLine = line(".") | |
call VSCodeNotifyRange("workbench.action.showCommands", startLine, endLine, 1) | |
else | |
let startPos = getpos("v") | |
let endPos = getpos(".") | |
call VSCodeNotifyRangePos("workbench.action.showCommands", startPos[1], endPos[1], startPos[2], endPos[2], 1) | |
endif | |
endfunction | |
function! s:openWhichKeyInVisualMode() | |
normal! gv | |
let visualmode = visualmode() | |
if visualmode == "V" | |
let startLine = line("v") | |
let endLine = line(".") | |
call VSCodeNotifyRange("whichkey.show", startLine, endLine, 1) | |
else | |
let startPos = getpos("v") | |
let endPos = getpos(".") | |
call VSCodeNotifyRangePos("whichkey.show", startPos[1], endPos[1], startPos[2], endPos[2], 1) | |
endif | |
endfunction | |
" Better Navigation | |
nnoremap <silent> <C-j> :call VSCodeNotify('workbench.action.navigateDown')<CR> | |
xnoremap <silent> <C-j> :call VSCodeNotify('workbench.action.navigateDown')<CR> | |
nnoremap <silent> <C-k> :call VSCodeNotify('workbench.action.navigateUp')<CR> | |
xnoremap <silent> <C-k> :call VSCodeNotify('workbench.action.navigateUp')<CR> | |
nnoremap <silent> <C-h> :call VSCodeNotify('workbench.action.navigateLeft')<CR> | |
xnoremap <silent> <C-h> :call VSCodeNotify('workbench.action.navigateLeft')<CR> | |
nnoremap <silent> <C-l> :call VSCodeNotify('workbench.action.navigateRight')<CR> | |
xnoremap <silent> <C-l> :call VSCodeNotify('workbench.action.navigateRight')<CR> | |
nnoremap gr <Cmd>call VSCodeNotify('editor.action.goToReferences')<CR> | |
" Bind C-/ to vscode commentary since calling from vscode produces double comments due to multiple cursors | |
xnoremap <expr> <C-/> <SID>vscodeCommentary() | |
nnoremap <expr> <C-/> <SID>vscodeCommentary() . '_' | |
nnoremap <silent> <C-w>_ :<C-u>call VSCodeNotify('workbench.action.toggleEditorWidths')<CR> | |
nnoremap <silent> <Space> :call VSCodeNotify('whichkey.show')<CR> | |
xnoremap <silent> <Space> :<C-u>call <SID>openWhichKeyInVisualMode()<CR> | |
xnoremap <silent> <C-P> :<C-u>call <SID>openVSCodeCommandsInVisualMode()<CR> | |
xmap gc <Plug>VSCodeCommentary | |
nmap gc <Plug>VSCodeCommentary | |
omap gc <Plug>VSCodeCommentary | |
nmap gcc <Plug>VSCodeCommentaryLine | |
" Simulate same TAB behavior in VSCode | |
nmap <Tab> :Tabnext<CR> | |
nmap <S-Tab> :Tabprev<CR> | |
set clipboard=unnamedplus |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment