From 28ea0e3cbe1c0f980a05d6fb13a428bcab2ea1c5 Mon Sep 17 00:00:00 2001 From: Vikas Kushwaha Date: Fri, 13 Jun 2025 08:37:31 +0530 Subject: neovim updates --- .config/nvim/init.vim | 103 +++++++++++++++++++++++++++++++------------------- 1 file changed, 65 insertions(+), 38 deletions(-) (limited to '.config/nvim/init.vim') diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim index 67eb5b8..fbda0fa 100644 --- a/.config/nvim/init.vim +++ b/.config/nvim/init.vim @@ -33,13 +33,12 @@ if filereadable(config_dir . "autoload/plug.vim") endif packadd! fzf.vim -source ~/.config/nvim/user/fzf.vim +source ~/.config/nvim/plugins.conf.d/fzf.vim set rtp+=/usr/share/vim/vimfiles let g:Verdin#autocomplete = 1 let g:livepreview_previewer = 'zathura' let g:tex_flavor = 'latex' -let g:session_filename = '.session.vim' set title showmatch nowrap mouse=a scrolloff=5 set tabstop=2 shiftwidth=0 @@ -88,46 +87,74 @@ nnoremap o :LfWorkingDirectory nnoremap l :LfCurrentFileNewTab nnoremap o :LfWorkingDirectoryExistingOrNewTab + " --> Sessions -fu! SaveSess() - execute 'mksession! ' . getcwd() . '/' . g:session_filename +let g:session_filename = '.session.vim' + +function! SaveSess() + execute 'mksession! ' . getcwd() . '/' . g:session_filename endfunction -fu! RestoreSess() -if filereadable(getcwd() . '/' . g:session_filename) - execute 'so ' . getcwd() . '/' . g:session_filename - if bufexists(1) - for l in range(1, bufnr('$')) - if bufwinnr(l) == -1 - exec 'sbuffer ' . l - endif - endfor - endif -endif +function! RestoreSess() + execute 'so ' . getcwd() . '/' . g:session_filename + if bufexists(1) + for l in range(1, bufnr('$')) + if bufwinnr(l) == -1 + exec 'sbuffer ' . l + endif + endfor + endif endfunction -command! -nargs=0 Mksess :call SaveSess() -command! -nargs=0 Resess :call RestoreSess() +if argc() == 0 && filereadable(getcwd() . '/' . g:session_filename) + autocmd VimLeave * call SaveSess() + autocmd VimEnter * nested call RestoreSess() +endif + +command! -nargs=0 Mksession :call SaveSess() + " --> Template Management -function SourceTemplate() - let b:template = glob("${XDG_CONFIG_HOME:-$HOME/.config}/nvim/templates/_default." . expand('%:e')) - if !empty(b:template) - execute('0r' . b:template) +let g:templates_dir = "${XDG_CONFIG_HOME:-$HOME/.config}/nvim/templates" + +function ReadDefaultTemplate() + let b:default_template = glob(g:templates_dir . "/_default." . expand('%:e')) + if !empty(b:default_template) + execute('0r ' . b:default_template) endif endfunction -autocmd BufNewFile * call SourceTemplate() +autocmd BufNewFile * call ReadDefaultTemplate() + +function ReadTemplate(template) + execute('r ' . a:template) +endfunction + +function FzfTemplates() + call fzf#run(fzf#wrap({ + \ 'source': 'find ' . g:templates_dir . '/' . &filetype . ' -mindepth 1', + \ 'sink': function('ReadTemplate'), + \ 'options': ['--delimiter', '/templates/' . &filetype . '/', '--with-nth', '2..'], + \ })) +endfunction + +command -nargs=0 Templates call FzfTemplates() +nnoremap t :Templates + + +" --> Other commands autocmd TermOpen * startinsert -command! -nargs=* TermSplit split | terminal -command! -nargs=* TermVSplit vsplit | terminal +command! -nargs=* TermSplit split | terminal +command! -nargs=* TermVSplit vsplit | terminal + +command -nargs=* T tabnew +command Gi execute "tabnew" system('EDITOR=echo gi') -command! -nargs=* T tabnew -" --> Bindings and configs +" --> Bindings if !exists('g:lasttab') let g:lasttab = 1 @@ -194,24 +221,21 @@ autocmd FileType go inoremap ;ae err:=<++>iferr! nnoremap fl :w:!dev lint "%" nnoremap fm :w:%!dev format "%" nnoremap fM :w:%!dev minify "%" -nnoremap fc :w:!dev compile "%" -nnoremap fe :w:!dev run "%" -nnoremap ft :w:!dev test "%" -nnoremap fb :w:!dev build "%" +nnoremap fc :w:se nornu:!dev compile "%":se rnu +nnoremap fe :w:se nornu:!dev run "%":se rnu +nnoremap fa :w:se nornu:!dev test "%":se rnu +nnoremap fb :w:se nornu:!dev build "%":se rnu nnoremap fr :w:!dev clean "%" nnoremap Fl :w:TermSplit dev lint "%" nnoremap Fm :w:TermSplit dev format "%" -nnoremap Fc :w:TermSplit dev compile "%" -nnoremap Fe :w:TermSplit dev run "%" -nnoremap Ft :w:TermSplit dev test "%" +nnoremap Fc :w:se nornu:TermSplit dev compile "%" +nnoremap Fe :w:se nornu:TermSplit dev run "%" +nnoremap Fb :w:se nornu:TermSplit dev build "%" +nnoremap Fa :w:se nornu:TermSplit dev test "%" nnoremap Fr :w:TermSplit dev clean "%" -nnoremap b :w:se nornu:!dev build "%":se rnu -nnoremap B :w:se nornu:TermSplit dev build "%" -nnoremap t :w:se nornu:!dev test "%":se rnu -nnoremap T :w:se nornu:TermSplit dev test "%" - +nnoremap a :w:se nornu:!dev test "%":se rnu nnoremap w :set wrap! nnoremap fo :!opout "%:p" nnoremap :source ~/.config/nvim/init.vim @@ -220,6 +244,9 @@ nnoremap s :%s//gc nnoremap gc :TermSplit git add --all && git commit nnoremap gp :TermSplit gitpush + +" --> Update shortcuts + let shortcuts = config_dir . "shortcuts.vim" if filereadable(shortcuts) execute "source " . shortcuts -- cgit v1.2.3