let mapleader=" " set mouse= syntax on set noerrorbells set number set relativenumber set incsearch set ignorecase set ruler set noswapfile set splitright set splitbelow set tabstop=4 softtabstop=4 set shiftwidth=4 set expandtab set smartindent set noswapfile set nobackup set undodir=~/.vim/undodir set undofile set nohlsearch call plug#begin('~/.config/nvim/autoload/plugged') Plug 'scrooloose/nerdcommenter' Plug 'preservim/nerdtree' Plug 'morhetz/gruvbox' " themes Plug 'sonph/onehalf' " Plug 'ThePrimeagen/vim-be-good', {'do': './install.sh'} " vim training game " Fuzzy file search Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } " fuzzy file finder Plug 'junegunn/fzf.vim' Plug 'airblade/vim-rooter' " addon for fzf, for git projects " Plug 'ycm-core/YouCompleteMe' " YEET! Plug 'neoclide/coc.nvim', {'branch': 'release'} " Python syntax highlight Plug 'numirias/semshi', {'do': ':UpdateRemotePlugins'} " Coc Snippets Plug 'sirver/ultisnips' Plug 'honza/vim-snippets' " Show git modifications to file Plug 'vim-scripts/vim-gitgutter' Plug 'jremmen/vim-ripgrep' " Rg uses word under cursor " run current file Plug 'sbdchd/vim-run' " HTTP Plug 'nicwest/vim-http' call plug#end() " disable spacebar (don't move forward) nnoremap " quickly move through panes nnoremap nnoremap nnoremap nnoremap " resize panes nnoremap + :vertical resize +5 nnoremap - :vertical resize -5 nnoremap ff :GFiles vnoremap p "_dP " noremap gf :GitFiles colorscheme gruvbox "colorscheme onehalfdark let g:airline_theme='onehalfdark' set background=dark :set inccommand=nosplit " highlight substitude " run current file plugin let g:run_cmd_python = ['python3'] let g:run_split = 'right' "fun! SetupYCM() "nnoremap gd :YcmCompleter GoTo "nnoremap gr :YcmCompleter GoToReferences "nnoremap rr :YcmCompleter RefactorRename "let g:UltiSnipsExpandTrigger="" "endfun " CoC function! s:check_back_space() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~# '\s' endfunction fun! SetupCoC() inoremap \ pumvisible() ? "\" : \ check_back_space() ? "\" : \ coc#refresh() inoremap pumvisible() ? "\" : "\" inoremap coc#refresh() nmap gd (coc-definition) nmap gr (coc-references) nmap gy (coc-type-definition) nmap gi (coc-implementation) nmap rn (coc-rename) endfun let g:coc_global_extensions = [ \ 'coc-snippets', \ 'coc-pairs', \ 'coc-prettier', \ 'coc-json', \ 'coc-python', \ 'coc-html', \ 'coc-css', \ 'coc-xml', \ 'coc-yaml', \ ] autocmd BufNewFile,BufRead *.pde set syntax=java autocmd BufNewFile,BufRead *.pde set filetype=java autocmd BufNewFile,BufRead *.ino set syntax=arduino autocmd BufNewFile,BufRead *.ino set filetype=arduino " autocmd FileType java,typescript,go :call SetupYCM() " autocmd FileType cpp,h,c :call SetupCoC() " run python script " autocmd BufNewFile,BufRead *.py nnoremap :vs :term python % nnoremap rr :Run call SetupCoC() " CoC snippet tab completion inoremap \ pumvisible() ? coc#_select_confirm() : \ coc#expandableOrJumpable() ? "\=coc#rpc#request('doKeymap', ['snippets-expand-jump',''])\" : \ check_back_space() ? "\" : \ coc#refresh() function! s:check_back_space() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~# '\s' endfunction let g:coc_snippet_next = '' "let g:UltiSnipsExpandTrigger="" "let g:UltiSnipsJumpForwardTrigger=">" "let g:UltiSnipsJumpBackwardTrigger="" " Shebang line function! Hashbang(portable, permission, RemExt) let shells = { \ 'awk': "awk", \ 'sh': "bash", \ 'hs': "runhaskell", \ 'jl': "julia", \ 'lua': "lua", \ 'mak': "make", \ 'js': "node", \ 'm': "octave", \ 'pl': "perl", \ 'php': "php", \ 'py': "python", \ 'r': "Rscript", \ 'rb': "ruby", \ 'scala': "scala", \ 'tcl': "tclsh", \ 'tk': "wish" \ } let extension = expand("%:e") if has_key(shells,extension) let fileshell = shells[extension] if a:portable let line = "#! /usr/bin/env " . fileshell else let line = "#! " . system("which " . fileshell) endif 0put = line if a:permission :autocmd BufWritePost * :autocmd VimLeave * :!chmod u+x % endif if a:RemExt :autocmd BufWritePost * :autocmd VimLeave * :!mv % "%:p:r" endif endif endfunction :autocmd BufNewFile *.* :call Hashbang(1,1,0) " HTTP let g:vim_http_split_vertically = 1