diff options
Diffstat (limited to '.config/nvim/init.vim')
-rw-r--r-- | .config/nvim/init.vim | 182 |
1 files changed, 124 insertions, 58 deletions
diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim index e9772ee..fbda0fa 100644 --- a/.config/nvim/init.vim +++ b/.config/nvim/init.vim @@ -32,6 +32,10 @@ if filereadable(config_dir . "autoload/plug.vim") call plug#end() endif +packadd! 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' @@ -51,33 +55,18 @@ colorscheme vim highlight NonText ctermfg=242 highlight ColorColumn ctermbg=238 highlight! link CursorColumn ColorColumn +highlight FloatermBorder guibg=orange guifg=cyan autocmd FileType text,fstab setlocal tabstop=8 shiftwidth=8 -autocmd FileType html setlocal tabstop=2 shiftwidth=2 list nolinebreak autocmd FileType sql setlocal commentstring=--\ %s +autocmd BufWritePre * %s/\s\+$//e autocmd BufEnter bm-files,bm-dirs setlocal tabstop=8 shiftwidth=8 autocmd BufWritePost bm-files,bm-dirs silent !shortcuts -autocmd VimLeave *.tex !dev clean "%" autocmd BufWritePost config.def.h !cd "%:h"; rm -f config.h; sudo make install autocmd BufWritePost config.h !cd "%:h"; sudo make install -autocmd BufWritePre * %s/\s\+$//e -au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g`\"" | endif - -autocmd BufWritePost */Documents/Notes/*.md silent !pandoc % -o "$HOME/Documents/Notes/.out/$(basename % .md).html" -" autocmd BufWritePost */Documents/latex/resume/resume.tex !cd "%:h"; pdflatex resume.tex; cp -v resume.pdf ~/Dev/vikas.rocks/static/dox/ autocmd BufWritePost *Xresources silent !xrdb "%" autocmd BufRead,BufNewFile *.yt* set filetype=conf - -function SourceTemplate() - let b:template = glob("${XDG_CONFIG_HOME:-$HOME/.config}/nvim/templates/_default." . expand('%:e')) - if !empty(b:template) - execute('0r' . b:template) - endif -endfunction - -autocmd BufNewFile * call SourceTemplate() - -autocmd TermOpen * startinsert -command! -nargs=* T split | terminal <args> +autocmd VimLeave *.tex !dev clean "%" +au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g`\"" | endif " --> Scratch buffer if exists('g:loaded_scratch') @@ -98,6 +87,75 @@ nnoremap <Esc>o :LfWorkingDirectory<CR> nnoremap <leader>l :LfCurrentFileNewTab<CR> nnoremap <leader>o :LfWorkingDirectoryExistingOrNewTab<CR> + +" --> Sessions + +let g:session_filename = '.session.vim' + +function! SaveSess() + execute 'mksession! ' . getcwd() . '/' . g:session_filename +endfunction + +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 + +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 + +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 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 <leader>t :Templates<CR> + + +" --> Other commands + +autocmd TermOpen * startinsert +command! -nargs=* TermSplit split | terminal <args> +command! -nargs=* TermVSplit vsplit | terminal <args> + +command -nargs=* T tabnew <args> +command Gi execute "tabnew" system('EDITOR=echo gi') + + +" --> Bindings + if !exists('g:lasttab') let g:lasttab = 1 endif @@ -118,31 +176,44 @@ vnoremap <C-A-c> "*d :let @+=@*<CR> noremap <C-p> "+p noremap <C-A-p> "+P -nnoremap c "_c +nnoremap c "cc inoremap jk <Esc> " map ;n /<++><Enter>c4l inoremap ;n <Esc>/<++><Enter>c4l nnoremap <leader>n /<++><Enter>c4l -inoremap ;s ><Esc>bi<<Esc>ea -inoremap ;c ><Esc>bi</<Esc>ea -inoremap ;i <Esc>b"tywi<<Esc>ea></><Esc>PF<i -inoremap ;I <Esc>b"tywi<<Esc>ea><++></><Esc>P2F>i<Space> -inoremap ;b <Esc>b"tywi<<Esc>ea><CR></<Esc>"tpa><CR><++><Esc>kO -inoremap ;B <Esc>b"tywi<<Esc>ea><CR><++><CR></<Esc>"tpa><CR><++><Esc>3k$i<Space> -inoremap ;ap <p><CR><++><CR></p><CR><++><Esc>3k$i -inoremap ;aa <a href=""><CR><++><CR></a><CR><++><Esc>3k$hi +augroup Web + autocmd! + autocmd FileType html,javascript call SetWebOptions() + function SetWebOptions() + setlocal tabstop=2 shiftwidth=2 list nolinebreak + inoremap ;s ><Esc>bi<<Esc>ea + inoremap ;c ><Esc>bi</<Esc>ea + inoremap ;i <Esc>b"tywi<<Esc>ea></><Esc>PF<i + inoremap ;I <Esc>b"tywi<<Esc>ea><++></><Esc>P2F>i<Space> + inoremap ;b <Esc>b"tywi<<Esc>ea><CR></<Esc>"tpa><CR><++><Esc>kO + inoremap ;B <Esc>b"tywi<<Esc>ea><CR><++><CR></<Esc>"tpa><CR><++><Esc>3k$i<Space> + inoremap ;ap <p><CR></p><CR><++><Esc>kO + inoremap ;aP <p></p><Esc>F<i + inoremap ;aa <a href=""><CR><++><CR></a><CR><++><Esc>3k$hi + inoremap ;aA <a href=""><++></a><Esc>F"i + inoremap ;cl console.log("");<Esc>F"i + endfunction +augroup END augroup Tex autocmd! - autocmd FileType tex inoremap ;b <Esc>b"tywi\begin{<Esc>ea}<CR>\end{<Esc>"tpa}<Esc>kA - autocmd FileType tex inoremap ;s \section{}<Esc>i - autocmd FileType tex inoremap ;at \begin{tikzpicture}<CR>\end{tikzpicture}<Esc>O - autocmd FileType tex inoremap ;ap \usepackage{}<Esc>i - autocmd FileType tex inoremap ;aP \usepackage[]{}<Esc>F[a - autocmd FileType tex inoremap ;ab \textbf{}<Esc>i - autocmd FileType tex inoremap ;ai \textit{}<Esc>i - autocmd FileType tex inoremap ;au \underline{}<Esc>i + autocmd FileType tex call SetTexOptions() + function SetTexOptions() + inoremap ;b <Esc>b"tywi\begin{<Esc>ea}<CR>\end{<Esc>"tpa}<Esc>kA + inoremap ;s \section{}<Esc>i + inoremap ;at \begin{tikzpicture}<CR>\end{tikzpicture}<Esc>O + inoremap ;ap \usepackage{}<Esc>i + inoremap ;aP \usepackage[]{}<Esc>F[a + inoremap ;ab \textbf{}<Esc>i + inoremap ;ai \textit{}<Esc>i + inoremap ;au \underline{}<Esc>i + endfunction augroup END autocmd FileType go inoremap ;ae err<Space>:=<Space><++><CR>if<Space>err<Space>!=<Space>nil<Space>{<CR>return<Space>err<CR>}<Esc>3kI @@ -150,36 +221,31 @@ autocmd FileType go inoremap ;ae err<Space>:=<Space><++><CR>if<Space>err<Space>! nnoremap <leader>fl :w<CR>:!dev lint "%"<CR> nnoremap <leader>fm :w<CR>:%!dev format "%"<CR> nnoremap <leader>fM :w<CR>:%!dev minify "%"<CR> -nnoremap <leader>fc :w<CR>:!dev compile "%"<CR> -nnoremap <leader>fe :w<CR>:!dev run "%"<CR> -nnoremap <leader>ft :w<CR>:!dev test "%"<CR> -nnoremap <leader>fb :w<CR>:!dev build "%"<CR> +nnoremap <leader>fc :w<CR>:se nornu<CR>:!dev compile "%"<CR>:se rnu<CR> +nnoremap <leader>fe :w<CR>:se nornu<CR>:!dev run "%"<CR>:se rnu<CR> +nnoremap <leader>fa :w<CR>:se nornu<CR>:!dev test "%"<CR>:se rnu<CR> +nnoremap <leader>fb :w<CR>:se nornu<CR>:!dev build "%"<CR>:se rnu<CR> nnoremap <leader>fr :w<CR>:!dev clean "%"<CR> -nnoremap <leader>Fl :w<CR>:T dev lint "%"<CR> -nnoremap <leader>Fm :w<CR>:T dev format "%"<CR> -nnoremap <leader>Fc :w<CR>:T dev compile "%"<CR> -nnoremap <leader>Fe :w<CR>:T dev run "%"<CR> -nnoremap <leader>Ft :w<CR>:T dev test "%"<CR> -nnoremap <leader>Fr :w<CR>:T dev clean "%"<CR> - -autocmd BufEnter * nmap <leader>b :w<CR>:se nornu<CR>:!dev build "%"<CR>:se rnu<CR> -autocmd BufEnter * nmap <leader>B :w<CR>:se nornu<CR>:T dev build "%"<CR> -autocmd BufEnter * nmap <leader>t :w<CR>:se nornu<CR>:!dev test "%"<CR>:se rnu<CR> -autocmd BufEnter * nmap <leader>T :w<CR>:se nornu<CR>:T dev test "%"<CR> - -autocmd BufEnter vartak-results-data.pl nmap <leader>t :w<CR>:se nornu<CR>:!vartak-results-data.pl ~/GDrive/vartak/results/university/1S002557.pdf<CR>:se rnu<CR> +nnoremap <leader>Fl :w<CR>:TermSplit dev lint "%"<CR> +nnoremap <leader>Fm :w<CR>:TermSplit dev format "%"<CR> +nnoremap <leader>Fc :w<CR>:se nornu<CR>:TermSplit dev compile "%"<CR> +nnoremap <leader>Fe :w<CR>:se nornu<CR>:TermSplit dev run "%"<CR> +nnoremap <leader>Fb :w<CR>:se nornu<CR>:TermSplit dev build "%"<CR> +nnoremap <leader>Fa :w<CR>:se nornu<CR>:TermSplit dev test "%"<CR> +nnoremap <leader>Fr :w<CR>:TermSplit dev clean "%"<CR> +nnoremap <leader>a :w<CR>:se nornu<CR>:!dev test "%"<CR>:se rnu<CR> nnoremap <leader>w :set wrap!<CR> nnoremap <leader>fo :!opout "%:p"<CR> -nnoremap <leader>ei :tabnew ~/.config/nvim/init.vim<CR> -nnoremap <leader>eo :tabnew ~/.config/nvim/coc/coc-onload.vim<CR> -nnoremap <leader>ec :tabnew ~/.config/nvim/coc/coc-settings.json<CR> -nnoremap <leader>ed :tabnew ~/.config/nvim/dev.vim<CR> nnoremap <leader><C-r> :source ~/.config/nvim/init.vim<CR> nnoremap <leader>s :%s//gc<Left><Left><Left> -nnoremap <leader>gc :T git add --all && git commit<CR> +nnoremap <leader>gc :TermSplit git add --all && git commit<CR> +nnoremap <leader>gp :TermSplit gitpush<CR> + + +" --> Update shortcuts let shortcuts = config_dir . "shortcuts.vim" if filereadable(shortcuts) |