local g = vim.g local opt = vim.opt g.mapleader = ' ' g.tex_flavor = 'latex' g.c_syntax_for_h = true opt.termguicolors = true opt.mouse = 'nv' opt.fileencoding = 'utf-8' opt.splitbelow = true opt.splitright = true opt.showmode = false opt.undofile = true opt.updatetime = 300 opt.backup = false opt.clipboard:prepend { 'unnamedplus' } opt.ignorecase = true opt.smartcase = true opt.sessionoptions = 'folds' opt.number = true opt.shortmess:append('I', 'W', 's') opt.iskeyword:prepend { '-' } opt.timeoutlen = 300 opt.fillchars = 'eob: ' opt.cmdheight = 1 opt.grepprg = 'rg --vimgrep --no-heading --smart-case --hidden' opt.grepformat = '%f:%l:%c:%m' vim.api.nvim_create_user_command('Cd', 'lcd %:p:h', { nargs = 0 }) local ignore_buftype = { 'quickfix', 'nofile', 'help' } local ignore_filetype = { 'gitcommit', 'gitrebase', 'svn', 'hgcommit' } local function run() if vim.tbl_contains(ignore_buftype, vim.bo.buftype) then return end if vim.tbl_contains(ignore_filetype, vim.bo.filetype) then -- reset cursor to first line vim.cmd [[normal! gg]] return end -- If a line has already been specified on the command line, we are done -- nvim file +num if vim.fn.line '.' > 1 then vim.cmd [[normal! zz]] return end local last_line = vim.fn.line [['"]] local buff_last_line = vim.fn.line '$' -- If the last line is set and the less than the last line in the buffer if last_line > 0 and last_line <= buff_last_line then local win_last_line = vim.fn.line 'w$' local win_first_line = vim.fn.line 'w0' -- Check if the last line of the buffer is the same as the win if win_last_line == buff_last_line then -- Set line to last line edited vim.cmd [[normal! g`"]] -- Try to center elseif buff_last_line - last_line > ((win_last_line - win_first_line) / 2) - 1 then vim.cmd [[normal! g`"zz]] else vim.cmd [[normal! G'"]] end end end vim.api.nvim_create_autocmd({ 'BufWinEnter', 'FileType' }, { group = vim.api.nvim_create_augroup('nvim-lastplace', {}), callback = run, }) vim.cmd("command! -nargs=+ Grep execute 'silent grep! ' | copen")