let mapleader=" " let config_dir = system('echo -n "${XDG_CONFIG_HOME:-$HOME/.config}/nvim/"') " if ! filereadable(system('echo -n "${XDG_CONFIG_HOME:-$HOME/.config}/nvim/autoload/plug.vim"')) " echo "Downloading junegunn/vim-plug to manage plugins..." " silent !mkdir -p ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/autoload/ " silent !curl "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" > ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/autoload/plug.vim " autocmd VimEnter * PlugInstall " endif if filereadable(config_dir . "autoload/plug.vim") call plug#begin(system('echo -n "${XDG_DATA_HOME:-$HOME/.local/share}/nvim/plugged"')) Plug 'tpope/vim-commentary' Plug 'tpope/vim-surround' Plug 'ptzz/lf.vim' Plug 'voldikss/vim-floaterm' Plug 'xuhdev/vim-latex-live-preview', {'for': 'tex'} Plug 'ap/vim-css-color' " color code highlighting Plug 'neoclide/coc.nvim', {'on': ['CocList', 'CocConfig'], 'branch': 'release'} " Plug 'machakann/vim-verdin', {'for': 'vim'} " Plug 'fatih/vim-go', {'for': 'go'} " Plug 'puremourning/vimspector', {'for': 'python'} " Plug 'jreybert/vimagit' Plug 'vim-airline/vim-airline', {'on': 'AirlineTheme'} " Plug 'pangloss/vim-javascript' " Plug 'leafgarland/typescript-vim' " Plug 'peitalin/vim-jsx-typescript' " Plug 'styled-components/vim-styled-components', { 'branch': 'main' } " Plug 'jparise/vim-graphql' 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' set title showmatch nowrap mouse=a scrolloff=5 set tabstop=2 shiftwidth=0 set cursorline linebreak set number relativenumber set splitbelow splitright set updatetime=1000 set notermguicolors lazyredraw set listchars=tab:\┆\ "│ syntax on filetype plugin indent on 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 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 BufWritePost config.def.h !cd "%:h"; rm -f config.h; sudo make install autocmd BufWritePost config.h !cd "%:h"; sudo make install autocmd BufWritePost *Xresources silent !xrdb "%" autocmd BufRead,BufNewFile *.yt* set filetype=conf autocmd VimLeave *.tex !dev clean "%" au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g`\"" | endif " --> Scratch buffer if exists('g:loaded_scratch') finish endif let g:loaded_scratch = 1 command! -nargs=1 -complete=command D call scratch#open(, ) " --> Lf " let g:lf_command_override = 'lf -command ...' let g:NERDTreeHijackNetrw = 0 " let g:lf_replace_netrw = 1 let g:lf_width = 1.0 let g:lf_height = 1.0 let g:lf_map_keys = 0 nnoremap l :LfCurrentFile nnoremap o :LfWorkingDirectory nnoremap l :LfCurrentFileNewTab nnoremap o :LfWorkingDirectoryExistingOrNewTab " --> 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 t :Templates " --> Other commands autocmd TermOpen * startinsert command! -nargs=* TermSplit split | terminal command! -nargs=* TermVSplit vsplit | terminal command -nargs=* T tabnew command Gi execute "tabnew" system('EDITOR=echo gi') " --> Bindings if !exists('g:lasttab') let g:lasttab = 1 endif nmap g; :exe "tabn ".g:lasttab au TabLeave * let g:lasttab = tabpagenr() nnoremap g1 1gt nnoremap g2 2gt nnoremap g3 3gt nnoremap g4 4gt nnoremap g5 5gt nnoremap g6 6gt nnoremap g7 7gt nnoremap g8 8gt nnoremap g9 :tablast vnoremap "*y :let @+=@* vnoremap "*d :let @+=@* noremap "+p noremap "+P nnoremap c "cc inoremap jk " map ;n /<++>c4l inoremap ;n /<++>c4l nnoremap n /<++>c4l augroup Web autocmd! autocmd FileType html,javascript call SetWebOptions() function SetWebOptions() setlocal tabstop=2 shiftwidth=2 list nolinebreak inoremap ;s >bi<ea inoremap ;c >biea inoremap ;i b"tywi<ea>PFb"tywi<ea><++>P2F>i inoremap ;b b"tywi<ea>"tpa><++>kO inoremap ;B b"tywi<ea><++>"tpa><++>3k$i inoremap ;ap

<++>kO inoremap ;aP

F<++><++>3k$hi inoremap ;aA <++>F"i inoremap ;cl console.log("");F"i endfunction augroup END augroup Tex autocmd! autocmd FileType tex call SetTexOptions() function SetTexOptions() inoremap ;b b"tywi\begin{ea}\end{"tpa}kA inoremap ;s \section{}i inoremap ;at \begin{tikzpicture}\end{tikzpicture}O inoremap ;ap \usepackage{}i inoremap ;aP \usepackage[]{}F[a inoremap ;ab \textbf{}i inoremap ;ai \textit{}i inoremap ;au \underline{}i endfunction augroup END autocmd FileType go inoremap ;ae err:=<++>iferr!=nil{returnerr}3kI nnoremap fl :w:!dev lint "%" nnoremap fm :w:%!dev format "%" nnoremap fM :w:%!dev minify "%" 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: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 a :w:se nornu:!dev test "%":se rnu nnoremap w :set wrap! nnoremap fo :!opout "%:p" nnoremap :source ~/.config/nvim/init.vim 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 endif