command! EV edit $MYVIMRC command! SV source $MYVIMRC function! MyHighlights() abort highlight clear VertSplit highlight clear Folded highlight clear SignColumn highlight clear FoldColumn highlight MatchParen ctermfg=NONE ctermbg=NONE cterm=underline guifg=NONE guibg=NONE gui=underline highlight StatusLine ctermfg=233 ctermbg=103 cterm=bold gui=bold highlight StatusLineNC ctermfg=0 ctermbg=NONE cterm=underline guibg=NONE gui=underline highlight DiffAdd ctermfg=2 ctermbg=NONE cterm=NONE guifg=2 guibg=NONE gui=NONE highlight DiffDelete ctermfg=1 ctermbg=NONE cterm=NONE guifg=1 guibg=NONE gui=NONE highlight DiffChange ctermfg=5 ctermbg=NONE cterm=NONE guifg=5 guibg=NONE gui=NONE highlight NonText ctermbg=NONE guibg=NONE highlight EndOfBuffer ctermbg=NONE guibg=NONE endfunction augroup MyColors autocmd! autocmd ColorScheme * call MyHighlights() augroup END colorscheme morning set hidden set number set mouse=a set wildignorecase set linebreak set ignorecase smartcase set tabstop=4 shiftwidth=4 softtabstop=4 expandtab set list set listchars=tab:\|\ ,trail:· set foldopen-=block set breakindent set inccommand=nosplit set fillchars+=vert:│ set matchpairs+=<:> set whichwrap+=[,],<,>,h,l set lazyredraw set noequalalways set foldcolumn=1 set completeopt-=preview " get rid of preview scratch buffer on set splitbelow splitright fun! RestoreCursorPosition() abort if &ft =~ 'gitcommit\|gitcommit' return endif call setpos(".", getpos("'\"")) endfun augroup Basics autocmd! autocmd FocusGained,BufEnter * silent! checktime " To trigger vim's autoread on focus gained or buffer enter autocmd FocusGained,BufEnter * silent! SignifyRefresh autocmd BufReadPost * call RestoreCursorPosition() augroup END autocmd! Filetype vim setlocal foldmethod=marker tabstop=2 softtabstop=2 shiftwidth=2 expandtab set foldtext=repeat('\ ',indent(v:foldstart)).foldtext() noremap k v:count == 0 ? "gk" : "k" noremap j v:count == 0 ? "gj" : "j" noremap 5gj noremap 5gk noremap 4 noremap 4 noremap nnoremap b :ls:b inoremap !pumvisible() ? ":set paste+:set nopaste" : "\" command! TL verbose setlocal tabstop? softtabstop? shiftwidth? expandtab? command! T2 setlocal tabstop=2 softtabstop=2 shiftwidth=2 expandtab command! T4 setlocal tabstop=4 softtabstop=4 shiftwidth=4 expandtab command! T8 setlocal tabstop=8 softtabstop=8 shiftwidth=8 expandtab command! Tb2 setlocal tabstop=2 softtabstop=2 shiftwidth=2 noexpandtab command! Tb4 setlocal tabstop=4 softtabstop=4 shiftwidth=4 noexpandtab command! Tb8 setlocal tabstop=8 softtabstop=8 shiftwidth=8 noexpandtab command! Spa setlocal paste command! Sna setlocal nopaste nnoremap Q @q map M % noremap H g^ nnoremap L g$ onoremap L g$ xnoremap L g$h xnoremap < >gv nnoremap x "_x nnoremap c "_c nnoremap C "_C nnoremap D "_D xnoremap x "_x xnoremap c "_c xnoremap C "_C xnoremap D "_D set noswapfile nnoremap ss :%s//g xnoremap ss :s//g xnoremap sr "xy:%s/=substitute(escape(@x, '/\.*$^~['), '\_s\+', '\\_s\\+', 'g')/=substitute(escape(@x, '/'), ' ', ' ', 'g')/g nnoremap hh :nohls nnoremap ww :let b:wsv=winsaveview() \:let b:old_search=@/ \:%s/\s\+$//e \:let @/=b:old_search \:silent! call winrestview(b:wsv) \:echo '+++ Trailing whitespaces purged +++' xnoremap * : \let old_reg=getreg('"')let old_regtype=getregtype('"') \gvy/=substitute(escape(@", '/\.*$^~['), '\_s\+', '\\_s\\+', 'g') \gV:call setreg('"', old_reg, old_regtype) nnoremap f :e=expand('%:h').'/' command! BD :Bdelete xnoremap Y "+y nnoremap ZX :wqa! noremap :wqa! nnoremap gh `[v`] " readline inoremap inoremap inoremap g0 inoremap g$ inoremap inoremap " behave mswin set selectmode=mouse,key set mousemodel=popup set keymodel= set selection=inclusive snoremap c " cut vnoremap "+x vnoremap "+x " copy vnoremap "+y vnoremap "+y " paste map "+gP map "+gP cmap + cmap + inoremap :set paste+:set nopaste inoremap :set paste+:set nopaste " save noremap :update vnoremap :update inoremap :updategi " undo noremap u inoremap u " redo noremap inoremap " movement inoremap gk inoremap gj inoremap inoremap inoremap g0 inoremap g$ " sidescroll nnoremap 4zl nnoremap 4zh set statusline= set statusline+=%{has('nvim')?'[':'('} " [( set statusline+=%{strlen(&ft)?&ft:'none'}, " Filetype set statusline+=%{strlen(&fenc)?&fenc:&enc}, " Encoding set statusline+=%{&fileformat} " File format (dos, unix) set statusline+=%{has('nvim')?']':')'} " ]) set statusline+=\ %f " t filename, f relative filepath, F absolute filepath set statusline+=%{&modified?'\ +':''} " Show '+' when file has been modified set statusline+=%{&readonly?'\ [RO]':''} " Show 'RO' when file is in readonly set statusline+=%{!&modifiable?'\ [noma]':''} " Show 'noma' when file is nonmodifiable set statusline+=%= " Right align set statusline+=\ %{exists('g:loaded_obsession')?ObsessionStatus():''} " Obsession status set statusline+=\ %{exists('g:loaded_fugitive')?fugitive#head(7):''} " Git branch set statusline+=\ %(%l,%c%V%) " Show line, column, virtual column (denoted with a '-' in front) set statusline+=\ %3p%%\ " Percentage of file shown set statusline+=%{has('nvim')?'[':'('} " [( set statusline+=%(%{'help'!=&filetype?bufnr('%'):''}%) " Buffer number set statusline+=%{has('nvim')?']':')'} " ]) tnoremap " vim-matchup let g:matchup_matchparen_status_offscreen = 0 " nvim-telescope nnoremap ff Telescope find_files nnoremap fg Telescope live_grep nnoremap fb lua require('telescope.builtin').buffers({ sort_mru = true, ignore_current_buffer = true }) nnoremap b lua require('telescope.builtin').buffers({ sort_mru = true, ignore_current_buffer = true }) nnoremap fh Telescope oldfiles " tmux-navigator let g:tmux_navigator_no_mappings = 1 nnoremap :TmuxNavigateLeft nnoremap :TmuxNavigateDown nnoremap :TmuxNavigateUp nnoremap :TmuxNavigateRight nnoremap :TmuxNavigatePrevious inoremap :TmuxNavigateLeft inoremap :TmuxNavigateDown inoremap :TmuxNavigateUp inoremap :TmuxNavigateRight inoremap :TmuxNavigatePrevious " nvim-lsp lua << EOF local err, nvim_lsp = pcall(require, 'lspconfig') if not(err) then return end -- Use an on_attach function to only map the following keys -- after the language server attaches to the current buffer local on_attach = function(client, bufnr) local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end -- Enable completion triggered by buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') -- Mappings. local opts = { noremap=true, silent=true } -- See :help vim.lsp.* for documentation on any of the below functions buf_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) -- buf_set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) buf_set_keymap('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) buf_set_keymap('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) buf_set_keymap('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) buf_set_keymap('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) buf_set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) buf_set_keymap('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) buf_set_keymap('n', 'e', 'lua vim.diagnostic.open_float()', opts) buf_set_keymap('n', '[d', 'lua vim.diagnostic.goto_prev()', opts) buf_set_keymap('n', ']d', 'lua vim.diagnostic.goto_next()', opts) buf_set_keymap('n', 'q', 'lua vim.diagnostic.setqflist()', opts) buf_set_keymap('n', 'fm', 'lua vim.lsp.buf.formatting()', opts) end -- Use a loop to conveniently call 'setup' on multiple servers and -- map buffer local keybindings when the language server attaches local servers = { 'gopls', 'tsserver' } for _, lsp in ipairs(servers) do nvim_lsp[lsp].setup { on_attach = on_attach, flags = { debounce_text_changes = 150, } } end EOF lua </ ragtagHtmlComplete " vim-bbye nnoremap _ :Bdelete! set clipboard+=unnamedplus vnoremap P "0p nnoremap l :let @+=join([expand('%'), line(".")], ':') " fern.vim let g:fern#disable_default_mappings = 1 let g:fern#disable_drawer_auto_quit = 1 let g:fern#disable_viewer_hide_cursor = 1 nnoremap :Fern . -drawer -width=35 -toggle= function! FernInit() abort setlocal nonumber nmap \ (fern-my-open-expand-collapse) \ fern#smart#leaf( \ "\(fern-action-open:select)", \ "\(fern-action-expand)", \ "\(fern-action-collapse)", \ ) nmap (fern-my-open-expand-collapse) nmap <2-LeftMouse> (fern-my-open-expand-collapse) nmap m (fern-action-mark:toggle)j nmap C (fern-action-mark:clear) nmap a (fern-action-new-path) nmap A (fern-action-choice) nmap d (fern-action-remove) nmap (fern-action-collapse) nmap r (fern-action-move) nmap R (fern-action-reload) nmap i (fern-action-hidden:toggle) nmap < (fern-action-leave) nmap > (fern-action-enter) nmap c (fern-action-clipboard-copy) nmap p (fern-action-clipboard-paste) endfunction augroup FernEvents autocmd! autocmd FileType fern call FernInit() augroup END nnoremap :SidewaysLeft nnoremap :SidewaysRight cnoremap