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/ call plug#begin() Plug 'preservim/nerdtree' Plug 'w0rp/ale' Plug 'tiagofumo/vim-nerdtree-syntax-highlight' Plug 'ryanoasis/vim-devicons' Plug 'airblade/vim-gitgutter' Plug 'ctrlpvim/ctrlp.vim' Plug 'tpope/vim-commentary' Plug 'HerringtonDarkholme/yats.vim' Plug 'mhinz/vim-startify' Plug 'sbdchd/neoformat' Plug 'Raimondi/delimitMate' Plug 'itchyny/lightline.vim' Plug 'roxma/nvim-yarp' Plug 'ncm2/ncm2' Plug 'ncm2/ncm2-pyclang' Plug 'frazrepo/vim-rainbow' Plug 'nvim-tree/nvim-web-devicons' Plug 'romgrk/barbar.nvim' Plug 'f-person/git-blame.nvim' Plug 'numToStr/FTerm.nvim' " colorschemes Plug 'joshdick/onedark.vim' Plug 'nanotech/jellybeans.vim' Plug 'morhetz/gruvbox' Plug 'zeis/vim-kolor' Plug 'sainnhe/edge' call plug#end() filetype plugin on filetype 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! s:synctree() if &modifiable && IsNERDTreeOpen() && strlen(expand('%')) > 0 && !&diff nerdtreefind wincmd p endif endfunction function s:refresh() if IsNERDTreeOpen() exec "NERDTreeRefreshRoot" exec "NERDTreeRefreshRoot" endif endfunction map :call refresh() 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 let g:ctrlp_user_command = ['.git/', 'git --git-dir=%s/.git ls-files -oc --exclude-standard'] let g:ale_linters_explicit = 1 let g:ale_linters = { 'cpp': ['g++'], 'c': ['gcc'] } let g:ale_cpp_cc_options = "-std=c++17" function! s:check_back_space() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~# '\s' endfunction " Autoformat with clang-format function! FormatOnSave() let l:formatdiff = 1 pyf ~/.local/bin/clang-format.py endfunction autocmd BufWritePre *.h,*.hpp,*.cc,*.cpp,*.cxx,*.c++,*.c call FormatOnSave() autocmd BufWritePre,InsertLeave *.js Neoformat au BufNewFile,BufRead *.ejs set filetype=html au BufEnter * call ncm2#enable_for_buffer() set completeopt=noinsert,menuone,noselect let g:ncm2_pyclang#library_path='/usr/lib/x86_64-linux-gnu/libclang-14.so' inoremap pumvisible() ? "\" : "\u\" nnoremap K :call show_documentation() inoremap pumvisible() ? "\" : "\" noremap j (v:count == 0 ? 'gj' : 'j') noremap k (v:count == 0 ? 'gk' : 'k') map :NERDTreeToggle inoremap jk inoremap JK nnoremap nnoremap nnoremap nnoremap nnoremap , :nohlsearch function s:save_and_source() exec "w | source %" endfunction nnoremap :call save_and_source() inoremap :call save_and_source() 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 au BufNewFile,BufRead *.c,*.cc,*.h,*.vim call rainbow#load() " au FileType c,cpp,vim call rainbow#load() " Python tab fix function! s:fixtab() set expandtab set tabstop=4 retab endfunction command! FixTab :call s:fixtab() " Move to previous/next nnoremap BufferPrevious nnoremap BufferNext " Re-order to previous/next nnoremap BufferMovePrevious nnoremap > BufferMoveNext " Goto buffer in position... nnoremap BufferGoto 1 nnoremap BufferGoto 2 nnoremap BufferGoto 3 nnoremap BufferGoto 4 nnoremap BufferGoto 5 nnoremap BufferGoto 6 nnoremap BufferGoto 7 nnoremap BufferGoto 8 nnoremap BufferGoto 9 nnoremap BufferLast " Pin/unpin buffer nnoremap BufferPin " Close buffer nnoremap BufferClose " Restore buffer nnoremap BufferRestore " Wipeout buffer " :BufferWipeout " Close commands " :BufferCloseAllButCurrent " :BufferCloseAllButVisible " :BufferCloseAllButPinned " :BufferCloseAllButCurrentOrPinned " :BufferCloseBuffersLeft " :BufferCloseBuffersRight " Magic buffer-picking mode nnoremap BufferPick nnoremap BufferPickDelete " Sort automatically by... nnoremap bb BufferOrderByBufferNumber nnoremap bd BufferOrderByDirectory nnoremap bl BufferOrderByLanguage nnoremap bw BufferOrderByWindowNumber nnoremap lua require("FTerm").toggle() tnoremap lua require("FTerm").toggle() syntax on " colorscheme onedark " colorscheme jellybeans colorscheme gruvbox " colorscheme kolor " colorscheme edge let g:lightline = { \ 'colorscheme': g:colors_name, \ }