diff --git a/vimrc b/vimrc deleted file mode 100644 index 36456e5..0000000 --- a/vimrc +++ /dev/null @@ -1,390 +0,0 @@ -set background=dark -syntax on -filetype plugin indent on - -let mapleader=',' - -" netrw -let g:netrw_banner = 0 -let g:netrw_liststyle = 1 -let g:netrw_list_hide = '^\.' -let g:netrw_winsize=25 -map n :Lexplore - -" fix helptags for opt/ plugins -" https://vi.stackexchange.com/questions/17210/generating-help-tags-for-packages-that-are-loaded-by-vim-8s-package-management -command! -nargs=0 -bar Helptags - \ for p in glob('~/.vim/pack/git-plugins/opt/*', 1, 1) - \| exe 'packadd ' . fnamemodify(p, ':t') - \| endfor - \| helptags ALL - -set shiftwidth=2 -set shiftround -set tabstop=2 -set expandtab -set smarttab -set splitbelow -set splitright -set encoding=utf-8 -set hidden -set nowrap -set smartindent -set copyindent -set autoindent -set hlsearch -set showmatch -set wildmenu -set wildmode=list:full,full -set number -set relativenumber -set ruler -set backspace=indent,eol,start -set ignorecase -set smartcase -set incsearch -set history=1000 -set undolevels=1000 -set title -set novisualbell -set noerrorbells -set nobackup -set noswapfile -set ttymouse=sgr -set mouse=a -set mousemodel=popup_setpos -" https://github.com/tpope/vim-sensible/issues/78: -set lazyredraw -set timeoutlen=1000 -set ballooneval -set balloonevalterm -set scrolloff=15 -set dictionary=/usr/share/dict/words -" See :help thesaurus -set thesaurus=$HOME/Documents/thesaurus/thesaurus_pkg/thesaurus.txt -set shortmess+=I -set updatetime=250 -set pastetoggle= -set pumheight=200 -set completeopt=menu,menuone,popup,noselect -set completepopup=width:300,height:50,align:item,border:off -set complete-=i -set nrformats-=octal -set ttimeout -set ttimeoutlen=100 -set formatoptions+=j -set autoread -" https://github.com/tpope/vim-sensible/issues/142: -set synmaxcol=500 - -" Enable 24-bit colours. -" https://github.com/alacritty/alacritty/issues/109#issuecomment-440353106 -if exists('+termguicolors') - let &t_8f="\[38;2;%lu;%lu;%lum" - let &t_8b="\[48;2;%lu;%lu;%lum" - set termguicolors -endif - -" Colour scheme: -packadd! nord-vim " https://github.com/arcticicestudio/nord-vim.git -colorscheme nord - -augroup vimrc - autocmd! - " Automatically load/save views on files. - " https://vi.stackexchange.com/posts/13874/revisions - autocmd BufWinLeave,BufLeave,BufWritePost,BufHidden,QuitPre ?* nested silent! mkview! - autocmd BufWinEnter ?* silent! loadview - " set cursor line highlight in insert mode. - autocmd InsertEnter * set cul - autocmd InsertLeavePre * set nocul - " use tabs in .gitconfig - autocmd BufEnter .gitconfig setlocal shiftwidth=2 tabstop=2 noexpandtab - " Quickfix window is always full-width. - " https://github.com/fatih/vim-go/issues/1757#issuecomment-565130503 - autocmd FileType qf if (getwininfo(win_getid())[0].loclist != 1) | wincmd J | endif -augroup end - -" Don't remember the current directory for a given file: -set viewoptions-=curdir -set viewoptions-=options -set sessionoptions-=options - -" Key mappings: -nnoremap j gj -nnoremap k gk -map -map -map -map -imap -imap -imap -imap -nmap ]q :cn -nmap [q :cp - -nnoremap w :w -nnoremap / :nohlsearch -nnoremap :nohlsearch -" Select just-pasted text: -nnoremap 0 `[v`] -" Select just-pasted text and re-indent: -nnoremap ) `[v`]= -nnoremap 1 :set relativenumber! -nnoremap ! :windo set norelativenumber -nnoremap m :marks -nnoremap v :vsplit -nnoremap s :split -nnoremap rp "_ddP - -" Git mappings -" -" Copy Git permalink to clipboard for either current line or range -function! CopyGitURLToLineOrRange() range - if a:firstline == a:lastline - execute ".GBrowse!" - else - execute a:firstline . "," . a:lastline . "GBrowse!" - endif -endfunction - -function! OpenGitURLToLineOrRange() range - if a:firstline == a:lastline - execute ".GBrowse" - else - execute a:firstline . "," . a:lastline . "GBrowse" - endif -endfunction - -nnoremap ab :Git blame -nnoremap as :Gstatus -nnoremap ac :Commits -nnoremap ah :GitGutterLineHighlightsToggle -nnoremap aY :call CopyGitURLToLineOrRange() -vnoremap aY :call CopyGitURLToLineOrRange() -nnoremap ao :call OpenGitURLToLineOrRange() -nnoremap ap :execute 'silent !ghpr ' \| redraw! - -" echo filename of current buffer: -nmap fe :echom expand("%:p") -" yank filename of current buffer: -function! CopyToDefaultRegister() - let @" = expand("%:p") - echom expand("%:p") -endfunction -nmap fy :call CopyToDefaultRegister() -" and into + register: -function! CopyToSystemClipboard() - let @* = expand("%:p") - let @+ = expand("%:p") - echom expand("%:p") -endfunction -nmap fY :call CopyToSystemClipboard() - -" ctrl-v to paste from system clipboard in insert mode: -inoremap "*Pa - -" disable Ex mode -nnoremap Q - -function! ToggleQuickFix() - if empty(filter(getwininfo(), 'v:val.quickfix')) - copen - else - cclose - endif -endfunction -nmap q :call ToggleQuickFix() -nmap l :lclose - -packadd! async.vim " https://github.com/prabirshrestha/async.vim.git -packadd! asyncomplete.vim " https://github.com/prabirshrestha/asyncomplete.vim.git -packadd! asyncomplete-lsp.vim " https://github.com/prabirshrestha/asyncomplete-lsp.vim.git - -inoremap pumvisible() ? "\" : "\" -inoremap pumvisible() ? "\" : "\" -inoremap pumvisible() ? asyncomplete#close_popup() . "\" : "\" - -" vim-markdown configuration: -let g:vim_markdown_conceal = 1 - -" fzf configuration: -let g:fzf_action = { - \ 'ctrl-t': 'tab split', - \ 'ctrl-s': 'split', - \ 'ctrl-v': 'vsplit' } -nmap t :Files -nmap T :GFiles -nmap b :Buffers -nmap gg :Rg - -" Lightline configuration: -packadd! lightline.vim " https://github.com/itchyny/lightline.vim.git -set laststatus=2 - -function! LightlineLSPErrorText() - let l:info = lsp#get_buffer_diagnostics_counts() - if info.error == 0 - return '' - endif - let sign = get(g:lsp_diagnostics_signs_error, 'text', 'E') - return info.error . sign -endfunction - -function! LightlineLSPWarningText() - let l:info = lsp#get_buffer_diagnostics_counts() - if info.warning == 0 - return '' - endif - let sign = get(g:lsp_diagnostics_signs_warning, 'text', 'W') - return info.warning . sign -endfunction - -let g:lightline = { - \ 'colorscheme': 'seoul256', - \ 'active': { - \ 'left': [ [ 'mode', 'paste' ], - \ [ 'readonly', 'filename', 'modified' ], - \ [ 'gitbranch' ], ['lsperror', 'lspwarn'] ], - \ 'right': [ ['lineinfo'], ['percent'], ['filetype'], ['gobuild'] ], - \ }, - \ 'component_function': { - \ 'gobuild': 'go#statusline#Show', - \ 'gitbranch': 'FugitiveStatusline', - \ }, - \ 'component_expand': { - \ 'lsperror': 'LightlineLSPErrorText', - \ 'lspwarn': 'LightlineLSPWarningText', - \ }, - \ 'component_type': { - \ 'lsperror': 'error', - \ 'lspwarn': 'warning', - \ }, - \ 'mode_map': { - \ 'n' : 'N', - \ 'i' : 'I', - \ 'R' : 'R', - \ 'v' : 'V', - \ 'V' : 'V-LINE', - \ "\": 'V-BLOCK', - \ 'c' : 'C', - \ 's' : 'S', - \ 'S' : 'S-LINE', - \ "\": 'S-BLOCK', - \ 't': 'TERM', - \ }, -\ } - -" vim-gitgutter configuration -packadd! vim-gitgutter " https://github.com/airblade/vim-gitgutter.git -set signcolumn=yes -nmap ]h (GitGutterNextHunk) -nmap [h (GitGutterPrevHunk) -omap ih (GitGutterTextObjectInnerPending) -omap ah (GitGutterTextObjectOuterPending) -xmap ih (GitGutterTextObjectInnerVisual) -xmap ah (GitGutterTextObjectOuterVisual) - -" vim-fugitive -packadd! vim-fugitive " https://github.com/tpope/vim-fugitive.git - -" vim-go -" Doesn't work in after/ftplugin/go.vim: -let g:go_def_mapping_enabled = 0 -packadd! vim-go " https://github.com/fatih/vim-go.git - -" LSP configuration: -packadd! vim-lsp " https://github.com/prabirshrestha/vim-lsp.git -packadd! vim-lsp-settings " https://github.com/mattn/vim-lsp-settings.git - -let g:lsp_settings = { - \ 'gopls': { - \ 'initialization_options': { - \ 'ui.diagnostic.analyses': { - \ 'composites': v:false, - \ 'unusedparams': v:true, - \ 'unusedresult': v:true, - \ 'shadow': v:true, - \ 'nilness': v:true, - \ 'unusedwrite': v:true, - \ }, - \ 'staticcheck': v:true, - \ 'hoverKind': 'FullDocumentation', - \ 'linksInHover': v:false, - \ 'experimentalWorkspaceModule': v:false, - \ }}} -let g:lsp_diagnostics_float_cursor = 1 -let g:lsp_diagnostics_float_delay = 175 -let g:lsp_diagnostics_highlight_delay = 175 -let g:lsp_diagnostics_signs_delay = 175 -let g:lsp_diagnostics_signs_priority = 100 -let g:lsp_diagnostics_code_action_signs_delay = 175 -let g:lsp_document_highlight_delay = 500 -let g:lsp_async_completion = 1 - -function! s:on_lsp_buffer_enabled() abort - setlocal omnifunc=lsp#complete - " number may be clobbered by vim-fugitive? - setlocal number - setlocal signcolumn=yes - - " Jump to definitions - nmap gd (lsp-definition) - nmap gvd :vertical :LspDefinition - nmap gsd :belowright :LspDefinition - nmap gD (lsp-type-definition) - nmap gvD :vertical :LspTypeDefinition - nmap gsD :belowright :LspTypeDefinition - " Map to leader keys too, easy typo: - nmap gd (lsp-definition) - nmap gD (lsp-type-definition) - - " Peek definitions, only on leader keys - nmap pd (lsp-peek-definition) - nmap pD (lsp-peek-type-definition) - - " Navigation - nmap ]e (lsp-next-error) - nmap [e (lsp-previous-error) - nmap ]d (lsp-next-diagnostic) - nmap [d (lsp-previous-diagnostic) - nmap ]r (lsp-next-reference) - nmap [r (lsp-previous-reference) - - " Misc actions - nmap ci (lsp-call-hierarchy-incoming) - nmap co (lsp-call-hierarchy-outgoing) - nmap ca (lsp-code-action) - nmap i (lsp-implementation) - nmap r (lsp-references) - nmap d (lsp-hover) - nmap o :silent LspCodeAction source.organizeImports - - nmap e (lsp-rename) -endfunction - -augroup lsp_install - au! - autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled() - autocmd User lsp_diagnostics_updated call lightline#update() - " autocmd BufWritePre *.go silent LspDocumentFormatSync - " autocmd CursorHold silent LspHover -augroup END - -" load internal plugins: -runtime macros/matchit.vim - -" load other plugins: -packadd! rust.vim " https://github.com/rust-lang/rust.vim.git -packadd! tmux-complete.vim " https://github.com/wellle/tmux-complete.vim.git -packadd! vim-commentary " https://github.com/tpope/vim-commentary.git - -" Requires both fzf.vim plugin to be manually installed: -" https://github.com/junegunn/fzf/blob/master/plugin/fzf.vim -" and also this separate plugin, which is loaded here: -packadd! fzf.vim " https://github.com/junegunn/fzf.vim.git -packadd! vim-surround " https://github.com/tpope/vim-surround.git -packadd! vim-rhubarb " https://github.com/tpope/vim-rhubarb.git -packadd! editorconfig-vim " https://github.com/editorconfig/editorconfig-vim.git -packadd! vim-wordmotion " https://github.com/chaoren/vim-wordmotion.git