" XDG Specifications let rtp=&runtimepath set runtimepath=~/.config/vim let &runtimepath.=','.rtp.',~/.config/vim/after' set directory=~/.config/vim/swap//,.,~/tmp,/var/tmp,/tmp set backupdir=~/.config/vim/backup//,.,~/tmp,~/ set spellfile=~/.config/vim/spell/en.utf-8.add set viminfo+=n~/.config/vim/viminfo set viewdir=~/.config/vim/view/ set undodir=~/.config/vim/undo//,. " Basic preferences set clipboard=unnamedplus set shellcmdflag=-c set encoding=utf-8 set relativenumber filetype plugin on set shiftwidth=4 set nocompatible set cursorline set ignorecase set smartcase set expandtab set tabstop=4 set autoread set wildmenu set hlsearch set swapfile set undofile set mouse=a set showcmd set number syntax on " Global keybindings noremap <F5> :setlocal spell! spelllang=en<CR> noremap <F6> :setlocal spell! spelllang=es<CR> noremap <C-e> !!$SHELL<CR> noremap <tab> :bn<CR> noremap <C-c> :bd<CR> noremap <C-s> :w<CR> noremap <A-h> 5<C-w>< noremap <A-l> 5<C-w>> noremap H :nohl<CR> noremap <Space> za noremap N /@@@<CR> " calcurse autocmd BufNewFile,BufRead /tmp/calcurse* set filetype=markdown " groff autocmd FileType groff noremap <buffer> <silent> <F9> :!zathura --fork %:r.pdf<CR> & disown autocmd FileType groff noremap <buffer> <C-s> :w<CR> :!groffc %<CR><CR> au BufNewFile,BufRead *.ms set filetype=groff " LaTeX autocmd FileType tex noremap <buffer> <F9> :w<CR> :!latex %<CR> :!pdflatex %<CR> autocmd FileType bib noremap <buffer> <F9> :w<CR> :!bibtex %<CR> " Python autocmd FileType python noremap <buffer> <F9> :w<CR> :!python %<CR> " Folds autocmd BufWinLeave bibliography zM | mkview autocmd BufWinEnter bibliography silent loadview autocmd BufWinLeave bookmarks zM | mkview autocmd BufWinEnter bookmarks silent loadview " Wiki autocmd FileType vimwiki noremap <buffer> <C-s> :w<CR> :VimwikiAll2HTML<CR><CR> autocmd FileType vimwiki noremap <buffer> <silent> <F9> :!/bin/surf "file://$HOME/.local/share/vimwiki/html/index.html" &<CR><CR> " Open a shell on a vertical split set splitright function OpenTerminal() execute "normal \<C-l>" execute "normal \<C-l>" execute "normal \<C-l>" execute "normal \<C-l>" let bufNum = bufnr("%") let bufType = getbufvar(bufNum, "&buftype", "not found") if bufType == "terminal" execute "q" else execute "bot sp term://bash" execute "resize -8" execute "set nonu" execute "set nornu" silent au BufLeave <buffer> stopinsert! silent au BufWinEnter,WinEnter <buffer> startinsert! execute "tnoremap <buffer> <C-h> <C-\\><C-n><C-w><C-h>" execute "tnoremap <buffer> <C-t> <C-\\><C-n>:q<CR>" execute "tnoremap <buffer> <C-\\><C-\\> <C-\\><C-n>" execute "IndentLinesDisable" startinsert! endif endfunction nnoremap <C-t> :call OpenTerminal()<CR> " Custom commands command SourceVimrc :source ~/.config/vim/vimrc " Plugins if empty(glob('~/.config/vim/autoload/plug.vim')) silent !curl -fLo ~/.config/vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim autocmd VimEnter * PlugInstall --sync | source '~/.config/vim/vimrc' endif call plug#begin() Plug 'vim-airline/vim-airline-themes' Plug 'vim-scripts/AutoComplPop' Plug 'vim-airline/vim-airline' Plug 'jiangmiao/auto-pairs' Plug 'tpope/vim-commentary' Plug 'Yggdroot/indentLine' Plug 'preservim/nerdtree' Plug 'junegunn/goyo.vim' Plug 'mhinz/vim-signify' Plug 'ibhagwan/fzf-lua' Plug 'morhetz/gruvbox' Plug 'instant-markdown/vim-instant-markdown' call plug#end() " Theme let g:gruvbox_contrast_hard=1 let g:gruvbox_italic=1 set background=dark colorscheme gruvbox " AutoComplPop inoremap <expr> <Tab> pumvisible() ? "<C-y>" : "<Tab>" set completeopt=menuone,longest set complete+=kspell " Airline let g:airline#extensions#tabline#buffer_min_count = 2 let g:airline#extensions#tabline#enabled = 1 set ttimeout ttimeoutlen=0 set laststatus=2 set noshowmode " NERDTree nnoremap <C-f> :NERDTreeToggle<CR> " Goyo map gy :Goyo<CR> autocmd! User GoyoLeave highlight Normal ctermbg=NONE " IndentLine let g:indentLine_enabled = 1 let g:indentLine_char = '▏' " fzf-lua noremap <A-b> :FzfLua git_branches<CR> noremap <A-c> :FzfLua git_commits<CR> noremap <A-s> :FzfLua git_status<CR> noremap <A-f> :FzfLua files<CR> noremap gb :FzfLua git_branches<CR> noremap gs :FzfLua git_status<CR> noremap gf :FzfLua files<CR> " Signify let g:signify_disable_by_default = 1 highlight SignColumn ctermbg=NONE noremap gd :SignifyToggle<CR> " Vimwiki let g:vimwiki_list = [{'path': '~/Documents/', 'path_html': '~/.local/share/vimwiki/html/'}] " Instant Markdown let g:instant_markdown_autostart = 0 autocmd FileType markdown noremap <buffer> <silent> <F9> :InstantMarkdownPreview<CR> let g:instant_markdown_browser = "firefox --new-window" let g:instant_markdown_mathjax = 1 let g:instant_markdown_mermaid = 1