From b7741c48b8f3d805a47042db92a2b24e306595f2 Mon Sep 17 00:00:00 2001 From: dahrub Date: Wed, 21 Dec 2022 08:53:01 +0000 Subject: [PATCH] Add '.vimrc' --- .vimrc | 222 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 222 insertions(+) create mode 100644 .vimrc diff --git a/.vimrc b/.vimrc new file mode 100644 index 0000000..a0ea83c --- /dev/null +++ b/.vimrc @@ -0,0 +1,222 @@ +set cursorline +set wildmenu +set incsearch +set hlsearch +set nu rnu +set tabstop=4 +set softtabstop=4 +set shiftwidth=4 +set autoindent +set textwidth=80 +set noshowmode +set expandtab +syntax on +set nocompatible +let mapleader=" " +filetype off + +set path+=/usr/include/nodejs/src/ + +if isdirectory('/usr/local/lib/node_modules/node-addon-api') + set path+=/usr/local/lib/node_modules/node-addon-api +endif +if isdirectory('~/.cache/node-gyp/17.0.1/include/node') + set path+=~/.cache/node-gyp/17.0.1/include/node +endif + +set rtp+=~/.vim/bundle/Vundle.vim +call vundle#begin() + +Plugin 'VundleVim/Vundle.vim' +Plugin 'preservim/nerdtree' +Plugin 'joshdick/onedark.vim' +Plugin 'w0rp/ale' +Plugin 'neoclide/coc.nvim' +Plugin 'tiagofumo/vim-nerdtree-syntax-highlight' +Plugin 'ryanoasis/vim-devicons' +Plugin 'airblade/vim-gitgutter' +Plugin 'ctrlpvim/ctrlp.vim' +Plugin 'preservim/nerdcommenter' +Plugin 'HerringtonDarkholme/yats.vim' +Plugin 'mhinz/vim-startify' +Plugin 'Valloric/YouCompleteMe' +Plugin 'sbdchd/neoformat' +Plugin 'Raimondi/delimitMate' +Plugin 'itchyny/lightline.vim' +Plugin 'github/copilot.vim' +" Plugin 'vim-syntastic/syntastic' + +call vundle#end() + +filetype plugin indent on + +" Opens NERDTree when a directory is opened +autocmd StdinReadPre * let s:std_in=1 +autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe 'NERDTree' argv()[0] | wincmd p | ene | exe 'cd '.argv()[0] | endif + +" Exit NERDTree if all files have closed +autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif + +" Check if NERDTree is open or active +function! IsNERDTreeOpen() + return exists("t:NERDTreeBufName") && (bufwinnr(t:NERDTreeBufName) != -1) +endfunction + +" Call NERDTreeFind if NERDTree is active, current window contains a modifiable +" file and we're not in vimdiff +function! SyncTree() + if &modifiable && IsNERDTreeOpen() && strlen(expand('%')) > 0 && !&diff + NERDTreeFind + wincmd p + endif +endfunction + +let g:coc_global_extensions = [ + \ 'coc-snippets', + \ 'coc-pairs', + \ 'coc-tsserver', + \ 'coc-eslint', + \ 'coc-prettier', + \ 'coc-json', + \ ] + +set hidden +set updatetime=300 +set signcolumn=yes + +let g:NERDTreeGitStatusWithFlags = 1 +let g:NERDTreeIgnore = ['^node_modules$'] +" Create default mappings +let g:NERDCreateDefaultMappings = 1 + +" Add spaces after comment delimiters by default +let g:NERDSpaceDelims = 1 + +" Use compact syntax for prettified multi-line comments +let g:NERDCompactSexyComs = 1 + +" Align line-wise comment delimiters flush left instead of following code indentation +let g:NERDDefaultAlign = 'left' + +" Set a language to use its alternate delimiters by default +let g:NERDAltDelims_java = 1 + +" Add your own custom formats or override the defaults +let g:NERDCustomDelimiters = { 'c': { 'left': '/**','right': '*/' } } + +" Allow commenting and inverting empty lines (useful when commenting a region) +let g:NERDCommentEmptyLines = 1 + +" Enable trimming of trailing whitespace when uncommenting +let g:NERDTrimTrailingWhitespace = 1 + +" Enable NERDCommenterToggle to check all selected lines is commented or not +let g:NERDToggleCheckAllLines = 1 + +command! -nargs=0 Prettier :CocCommand prettier.formatFile +let g:ctrlp_user_command = ['.git/', 'git --git-dir=%s/.git ls-files -oc --exclude-standard'] + +function! s:check_back_space() abort + let col = col('.') - 1 + return !col || getline('.')[col - 1] =~# '\s' +endfunction + +function! s:show_documentation() + if (index(['vim', 'help'], &filetype) >= 0) + execute 'h '.expand('') + else + call CocAction('doHover') + endif +endfunction + +" Autoformat with clang-format +function! FormatOnSave() + let l:formatdiff = 1 + pyf ~/.local/bin/clang-format.py +endfunction +autocmd BufWritePre *.h,*.cc,*.cpp,*.c call FormatOnSave() + +autocmd CursorHold * silent call CocActionAsync('highlight') +autocmd BufWritePre,InsertLeave *.js Neoformat +augroup mygroup + autocmd! + autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') + autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') +augroup end + +au BufNewFile,BufRead *.ejs set filetype=html + +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','')} + +inoremap coc#refresh() +inoremap pumvisible() ? "\" : "\u\" +xmap f (coc-format-selected) +xmap a (coc-codeaction-selected) +xmap if (coc-funcobj-i) +xmap af (coc-funcobj-o) +xmap (coc-range-select) +omap if (coc-funcobj-i) +omap af (coc-funcobj-o) +nmap (coc-range-select) +nmap a (coc-codeaction-selected) +nmap f (coc-format-selected) +nmap (coc-rename) +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) +nmap ac (coc-codeaction) +nmap qf (coc-fix-current) +nnoremap K :call show_documentation() +inoremap + \ pumvisible() ? "\" : + \ check_back_space() ? "\" : + \ coc#refresh() +inoremap pumvisible() ? "\" : "\" +noremap j (v:count == 0 ? 'gj' : 'j') +noremap k (v:count == 0 ? 'gk' : 'k') +map :NERDTreeToggle +inoremap jk +vmap NERDCommenterToggle +nmap NERDCommenterToggle +nnoremap +nnoremap +nnoremap +nnoremap +nnoremap , :nohlsearch + +if (has("nvim")) + "For Neovim 0.1.3 and 0.1.4 < https://github.com/neovim/neovim/pull/2198 > + let $NVIM_TUI_ENABLE_TRUE_COLOR=1 +endif + "For Neovim > 0.1.5 and Vim > patch 7.4.1799 < https://github.com/vim/vim/commit/61be73bb0f965a895bfb064ea3e55476ac175162 > + "Based on Vim patch 7.4.1770 (`guicolors` option) < https://github.com/vim/vim/commit/8a633e3427b47286869aa4b96f2bfc1fe65b25cd > + " < https://github.com/neovim/neovim/wiki/Following-HEAD#20160511 > +if (has("termguicolors")) + set termguicolors +endif + +let g:onedark_hide_endofbuffer = 1 +let g:onedark_termcolors = 256 +let g:onedark_terminal_italics = 1 + +let g:lightline = { + \ 'colorscheme': 'onedark', + \ } + +" Python tab fix +function! s:fixtab() + set expandtab + set tabstop=4 + retab +endfunction + +command FixTab :call s:fixtab() + +syntax on +colorscheme onedark