"{ Auto commands " Do not use smart case in command line mode, extracted from https://vi.stackexchange.com/a/16511/15292. augroup dynamic_smartcase autocmd! autocmd CmdLineEnter : set nosmartcase autocmd CmdLineLeave : set smartcase augroup END augroup term_settings autocmd! " Do not use number and relative number for terminal inside nvim autocmd TermOpen * setlocal norelativenumber nonumber " Go to insert mode by default to start typing command autocmd TermOpen * startinsert augroup END " More accurate syntax highlighting? (see `:h syn-sync`) augroup accurate_syn_highlight autocmd! autocmd BufEnter * :syntax sync fromstart augroup END " Return to last edit position when opening a file augroup resume_edit_position autocmd! autocmd BufReadPost * \ if line("'\"") > 1 && line("'\"") <= line("$") && &ft !~# 'commit' | execute "normal! g`\"zvzz" | endif augroup END " Display a message when the current file is not in utf-8 format. " Note that we need to use `unsilent` command here because of this issue: " https://github.com/vim/vim/issues/4379 augroup non_utf8_file_warn autocmd! autocmd BufRead * if &fileencoding != 'utf-8' | unsilent echomsg 'File not in UTF-8 format!' | endif augroup END " Automatically reload the file if it is changed outside of Nvim, see " https://unix.stackexchange.com/a/383044/221410. It seems that `checktime` " command does not work in command line. We need to check if we are in command " line before executing this command. See also " https://vi.stackexchange.com/a/20397/15292. augroup auto_read autocmd! autocmd FocusGained,BufEnter,CursorHold,CursorHoldI * \ if mode() == 'n' && getcmdwintype() == '' | checktime | endif autocmd FileChangedShellPost * echohl WarningMsg \ | echo "File changed on disk. Buffer reloaded!" | echohl None augroup END augroup numbertoggle autocmd! autocmd BufEnter,FocusGained,InsertLeave,WinEnter * if &nu | set rnu | endif autocmd BufLeave,FocusLost,InsertEnter,WinLeave * if &nu | set nornu | endif augroup END " highlight yanked region, see `:h lua-highlight` augroup custom_highlight autocmd! autocmd ColorScheme * highlight YankColor ctermfg=59 ctermbg=41 guifg=#34495E guibg=#2ECC71 augroup END augroup highlight_yank autocmd! au TextYankPost * silent! lua vim.highlight.on_yank{higroup="YankColor", timeout=300} augroup END " Highlight groups for cursor color augroup cursor_color autocmd! autocmd ColorScheme * highlight Cursor cterm=bold gui=bold guibg=#00c918 guifg=black autocmd ColorScheme * highlight Cursor2 guifg=red guibg=red augroup END augroup auto_close_win autocmd! autocmd BufEnter * call s:quit_current_win() augroup END " Quit Neovim if we have only one window, and its filetype match our pattern. function! s:quit_current_win() abort let quit_filetypes = ['qf', 'vista'] let buftype = getbufvar(bufnr(), '&filetype') if winnr('$') == 1 && index(quit_filetypes, buftype) != -1 quit endif endfunction "}