" Specify a directory for plugins call plug#begin('~/.config/nvim/plugins/plugged') Plug 'neoclide/coc.nvim', {'branch': 'release'} Plug 'scrooloose/nerdtree' "Plug 'tsony-tsonev/nerdtree-git-plugin' Plug 'Xuyuanp/nerdtree-git-plugin' Plug 'tiagofumo/vim-nerdtree-syntax-highlight' Plug 'ryanoasis/vim-devicons' Plug 'airblade/vim-gitgutter' Plug 'ctrlpvim/ctrlp.vim' " fuzzy find files Plug 'scrooloose/nerdcommenter' "This is a linter for python Plug 'metakirby5/codi.vim' Plug 'christoomey/vim-tmux-navigator' Plug 'morhetz/gruvbox' Plug 'dracula/vim',{'as':'dracula'} Plug 'HerringtonDarkholme/yats.vim' " TS Syntax " Initialize plugin system call plug#end() "Remaps: "jk in insert mode takes you back to normal mode inoremap jk "Ctrl-n activates nerd toggle nmap :NERDTreeToggle "Ctrl-s saves nmap :w "++ in vmap or nmap coments vmap ++ NERDCommenterToggle nmap ++ NERDCommenterToggle "Personalizado: "espera dos segundos para el completado de comandos set timeout timeoutlen=2000 "Tabs and indents set tabstop=4 softtabstop=4 set shiftwidth=4 set smarttab set expandtab set smartindent "accept colorscheme set termguicolors "numbers set number set relativenumber "cases set ignorecase set smartcase "colorscheme dracula colorscheme gruvbox "Random_useful_stuff: "executing any .vimrc that is in the current directory for project specific "configurations that i might need: set exrc "No highligt search plus incremental search: set nohlsearch set incsearch "keep buffers arround while open: set hidden "No random sound: set noerrorbells "Extra space on the bottom set scrolloff=8 "colors: syntax on "A bar on the side: set signcolumn=yes " j/k will move virtual lines (lines that wrap) noremap j (v:count == 0 ? 'gj' : 'j') noremap k (v:count == 0 ? 'gk' : 'k') "Better look for messages set cmdheight=2 "300ms without activity to write to disk the swapfile set updatetime=300 " don't give |ins-completion-menu| messages. set shortmess+=c "Codi: " Change the color highlight CodiVirtualText guifg=cyan "The indicator for codi let g:codi#virtual_text_prefix = "❯ " let g:codi#aliases = { \ 'javascript.jsx': 'javascript', \ } "Ctrlp: let g:ctrlp_user_command = ['.git/', 'git --git-dir=%s/.git ls-files -oc --exclude-standard'] "Vim_prettier: "let g:prettier#quickfix_enabled = 0 "let g:prettier#quickfix_auto_focus = 0 " prettier command for coc command! -nargs=0 Prettier :CocCommand prettier.formatFile " run prettier on save "let g:prettier#autoformat = 0 "autocmd BufWritePre *.js,*.jsx,*.mjs,*.ts,*.tsx,*.css,*.less,*.scss,*.json,*.graphql,*.md,*.vue,*.yaml,*.html PrettierAsync "NERDTree: let g:NERDTreeGitStatusWithFlags = 1 let g:WebDevIconsUnicodeDecorateFolderNodes = 1 let g:NERDTreeGitStatusNodeColorization = 1 let g:NERDTreeColorMapCustom = { \ "Staged" : "#0ee375", \ "Modified" : "#d9bf91", \ "Renamed" : "#51C9FC", \ "Untracked" : "#FCE77C", \ "Unmerged" : "#FC51E6", \ "Dirty" : "#FFBD61", \ "Clean" : "#87939A", \ "Ignored" : "#808080" \ } let g:NERDTreeIgnore = ['^node_modules$'] " sync open file with NERDTree " " Check if NERDTree is open or active function! IsNERDTreeOpen() return exists("t:NERDTreeBufName") && (bufwinnr(t:NERDTreeBufName) != -1) endfunction " Call NERDTreeFind iff 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 " Highlight currently open buffer in NERDTree autocmd BufEnter * call SyncTree() "Coc: let g:coc_global_extensions = [ \ 'coc-snippets', \ 'coc-pairs', \ 'coc-tsserver', \ 'coc-eslint', \ 'coc-prettier', \ 'coc-json', \ 'coc-clangd', \ 'coc-css', \ 'coc-html', \ 'coc-markdownlint', \ 'coc-python', \ ] " Use tab for trigger completion with characters ahead and navigate. " Use command ':verbose imap ' to make sure tab is not mapped by other plugin. 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 to trigger completion. inoremap coc#refresh() " Use to confirm completion, `u` means break undo chain at current position. " Coc only does snippet and additional edit on confirm. inoremap pumvisible() ? "\" : "\u\" " Or use `complete_info` if your vim support it, like: " inoremap complete_info()["selected"] != "-1" ? "\" : "\u\" " Use `[g` and `]g` to navigate diagnostics nmap [g (coc-diagnostic-prev) nmap ]g (coc-diagnostic-next) " Remap keys for gotos nmap gd (coc-definition) nmap gy (coc-type-definition) nmap gi (coc-implementation) nmap gr (coc-references) " Use K to show documentation in preview window nnoremap K :call show_documentation() function! s:show_documentation() if (index(['vim','help'], &filetype) >= 0) execute 'h '.expand('') else call CocAction('doHover') endif endfunction " Highlight symbol under cursor on CursorHold autocmd CursorHold * silent call CocActionAsync('highlight') " Remap for rename current word nmap (coc-rename) " Remap for format selected region xmap f (coc-format-selected) nmap f (coc-format-selected) augroup mygroup autocmd! " Setup formatexpr specified filetype(s). autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') " Update signature help on jump placeholder autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') augroup end " Remap for do codeAction of selected region, ex: `aap` for current paragraph xmap a (coc-codeaction-selected) nmap a (coc-codeaction-selected) " Remap for do codeAction of current line nmap ac (coc-codeaction) " Fix autofix problem of current line nmap qf (coc-fix-current) " Create mappings for function text object, requires document symbols feature of languageserver. xmap if (coc-funcobj-i) xmap af (coc-funcobj-a) omap if (coc-funcobj-i) omap af (coc-funcobj-a) " Use for select selections ranges, needs server support, like: coc-tsserver, coc-python nmap (coc-range-select) xmap (coc-range-select) " Use `:Format` to format current buffer command! -nargs=0 Format :call CocAction('format') " Use `:Fold` to fold current buffer command! -nargs=? Fold :call CocAction('fold', ) " use `:OR` for organize import of current buffer command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport') " Add status line support, for integration with other plugin, checkout `:h coc-status` set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} " Using CocList " Show all diagnostics nnoremap a :CocList diagnostics " Manage extensions nnoremap e :CocList extensions " Show commands nnoremap c :CocList commands " Find symbol of current document nnoremap o :CocList outline " Search workspace symbols nnoremap s :CocList -I symbols " Do default action for next item. nnoremap j :CocNext " Do default action for previous item. nnoremap k :CocPrev " Resume latest coc list nnoremap p :CocListResume