" " General config " ______________________________ set nocompatible filetype plugin indent on set encoding=utf-8 set hidden set ttyfast set updatetime=300 set timeout timeoutlen=1000 ttimeoutlen=50 set undolevels=500 set history=500 set shortmess+=c " set signcolumn=yes set nowrap set nu rnu " hybrid line numbers set clipboard=unnamedplus "use p to paste clipboard " indentation set backspace=indent,eol,start set incsearch ignorecase smartcase hlsearch set autoindent tabstop=2 softtabstop=2 shiftwidth=2 expandtab set emoji " no backups set nocursorcolumn set nocursorline set scrolljump=5 set lazyredraw set synmaxcol=180 set nobackup set nowritebackup set noswapfile set viminfo='20,\"100 "max 100 lines in registers set cmdheight=2 set novisualbell " " Keybindings " ______________________________ " split navigation nnoremap nnoremap nnoremap nnoremap " leader key let mapleader = " " " hard mode map map map map " quick-quit :ca Q q :ca Q! q! " quick help :ca htab :tab h " coc inoremap \ pumvisible() ? "\" : \ check_back_space() ? "\" : \ coc#refresh() inoremap pumvisible() ? "\" : "\" function! s:check_back_space() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~# '\s' endfunction " use @ instead of space inoremap coc#refresh() if has('patch8.1.1068') inoremap complete_info()["selected"] != "-1" ? "\" : "\u\" else imap pumvisible() ? "\" : "\u\" endif nmap [g (coc-diagnostic-prev) nmap ]g (coc-diagnostic-next) nmap gd (coc-definition) nmap gy (coc-type-definition) nmap gi (coc-implementation) nmap gr (coc-references) nnoremap K :call show_documentation() function! s:show_documentation() if (index(['vim','help'], &filetype) >= 0) execute 'h '.expand('') else call CocAction('doHover') endif endfunction autocmd CursorHold * silent call CocActionAsync('highlight') "nmap rn (coc-rename) "xmap f (coc-format-selected) "nmap f (coc-format-selected) augroup mygroup autocmd! autocmd FileType typescript, json setl formatexpr=CocAction('formatSelected') autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') augroup end "xmap a (coc-codeaction-selected) "nmap a (coc-codeaction-selected) "nmap ac (coc-codeaction) "nmap qf (coc-fix-current) "xmap if (coc-funcobj-i) "xmap af (coc-funcobj-a) "omap if (coc-funcobj-i) "omap af (coc-funcobj-a) "nmap (coc-range-select) "xmap (coc-range-select) command! -nargs=0 Format :call CocAction('format') command! -nargs=? Fold :call CocAction('fold', ) command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport') set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} "nnoremap a :CocList diagnostics "nnoremap e :CocList extensions "nnoremap c :CocList commands "nnoremap o :CocList outline "nnoremap s :CocList -I symbols "nnoremap j :CocNext "nnoremap k :CocPrev "nnoremap p :CocListResume let g:coc_global_extensions = [ \'coc-css', \'coc-eslint', \'coc-html', \'coc-json', \'coc-prettier', \'coc-svelte', \'coc-tsserver', \'coc-emmet' \] command! -nargs=0 Prettier :CocCommand prettier.formatFile " " Plugins " ______________________________ call plug#begin() Plug 'neoclide/coc.nvim', {'branch': 'release'} Plug 'scrooloose/nerdtree' Plug 'yuezk/vim-js' Plug 'maxmellon/vim-jsx-pretty' Plug 'ryanoasis/vim-devicons' Plug 'junegunn/fzf', { 'do': './install --bin' } Plug 'junegunn/fzf.vim' Plug 'leafgarland/typescript-vim' Plug 'peitalin/vim-jsx-typescript' Plug 'supercollider/scvim' Plug 'tidalcycles/vim-tidal' Plug 'preservim/nerdcommenter' call plug#end() " NERDTree let g:NERDTreeShowHidden = 1 let g:NERDTreeMinimalUI = 1 let g:NERDTreeIgnore = [] let g:NERDTreeStatusline = '' " NERDCommenter let g:NERDSpaceDelims = 1 let g:NERDCompactSexyComs = 1 let NERDAltDelims_haskell = 1 let g:NERDCustomDelimiters = { 'tidal': { 'left': '{-','right': '-}' } } let g:NERDCustomDelimiters = { 'tidal': { 'left': '--','right': '' } } let g:NERDCommentEmptyLines = 1 " FZF - use silversearcher-ag to respect .gitignore let $FZF_DEFAULT_COMMAND = 'ag -g ""' let g:ag_working_path_mode="r" let g:vim_jsx_pretty_colorful_config = 1 " FZF ignore set wildignore+=*/node_modules/*,*/tmp/*,*.so,*.swp,*.zip " SuperCollider au BufEnter,BufWinEnter,BufNewFile,BufRead *.sc,*.scd set filetype=supercollider au Filetype supercollider packadd scvim " tidalvim let g:tidal_flash_duration = 50 " plugin keybindings nnoremap :NERDTreeToggle nnoremap :FZF let g:fzf_action = { \ 'ctrl-t': 'tab split', \ 'ctrl-s': 'split', \ 'ctrl-v': 'vsplit' \} " " Theme " ______________________________ colorscheme darkness