dotfiles/nvim/init.vim
foo-dogsquared d3fadf8fe1 Finalize the setup for the dotfiles
The documentation for it has been updated, wal templates are also updated, and certain scripts has been revised to be easily understood.

This may be my stop for the whole year. I'm pretty content with this one.
2020-05-01 21:32:25 +08:00

191 lines
5.4 KiB
VimL

"""""""""""
" 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')
" Nord color scheme
Plug 'arcticicestudio/nord-vim'
Plug 'gruvbox-community/gruvbox'
" 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="<tab>"
let g:UltiSnipsJumpForwardTrigger="<tab>"
let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
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
" 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 "
"""""""""""""""""""""""""
" Setting the colorscheme
colorscheme nord
" Setting number lines in the gutter.
set number relativenumber
highlight CursorLineNr ctermfg=cyan
" 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
" Set list and other listing characters (:h listchars).
set list listchars=tab:→\ ,trail
" Enabling spell checker (for your local language, anyway).
setlocal spell
set spelllang=en_us
inoremap <C-l> <c-g>u<Esc>[s1z=`]a<c-g>u
" Quick escape to default mode.
inoremap jk <Esc>
" Instant Goyo toggle.
map <leader>w :Goyo<Enter>
" Trim all trailing whitespaces.
map <leader>s :%s/\s\+$/<Enter>
" File explorer toggle.
" Turns out vim (and nvim) has a native file explorer with :Explore.
map <leader>f :Lexplore<Return>:vertical resize 40<Return><C-w><C-w>
" Changing style of words.
highlight clear SpellBad
highlight clear SpellLocal
highlight SpellLocal ctermfg=cyan
highlight clear SpellCap
highlight clear SpellRare
""""""""""
" EVENTS "
""""""""""
" Show leading spaces.
" 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=·
" 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