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 nocompatible set t_Co=256 set termguicolors set hidden set history=1000 set nowrap set smartindent set copyindent set autoindent set hlsearch set showmatch set wildmenu set wildmode=list:full,full set number set norelativenumber 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 set lazyredraw set timeoutlen=600 set ballooneval set balloonevalterm set scrolloff=5 set dict=/usr/share/dict/words set shortmess+=I set updatetime=100 set pastetoggle= " See :help thesaurus set thesaurus=$HOME/Documents/thesaurus/thesaurus_pkg/thesaurus.txt set pumheight=200 set completeopt=menu,menuone,popup,longest,noselect set completepopup=width:300,height:50,align:item,border:off " Colour scheme: colorscheme nord " Automatically load/save views on files. " https://vi.stackexchange.com/posts/13874/revisions augroup AutoSaveFolds autocmd! autocmd BufWinLeave,BufLeave,BufWritePost,BufHidden,QuitPre ?* nested silent! mkview! autocmd BufWinEnter ?* silent! loadview augroup end " Key mappings: nmap ,/ :nohlsearch map map map map imap imap imap imap nnoremap ,/ :nohlsearch map :tabnew " Select just-pasted text: nnoremap 0 `[v`] nnoremap 1 :set relativenumber! map m :marks map R :registers map v :vsplit map s :split map ! :only " ctrl-c to unload a buffer nnoremap :bp\|bd # function! ToggleQuickFix() if empty(filter(getwininfo(), 'v:val.quickfix')) copen else cclose endif endfunction map q :call ToggleQuickFix() " vim-ripgrep configuration: let g:rg_highlight = 1 function RequestGrep() call inputsave() let s:pattern = trim(input("grep: ")) call inputrestore() if len(s:pattern) > 0 execute 'Rg' s:pattern endif endfunction map * :call RequestGrep() map 8 :call RequestGrep() " deoplete configuration packadd! deoplete.nvim let g:deoplete#enable_at_startup = 1 call deoplete#custom#option('num_processes', 6) call deoplete#custom#option('max_list', 20) call deoplete#custom#option('auto_complete_delay', 10) call deoplete#custom#option('auto_refresh_delay', 10) " https://github.com/Shougo/deoplete.nvim/issues/965#issuecomment-482925193 " Seems to be causing autocomplete issues so removing for now. " call deoplete#custom#option('omni_patterns', { " \ 'go': '[^. *\t]\.\w*', " \}) " : completion. inoremap pumvisible() ? "\" : "\" inoremap pumvisible() ? "\" : "\" " vim-markdown configuration: let g:vim_markdown_conceal = 1 " Command-T configuration: let switchbuf="usetab" map T :CommandTFlush map r :CommandTMRU map k :CommandTHelp map c :CommandTCommand let g:CommandTFileScanner="git" let g:CommandTGitScanSubmodules=1 let g:CommandTGitIncludeUntracked=1 let g:CommandTMatchWindowAtTop=0 let g:CommandTMaxHeight=20 packadd! command-t " Lightline configuration: set laststatus=2 " vim-gitgutter configuration nnoremap hg :GitGutterLineHighlightsToggle nmap ]h (GitGutterNextHunk) nmap [h (GitGutterPrevHunk) " Vim-Rust configuration: let g:rustfmt_autosave = 1 " echodoc configuration: set cmdheight=2 let g:echodoc#enable_at_startup = 1 " ALE configuration: function SymbolSearch() call inputsave() let s:pattern = trim(input("symbol search: ")) call inputrestore() if len(s:pattern) > 0 execute 'ALESymbolSearch' s:pattern endif endfunction map ss :call SymbolSearch() nmap [L (ale_first) nmap ]L (ale_previous_wrap_error) nmap ]l (ale_next_wrap_error) nmap ad :ALEDetail map g :ALEGoToDefinition map gt :ALEGoToTypeDefinition map f :ALEFindReferences map fv :ALEFindReferences -vsplit map fh :ALEFindReferences -split map ft :ALEFindReferences -tab command GoToDefinition ALEGoToDefinition command GoToTypeDefinition ALEGoToTypeDefinition command FindReferences ALEFindReferences command Rename ALERename let g:ale_sign_column_always = 1 let g:ale_fix_on_save = 1 let g:ale_lint_on_text_changed = 1 let g:ale_lint_on_enter = 1 let g:ale_lint_on_insert_leave = 1 let g:ale_lint_on_save = 1 let g:ale_echo_cursor = 1 let g:ale_lint_delay = 100 let g:ale_set_balloons = 1 " NOTE: Needs https://github.com/dense-analysis/ale/issues/3350 let g:ale_rust_analyzer_config = { \ 'diagnostics': { 'disabled': ['unresolved-import'] }, \ 'cargo': { 'loadOutDirsFromCheck': v:true }, \ 'procMacro': { 'enable': v:true }, \ 'checkOnSave': { 'command': 'clippy', 'enable': v:true }, \ } let g:ale_go_goimports_options = '-local github.com/sensiblecodeio/cantabular' " let g:ale_command_wrapper = 'nice -n5' let g:ale_completion_enabled = 0 let g:ale_close_preview_on_insert = 1 let g:ale_hover_to_preview = 1 let g:ale_sign_column_always = 1 let g:ale_history_log_output = 1 " Currently, gopls only uses default gopls analyzers. " https://github.com/dense-analysis/ale/issues/3563 let g:ale_linters = { \ 'javascript': ['eslint'], \ 'go': ['gopls'], \ 'rust': ['analyzer'], \ 'css': ['stylelint'], \ 'python': ['pyls'], \ } let g:ale_fixers = { \ '*': ['remove_trailing_lines', 'trim_whitespace'], \ 'javascript': ['prettier'], \ 'rust': [], \ 'go': [], \ 'css': ['stylelint'], \ 'python': ['autopep8'], \ } " load internal plugins: runtime macros/matchit.vim " load ALE only after configured: packadd! ale " load other plugins: packadd! echodoc.vim packadd! lightline.vim packadd! tmux-complete.vim packadd! vim-commentary packadd! vim-gitgutter packadd! vim-go packadd! vim-surround packadd! vim-yaml-folds