" Install vim-plug if not found if empty(glob('~/.vim/autoload/plug.vim')) silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim endif " Run PlugInstall if there are missing plugins autocmd VimEnter * if len(filter(values(g:plugs), '!isdirectory(v:val.dir)')) \| PlugInstall --sync | source $MYVIMRC \| endif """"" "--- Plugins call plug#begin('~/.vim/plugged') " General Plug 'ojroques/vim-oscyank' Plug 'tpope/vim-obsession' Plug 'tmux-plugins/vim-tmux-focus-events' " Look Plug 'vim-airline/vim-airline' Plug 'sonph/onehalf', { 'rtp': 'vim' } Plug 'Yggdroot/indentLine' " Git Plug 'tpope/vim-fugitive' Plug 'airblade/vim-gitgutter' Plug 'tpope/vim-rhubarb' " Search/Files Plug 'preservim/nerdtree' Plug 'ctrlpvim/ctrlp.vim' " Ignore/Edit files Plug 'vim-scripts/gitignore' " Languages Plug 'pantharshit00/vim-prisma' Plug 'fatih/vim-go' Plug 'pangloss/vim-javascript' Plug 'leafgarland/typescript-vim' Plug 'peitalin/vim-jsx-typescript' Plug 'styled-components/vim-styled-components', { 'branch': 'main' } Plug 'jparise/vim-graphql' Plug 'kevinoid/vim-jsonc' " protobuf with buf Plug 'dense-analysis/ale' Plug 'bufbuild/vim-buf' let g:ale_linters = { \ 'proto': ['buf-lint',], \} let g:ale_lint_on_text_changed = 'never' let g:ale_linters_explicit = 1 " Code helpers Plug 'neoclide/coc.nvim', {'branch': 'release'} call plug#end() """"" "--- CodeServer Configurations let g:coc_global_extensions = [ \ 'coc-tsserver', \ 'coc-prettier', \ 'coc-yaml', \ 'coc-json', \ 'coc-git', \ 'coc-pyright', \ 'coc-pairs', \ 'coc-prisma', \ 'coc-sh', \ ] if isdirectory('./node_modules') && isdirectory('./node_modules/prettier') let g:coc_global_extensions += ['coc-prettier'] endif if isdirectory('./node_modules') && isdirectory('./node_modules/eslint') let g:coc_global_extensions += ['coc-eslint'] endif " Diagnostic list nnoremap d :CocList diagnostics " Symbols list nnoremap s :CocList -I symbols " Code actions nmap do (coc-codeaction) " Rename current world nmap rn (coc-rename) " 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('') elseif (coc#rpc#ready()) call CocActionAsync('doHover') else execute '!' . &keywordprg . " " . expand('') endif endfunction " Remap keys for applying codeAction to the current buffer. nmap ac (coc-codeaction) " Apply AutoFix to problem on the current line. nmap qf (coc-fix-current) " GoTo code navigation. nmap gd (coc-definition) nmap gy (coc-type-definition) nmap gi (coc-implementation) nmap gr (coc-references) """"" "--- TMUX/Clipboard fixes set t_Co=256 set t_ut= " Set Vim-specific sequences for RGB colors " Fixes 'termguicolors' usage in vim+tmux " :h xterm-true-color let &t_8f = "\[38;2;%lu;%lu;%lum" let &t_8b = "\[48;2;%lu;%lu;%lum" " Enables 24-bit RGB color in the terminal if has('termguicolors') if empty($COLORTERM) || $COLORTERM =~# 'truecolor\|24bit' set termguicolors endif endif " Use system clipboard to get buffers synced between TMUX and VIM if has('clipboard') && has('vim_starting') " set clipboard& clipboard+=unnamedplus set clipboard& clipboard^=unnamed,unnamedplus endif if exists('##TextYankPost') augroup BlinkClipboardIntegration autocmd! autocmd TextYankPost * if v:event.operator is 'y' && v:event.regname is '' | execute 'OSCYankReg "' | endif augroup END endif """"" "--- VIM Configuration set encoding=UTF-8 set autoread " will re-read opened file if changed externaly set autowrite set splitright set splitbelow set autoindent set tabstop=4 set shiftwidth=2 set softtabstop=0 set expandtab set smarttab set noswapfile set nobackup set nowritebackup set incsearch " search as you type set ignorecase set smartcase set mouse=a set ttymouse=sgr set spell spelllang=en_us set updatetime=300 set cmdheight=1 set hidden set shortmess+=c """"" "- Custom commands command! -nargs=0 Prettier :CocCommand prettier.formatFile """"" "- CtrlP let g:ctrlp_max_files=0 let g:ctrlp_max_depth=40 let g:ctrlp_show_hidden=1 let g:ctrlp_custom_ignore = { \ 'dir': '\.git$\|\.yardoc\|node_modules\|tmp$\|dist$', \ 'file': '\.so$\|\.dat$|\.DS_Store$' \ } """""" "- NERDTree let NERDTreeShowHidden=1 let NERDTreeIgnore=['\.git$[[dir]]', 'node_modules$[[dir]]'] let NERDTreeRespectWildIgnore=1 let NERDTreeStatusline="NERDTree" let NERDTreeMinimalUI=1 let NERDTreeCascadeSingleChildDir=1 nnoremap n :NERDTreeFocus nnoremap :NERDTree nnoremap :NERDTreeFind nnoremap f 1z= " fix spelling map :call NERDTreeToggleAndRefresh() function NERDTreeToggleAndRefresh() :NERDTreeToggle if g:NERDTree.IsOpen() :NERDTreeRefreshRoot endif endfunction """"" "- Keybindings nnoremap let mapleader = " " let g:ctrlp_map = '' let g:ctrlp_cmd = 'CtrlP' """"" "- Visuals set noshowmode set number set cursorline set hlsearch " highlight all results set signcolumn=yes " always show git diff column colorscheme onehalflight if !exists('g:airline_symbols') let g:airline_symbols = {} endif let g:airline_symbols.branch = '' let g:airline_symbols.dirty=' ' let g:airline_symbols.linenr = '☰ ' let g:airline_symbols.maxlinenr = ' ' let g:airline_left_sep='' let g:airline_right_sep='' let g:airline_detect_spell=0 let g:airline#extensions#coc#enabled = 1 let g:airline#parts#ffenc#skip_expected_string='utf-8[unix]' let g:airline_theme = 'onehalflight'