summaryrefslogtreecommitdiff
path: root/.config/nvim/init.vim
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/init.vim')
-rw-r--r--.config/nvim/init.vim182
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)