""""""""""" " Plugins " """"""""""" " This configuration uses vim-plug (https://github.com/junegunn/vim-plug) as " the plugin manager. " Activate it with ':PlugInstall' for the first time (and when adding new plugins). " And run ':PlugUpgrade' for upgrading the plugins. call plug#begin('~/.config/nvim/plugged') " A snippets engine. " One of the must-haves for me. Plug 'sirver/ultisnips' " Setting my private snippets in a consistent home directory and a relative snippets directory for project-specific snippets. let g:UltiSnipsSnippetDirectories = [$HOME . "/.config/nvim/own-snippets", ".snippets"] let g:UltiSnipsExpandTrigger="" let g:UltiSnipsJumpForwardTrigger="" let g:UltiSnipsJumpBackwardTrigger="" let g:UltiSnipsEditSplit="context" " A completion engine. " I chose this engine since it is linked from UltiSnips. if has('nvim') Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } else Plug 'Shougo/deoplete.nvim' Plug 'roxma/nvim-yarp' Plug 'roxma/vim-hug-neovim-rpc' endif let g:deoplete#enable_at_startup = 1 " A built-in file explorer inside of Vim. Plug 'scrooloose/nerdtree' " Contains various snippets for UltiSnips. Plug 'honza/vim-snippets' " Plugin for auto-saving for each change in the buffer (file). Plug '907th/vim-auto-save' let g:auto_save = 1 " One of the most popular plugins. " Allows to create more substantial status bars. Plug 'vim-airline/vim-airline' let g:airline_powerline_fonts = 1 if !exists('g:airline_symbols') let g:airline_symbols = {} endif " A full LaTeX toolchain plugin for Vim. " Also a must-have for me since writing LaTeX can be a PITA. " Most of the snippets and workflow is inspired from Gilles Castel's posts (at https://castel.dev/). Plug 'lervag/vimtex' let g:tex_flavor='latex' let g:vimtex_view_method='zathura' let g:vimtex_quickfix_mode=0 set conceallevel=1 let g:tex_conceal='abdmg' let g:vimtex_compiler_latexmk = { \ 'options': [ \ '-bibtex', \ '-shell-escape', \ '-verbose', \ '-file-line-error', \ ] \} " I use LuaLaTeX for my documents so let me have it as the default, please? let g:vimtex_compiler_latexmk_engines = { \ '_' : '-lualatex', \ 'pdflatex' : '-pdf', \ 'dvipdfex' : '-pdfdvi', \ 'lualatex' : '-lualatex', \ 'xelatex' : '-xelatex', \ 'context (pdftex)' : '-pdf -pdflatex=texexec', \ 'context (luatex)' : '-pdf -pdflatex=context', \ 'context (xetex)' : '-pdf -pdflatex=''texexec --xtx''', \} " Enable visuals for addition/deletion of lines in the gutter (side) similar to Visual Studio Code. Plug 'airblade/vim-gitgutter' " Plugin for distraction-free writing. Plug 'junegunn/goyo.vim' call plug#end() """"""""""""""""""""""""" " Editor configurations " """"""""""""""""""""""""" " Quick escape to default mode. inoremap jk " Editor configurations: " Setting number lines in the gutter. set number relativenumber " Setting line highlighting based on the position of the cursor. set cursorline " Set tab to enter spaces, instead. set expandtab " Set entering tab to 4 spaces. set shiftwidth=4 tabstop=4 " The template list is simply an array composed of vector that represents the " prefix and the suffix of the template file name. let template_list = [ \ ["_minted-", ""], \ ["", ".synctex"], \] " Additional LaTeX files cleanup. function VimtexAdditionalCleanup(template_list) call vimtex#compiler#clean(1) let file_name = expand("%:t:r") let file_path = expand("%:p:h") . "/" for template in a:template_list let prefix = template[0] let suffix = template[1] let full_template_path = file_path . prefix . file_name . suffix call delete(full_template_path, "rf") endfor endfunction " Initiate LaTeX file compilation at the start and auto clean up. augroup vimtex_events au! " auto-clean au User QuitPre call VimtexAdditionalCleanup(template_list) au User VimLeave call VimtexAdditionalCleanup(template_list) au User VimtexEventQuit call vimtex#compiler#clean(1) au User VimtexEventQuit call VimtexAdditionalCleanup(template_list) " Auto-compile au User VimtexEventInitPost call vimtex#compiler#compile() augroup END " Open nerd-tree at the start of each file opening. autocmd vimenter * NERDTree " Set list and other listing characters (:h listchars). set list listchars=tab:→\ ,trail:· " Instant Goyo toggle map f :Goyo \| set linebreak " Show leading spaces. " I don't know what is happening here but I'll know it... someday. " SOURCE: https://www.reddit.com/r/vim/comments/5fxsfy/show_leading_spaces/ hi Conceal guibg=NONE ctermbg=NONE ctermfg=DarkGrey autocmd BufWinEnter * setl conceallevel=1 autocmd BufWinEnter * syn match LeadingSpace /\(^ *\)\@<= / containedin=ALL conceal cchar=· autocmd BufReadPre * setl conceallevel=1 autocmd BufReadPre * syn match LeadingSpace /\(^ *\)\@<= / containedin=ALL conceal cchar=· " Enabling spell checker (for your local language, anyway). setlocal spell set spelllang=en_gb,en_us inoremap u[s1z=`]au " Changing style of words. hi clear SpellBad hi SpellBad cterm=bold,underline ctermfg=red hi clear SpellLocal hi SpellLocal cterm=bold,underline ctermfg=cyan