Last active
September 29, 2021 11:50
-
-
Save 3ZsForInsomnia/ed2ac2193c29b43b07a56ffb5b55d8fd to your computer and use it in GitHub Desktop.
Vimrc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
" set syntax=on | |
" syntax on | |
" set termguicolors | |
set noswapfile | |
" set t_Co=256 | |
set ignorecase | |
set spelllang=en | |
set spellfile=~/.vim/spell/en.utf-8.add | |
set nospell | |
set nocompatible | |
filetype plugin on | |
syntax sync fromstart | |
let g:enable_spelunker_vim = 1 | |
set clipboard=unnamed | |
" set shellcmdflag=-ic | |
let mapleader=" " | |
set number | |
set backup | |
set backupdir=~/.vim/tmp | |
set dir=~/.vim/tmp | |
set hlsearch | |
set showmode | |
set autoindent | |
set expandtab | |
set shiftwidth=2 | |
set tabstop=2 | |
set softtabstop=2 | |
set foldmethod=indent | |
" set foldmethod=syntax | |
set foldlevelstart=20 | |
set hidden | |
set cmdheight=2 | |
set updatetime=300 | |
au BufNewFile,BufRead Jenkinsfile setf groovy | |
" set background=dark | |
" Vim Plugs | |
call plug#begin('~/.vim/plugged') | |
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} | |
Plug 'nvim-treesitter/nvim-treesitter-angular' | |
Plug 'tanvirtin/monokai.nvim' | |
Plug 'marko-cerovac/material.nvim' | |
Plug 'nxvu699134/vn-night.nvim' | |
Plug 'bluz71/vim-nightfly-guicolors' | |
Plug 'rafi/awesome-vim-colorschemes' | |
" Plug '907th/vim-auto-save' | |
" let g:auto_save = 1 | |
Plug 'scrooloose/nerdtree' | |
Plug 'PhilRunninger/nerdtree-visual-selection' | |
" Plug 'tiagofumo/vim-nerdtree-syntax-highlight' | |
" This throws python errors | |
" Plug 'severin-lemaignan/vim-minimap' | |
Plug 'tpope/vim-fugitive' | |
Plug 'ruanyl/vim-gh-line' | |
Plug 'junegunn/fzf', { 'do': './install --bin' } | |
Plug 'junegunn/fzf.vim' | |
Plug 'Yggdroot/LeaderF', { 'do': './install.sh' } | |
Plug 'APZelos/blamer.nvim' | |
let g:blamer_enabled = 1 | |
Plug 'michaelb/sniprun', {'do': 'bash install.sh'} | |
Plug 'vim-airline/vim-airline' | |
Plug 'vim-airline/vim-airline-themes' | |
Plug 'tpope/vim-sensible' | |
Plug 'junegunn/vim-easy-align' | |
Plug 'junegunn/vim-github-dashboard' | |
Plug 'tpope/vim-surround' | |
Plug 'MattesGroeger/vim-bookmarks' | |
Plug 'ncm2/ncm2' | |
" snippets for ncm2 | |
Plug 'SirVer/ultisnips' | |
Plug 'honza/vim-snippets' | |
Plug 'ncm2/ncm2-bufword' | |
Plug 'ncm2/ncm2-path' | |
Plug 'mlaursen/vim-react-snippets' | |
" Plug 'filipekiss/ncm2-look.vim' | |
" let g:ncm2_look_enabled = 1 | |
" Yarp and Shougu | |
" if has('nvim') | |
" Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } | |
" else | |
" Plug 'Shougo/deoplete.nvim' | |
Plug 'roxma/nvim-yarp' | |
" Plug 'roxma/vim-hug-neovim-rpc' | |
" endif | |
let g:deoplete#enable_at_startup = 1 | |
let g:python3_host_prog = "~/.pyenv/versions/3.7.6/bin/python3.7" | |
let g:python_host_prog = "~/.pyenv/versions/2.7.17/bin/python2.7" | |
" Plug 'Shougo/denite.nvim' | |
autocmd BufEnter * call ncm2#enable_for_buffer() | |
set completeopt=noinsert,menuone,noselect | |
set completeopt+=preview | |
set shortmess+=c | |
inoremap <c-c> <ESC> | |
inoremap <expr> <CR> (pumvisible() ? "\<c-y>\<cr>" : "\<CR>") | |
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>" | |
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>" | |
" JS | |
" Plug 'ncm2/ncm2-tern', {'do': 'npm install'} | |
" CSS | |
" Plug 'ncm2/ncm2-cssomni' | |
" Typescript | |
" Plug 'HerringtonDarkholme/yats.vim' | |
Plug 'leafgarland/typescript-vim' | |
Plug 'ianks/vim-tsx' | |
" Plug 'mhartington/nvim-typescript', { 'do': './install.sh' } | |
" Java | |
" Plug 'ObserverOfTime/ncm2-jc2', {'for': ['java', 'jsp']} | |
" Plug 'artur-shaik/vim-javacomplete2', {'for': ['java', 'jsp']} | |
" Markdown | |
" Plug 'ncm2/ncm2-markdown-subscope' | |
" Plug 'ncm2/ncm2-html-subscope' | |
Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app & yarn install' } | |
Plug 'mzlogin/vim-markdown-toc' | |
" Python | |
" Plug 'numirias/semshi', {'do': ':UpdateRemotePlugins'} | |
Plug 'nathanaelkane/vim-indent-guides' | |
let g:indent_guides_enable_on_vim_startup = 1 | |
set ts=4 sw=4 et | |
let g:indent_guides_start_level = 2 | |
let g:indent_guides_guide_size = 1 | |
let g:indent_guides_auto_colors = 0 | |
autocmd VimEnter,Colorscheme * :hi IndentGuidesOdd guibg=black ctermbg=3 | |
autocmd VimEnter,Colorscheme * :hi IndentGuidesEven guibg=darkblue ctermbg=4 | |
Plug 'frazrepo/vim-rainbow' | |
let g:rainbow_active = 1 | |
let g:rainbow_guifgs = ['RoyalBlue3', 'DarkOrange3', 'DarkOrchid3', 'FireBrick'] | |
let g:rainbow_ctermfgs = ['lightblue', 'lightgreen', 'yellow', 'red', 'magenta'] | |
Plug 'mattn/emmet-vim' | |
Plug 'tpope/vim-commentary' | |
Plug 'dense-analysis/ale' | |
let g:ale_linters = { | |
\'css': ['stylelint'], | |
\'javascript': ['eslint'] | |
\} | |
let g:ale_linter_aliases = { | |
\ 'javascriptreact': 'javascript', | |
\'typescriptreact': 'javacript', | |
\'typescript': 'javascript', | |
\'scss': 'css' | |
\} | |
let g:ale_fixers = { | |
\'javascript': ['eslint'], | |
\'typescript': ['eslint'], | |
\'css': ['stylelint'] | |
\} | |
let g:ale_sign_error = '❌' | |
let g:ale_sign_warning = '⚠️' | |
let g:ale_fix_on_save = 1 | |
Plug 'prettier/vim-prettier', { | |
\ 'do': 'yarn install', | |
\ 'branch': 'release/1.x', | |
\ 'for': [ | |
\ 'javascript', | |
\ 'typescript', | |
\ 'css', | |
\ 'less', | |
\ 'scss', | |
\ 'json', | |
\ 'graphql', | |
\ 'markdown', | |
\ 'vue', | |
\ 'lua', | |
\ 'php', | |
\ 'python', | |
\ 'ruby', | |
\ 'html', | |
\ 'swift' ] } | |
" Plug 'mxw/vim-jsx' | |
" Plug 'plasticboy/vim-markdown' | |
" Plug 'gabrielelana/vim-markdown' | |
" Plug 'raimondi/delimitmate' | |
" Plug 'elzr/vim-json' | |
Plug 'Xuyuanp/nerdtree-git-plugin' | |
" Plug 'othree/html5.vim' | |
Plug 'valloric/matchtagalways' | |
" Plug 'janko-m/vim-test' | |
Plug 'powerline/powerline' | |
" Plug 'cakebaker/scss-syntax.vim' | |
Plug 'shmargum/vim-sass-colors' | |
" Plug 'hail2u/vim-css3-syntax' | |
" Plug 'ekalinin/dockerfile.vim' | |
" Plug '/pangloss/vim-javascript' | |
" let g:javascript_plugin_jsdoc = 1 | |
" Plug 'jparise/vim-graphql' | |
" Plug 'heavenshell/vim-jsdoc' | |
Plug 'styled-components/vim-styled-components', { 'branch': 'main' } | |
Plug 'peitalin/vim-jsx-typescript' | |
" Plug 'fvictorio/vim-extract-variable' | |
" Plug 'neoclide/coc.nvim', {'branch': 'release', 'tag': '*', 'do': './install.sh'} | |
Plug 'neoclide/coc.nvim', {'branch': 'release'} | |
Plug 'kamykn/popup-menu.nvim' | |
Plug 'kamykn/spelunker.vim' | |
Plug 'ryanoasis/vim-devicons' | |
Plug 'vimwiki/vimwiki' | |
call plug#end() | |
let g:coc_global_extensions = [ | |
\'coc-yank', | |
\'coc-ultisnips', | |
\'coc-tsserver', | |
\'coc-spell-checker', | |
\'coc-snippets', | |
\'coc-react-refactor', | |
\'coc-prettier', | |
\'coc-jest', | |
\'coc-highlight', | |
\'coc-emmet', | |
\'coc-angular', | |
\'coc-sh', | |
\'coc-python', | |
\'coc-markdownlint', | |
\'coc-json', | |
\'coc-java', | |
\'coc-java-debug', | |
\'coc-html', | |
\'coc-css' | |
\] | |
" colorscheme afterglow | |
" set tags=tags | |
" set re=1 | |
" let g:yats_host_keyword = 1 | |
command! Wd w !diff % - | |
cnoreabbrev wd Wd | |
" coc.nvim configuration | |
" if hidden is not set, TextEdit might fail. | |
" set hidden | |
" Some servers have issues with backup files, see #649 | |
" set nobackup | |
" set nowritebackup | |
" Better display for messages | |
set cmdheight=2 | |
" You will have bad experience for diagnostic messages when it's default 4000. | |
set updatetime=500 | |
" don't give |ins-completion-menu| messages. | |
" set shortmess+=c | |
" always show signcolumns | |
set signcolumn=yes | |
" Use tab for trigger completion with characters ahead and navigate. | |
" Use command ':verbose imap <tab>' to make sure tab is not mapped by other plugin. | |
inoremap <silent><expr> <TAB> | |
\ pumvisible() ? "\<C-n>" : | |
\ <SID>check_back_space() ? "\<TAB>" : | |
\ coc#refresh() | |
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>" | |
function! s:check_back_space() abort | |
let col = col('.') - 1 | |
return !col || getline('.')[col - 1] =~# '\s' | |
endfunction | |
" Use <c-space> to trigger completion. | |
inoremap <silent><expr> <c-space> coc#refresh() | |
" Use <cr> to confirm completion, `<C-g>u` means break undo chain at current position. | |
" Coc only does snippet and additional edit on confirm. | |
inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>" | |
" Or use `complete_info` if your vim support it, like: | |
" inoremap <expr> <cr> complete_info()["selected"] != "-1" ? "\<C-y>" : "\<C-g>u\<CR>" | |
" Use `[g` and `]g` to navigate diagnostics | |
nmap <silent> [g <Plug>(coc-diagnostic-prev) | |
nmap <silent> ]g <Plug>(coc-diagnostic-next) | |
" Remap keys for gotos | |
nmap <silent> gd <Plug>(coc-definition) | |
nmap <silent> gy <Plug>(coc-type-definition) | |
nmap <silent> gi <Plug>(coc-implementation) | |
nmap <silent> gr <Plug>(coc-references) | |
nmap <silent>cgt :vsp<CR><Plug>(coc-definition)<C-W>T | |
" command! -nargs=0 PreviewDefinition :call CocActionAsync('jumpDefinition', ':OpenAsPreview') | |
" command! -nargs=* OpenAsPreview :call s:open_as_preview("<args>") | |
" function! s:open_as_preview(callstr) | |
" " e.g. the string should look like: +call cursor(<line>,<col>) <filename> | |
" let m = matchlist(a:callstr, '^+call cursor(\(\d\+\),\s*\(\d\+\))\s\+\(.*\)') | |
" if len(m) < 4 " TODO: more robust error handling | |
" echohl WarningMsg | echom "ERROR: Invalid callstr format" | echohl None | |
" return | |
" endif | |
" let linenr = m[1] | |
" let filename = expand(m[3]) | |
" call quickui#preview#open(filename, { | |
" \ 'cursor': linenr, | |
" \ 'number' : 1, | |
" \ 'persist': 0, | |
" \ }) | |
" endfunction | |
" nmap <leader>K :<C-U>PreviewDefinition<CR> | |
" Use K to show documentation in preview window | |
nnoremap <silent> K :call <SID>show_documentation()<CR> | |
function! s:show_documentation() | |
if (index(['vim','help'], &filetype) >= 0) | |
execute 'h '.expand('<cword>') | |
elseif (coc#rpc#ready()) | |
call CocActionAsync('doHover') | |
else | |
execute '!' . &keywordprg . " " . expand('<cword>') | |
endif | |
endfunction | |
" Highlight symbol under cursor on CursorHold | |
autocmd CursorHold * silent call CocActionAsync('highlight') | |
" Remap for rename current word | |
nmap <leader>rn <Plug>(coc-rename) | |
" Remap for format selected region | |
xmap <leader>fo <Plug>(coc-format-selected) | |
nmap <leader>fo <Plug>(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: `<leader>aap` for current paragraph | |
xmap <leader>a <Plug>(coc-codeaction-selected) | |
nmap <leader>a <Plug>(coc-codeaction-selected) | |
" Remap for do codeAction of current line | |
nmap <leader>ac <Plug>(coc-codeaction) | |
" Fix autofix problem of current line | |
nmap <leader>qf <Plug>(coc-fix-current) | |
" Create mappings for function text object, requires document symbols feature of languageserver. | |
xmap if <Plug>(coc-funcobj-i) | |
xmap af <Plug>(coc-funcobj-a) | |
omap if <Plug>(coc-funcobj-i) | |
omap af <Plug>(coc-funcobj-a) | |
" Use <TAB> for select selections ranges, needs server support, like: coc-tsserver, coc-python | |
nmap <silent> <TAB> <Plug>(coc-range-select) | |
xmap <silent> <TAB> <Plug>(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', <f-args>) | |
" 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 <silent> <space>a :<C-u>CocList diagnostics<cr> | |
" Manage extensions | |
nnoremap <silent> <space>e :<C-u>CocList extensions<cr> | |
" Show commands | |
nnoremap <silent> <space>c :<C-u>CocList commands<cr> | |
" Find symbol of current document | |
nnoremap <silent> <space>o :<C-u>CocList outline<cr> | |
" Search workspace symbols | |
nnoremap <silent> <space>s :<C-u>CocList -I symbols<cr> | |
" Do default action for next item. | |
nnoremap <silent> <space>j :<C-u>CocNext<CR> | |
" Do default action for previous item. | |
nnoremap <silent> <space>k :<C-u>CocPrev<CR> | |
" Resume latest coc list | |
nnoremap <silent> <space>p :<C-u>CocListResume<CR> | |
" CocSnippets config | |
" Use <C-l> for trigger snippet expand. | |
imap <C-l> <Plug>(coc-snippets-expand) | |
" Use <C-j> for select text for visual placeholder of snippet. | |
vmap <C-j> <Plug>(coc-snippets-select) | |
" Use <C-j> for jump to next placeholder, it's default of coc.nvim | |
let g:coc_snippet_next = '<c-j>' | |
" Use <C-k> for jump to previous placeholder, it's default of coc.nvim | |
let g:coc_snippet_prev = '<c-k>' | |
" Use <C-j> for both expand and jump (make expand higher priority.) | |
imap <C-j> <Plug>(coc-snippets-expand-jump) | |
" Use <leader>x for convert visual selected code to snippet | |
xmap <leader>x <Plug>(coc-convert-snippet) | |
inoremap <silent><expr> <TAB> | |
\ pumvisible() ? coc#_select_confirm() : | |
\ coc#expandableOrJumpable() ? "\<C-r>=coc#rpc#request('doKeymap', ['snippets-expand-jump',''])\<CR>" : | |
\ <SID>check_back_space() ? "\<TAB>" : | |
\ coc#refresh() | |
function! s:check_back_space() abort | |
let col = col('.') - 1 | |
return !col || getline('.')[col - 1] =~# '\s' | |
endfunction | |
let g:coc_snippet_next = '<tab>' | |
""""" Custom Coc Nvim | |
" function! ShowDocIfNoDiagnostic(timer_id) | |
" if (coc#float#has_float() == 0) | |
" silent call CocActionAsync('doHover') | |
" endif | |
" endfunction | |
" function! s:show_hover_doc() | |
" call timer_start(500, 'ShowDocIfNoDiagnostic') | |
" endfunction | |
" autocmd CursorHoldI * :call <SID>show_hover_doc() | |
" autocmd CursorHold * :call <SID>show_hover_doc() | |
" Markdown config | |
" set to 1, nvim will open the preview window after entering the markdown buffer | |
" default: 0 | |
" let g:mkdp_auto_start = 0 | |
" set to 1, the nvim will auto close current preview window when change | |
" from markdown buffer to another buffer | |
" default: 1 | |
let g:mkdp_auto_close = 1 | |
" set to 1, the vim will refresh markdown when save the buffer or | |
" leave from insert mode, default 0 is auto refresh markdown as you edit or | |
" move the cursor | |
" default: 0 | |
let g:mkdp_refresh_slow = 1 | |
" set to 1, the MarkdownPreview command can be use for all files, | |
" by default it can be use in markdown file | |
" default: 0 | |
let g:mkdp_command_for_global = 1 | |
" set to 1, preview server available to others in your network | |
" by default, the server listens on localhost (127.0.0.1) | |
" default: 0 | |
let g:mkdp_open_to_the_world = 0 | |
" use custom IP to open preview page | |
" useful when you work in remote vim and preview on local browser | |
" more detail see: https://github.com/iamcco/markdown-preview.nvim/pull/9 | |
" default empty | |
" let g:mkdp_open_ip = '' | |
" specify browser to open preview page | |
" default: '' | |
let g:mkdp_browser = 'Google Chrome' | |
" set to 1, echo preview page url in command line when open preview page | |
" default is 0 | |
let g:mkdp_echo_preview_url = 1 | |
" a custom vim function name to open preview page | |
" this function will receive url as param | |
" default is empty | |
" let g:mkdp_browserfunc = '' | |
" options for markdown render | |
" mkit: markdown-it options for render | |
" katex: katex options for math | |
" uml: markdown-it-plantuml options | |
" maid: mermaid options | |
" disable_sync_scroll: if disable sync scroll, default 0 | |
" sync_scroll_type: 'middle', 'top' or 'relative', default value is 'middle' | |
" middle: mean the cursor position alway show at the middle of the preview page | |
" top: mean the vim top viewport alway show at the top of the preview page | |
" relative: mean the cursor position alway show at the relative positon of the preview page | |
" hide_yaml_meta: if hide yaml metadata, default is 1 | |
" sequence_diagrams: js-sequence-diagrams options | |
let g:mkdp_preview_options = { | |
\ 'mkit': {}, | |
\ 'katex': {}, | |
\ 'uml': {}, | |
\ 'maid': {}, | |
\ 'disable_sync_scroll': 0, | |
\ 'sync_scroll_type': 'middle', | |
\ 'hide_yaml_meta': 1, | |
\ 'sequence_diagrams': {}, | |
\ 'flowchart_diagrams': {} | |
\ } | |
" use a custom markdown style must be absolute path | |
" like '/Users/username/markdown.css' or expand('~/markdown.css') | |
" let g:mkdp_markdown_css = '' | |
" use a custom highlight style must absolute path | |
" like '/Users/username/highlight.css' or expand('~/highlight.css') | |
" let g:mkdp_highlight_css = '' | |
" use a custom port to start server or random for empty | |
let g:mkdp_port = '7777' | |
" preview page title | |
" ${name} will be replace with the file name | |
let g:mkdp_page_title = '「${name}」' | |
" " My keyboard shortcuts | |
" autocmd StdinReadPre * let s:std_in=1 | |
" autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif | |
" let g:UltiSnipsSnippetDirectories=["/Users/zlevine/.vim/plugged/vim-snippets/UltiSnips", "UltiSnips", "customSnippets", "~/.vim/vim-snippets", "/Users/zlevine/Library/Application Support/Code/User/snippets/allSnippets.code-snippets"] | |
" let g:UltiSnipsSnippetDirectories=["UltiSnips", "customSnippets", "/Users/zlevine/Library/Application Support/Code/User/snippets/allSnippets.code-snippets"] | |
"" Custom colors | |
let s:brown = "905532" | |
let s:aqua = "3AFFDB" | |
let s:blue = "689FB6" | |
let s:darkBlue = "44788E" | |
let s:purple = "834F79" | |
let s:lightPurple = "834F79" | |
let s:red = "AE403F" | |
let s:beige = "F5C06F" | |
let s:yellow = "F09F17" | |
let s:orange = "D4843E" | |
let s:darkOrange = "F16529" | |
let s:pink = "CB6F6F" | |
let s:salmon = "EE6E73" | |
let s:green = "8FAA54" | |
let s:lightGreen = "31B53E" | |
let s:white = "FFFFFF" | |
let s:rspec_red = 'FE405F' | |
let s:git_orange = 'F54D27' | |
" NERDTress File highlighting | |
function! NERDTreeHighlightFile(extension, fg, bg) | |
exec 'autocmd FileType nerdtree syn match ' . a:extension .' #^\s\+.*'. a:extension .'$#' | |
exec 'autocmd FileType nerdtree highlight ' . a:extension .' ctermbg='. a:bg .' ctermfg='. a:fg .' guibg='. a:bg .' guifg='. a:fg | |
endfunction | |
call NERDTreeHighlightFile('ts', 'magenta', 'none') | |
call NERDTreeHighlightFile('tsx', 'red', 'none') | |
call NERDTreeHighlightFile('d.ts', 'grey', 'none') | |
call NERDTreeHighlightFile('component.ts', 'red', 'none') | |
call NERDTreeHighlightFile('spec.ts', 'yellow', 'none') | |
call NERDTreeHighlightFile('js', 'magenta', 'none') | |
call NERDTreeHighlightFile('index.ts', 'gray', 'none') | |
call NERDTreeHighlightFile('index.js', 'gray', 'none') | |
call NERDTreeHighlightFile('module.ts', 'gray', 'none') | |
call NERDTreeHighlightFile('stories.ts', 'green', 'none') | |
call NERDTreeHighlightFile('mocks.ts', 'gray', 'none') | |
call NERDTreeHighlightFile('mock.ts', 'gray', 'none') | |
call NERDTreeHighlightFile('html', 'green', 'none') | |
call NERDTreeHighlightFile('scss', 'blue', 'none') | |
call NERDTreeHighlightFile('css', 'blue', 'none') | |
call NERDTreeHighlightFile('json', 'cyan', 'none') | |
call NERDTreeHighlightFile('yml', 'cyan', 'none') | |
call NERDTreeHighlightFile('lock', 'grey', 'none') | |
call NERDTreeHighlightFile('md', 'blue', 'none') | |
call NERDTreeHighlightFile('gitignore', 'grey', 'none') | |
call NERDTreeHighlightFile('tags', 'grey', 'none') | |
call NERDTreeHighlightFile('browserslist', 'grey', 'none') | |
call NERDTreeHighlightFile('npmrc', 'grey', 'none') | |
call NERDTreeHighlightFile('browserlist', 'grey', 'none') | |
call NERDTreeHighlightFile('browserlist', 'grey', 'none') | |
" Ensures syntax highlighting from TS works for tsx files | |
augroup SyntaxSettings | |
autocmd! | |
autocmd BufNewFile,BufRead *.tsx set filetype=typescript.typescriptreact | |
augroup END | |
autocmd VimLeavePre * if get(g:, 'coc_process_pid', 0) | call system('kill -9 '.g:coc_process_pid) | endif | |
nnoremap <leader>, :nohlsearch<CR> | |
nnoremap ,, :foldc<CR> | |
nnoremap .. :foldo<CR> | |
nnoremap >. zO | |
nnoremap zz :w<CR> | |
nnoremap <leader>pr :Prettier<CR> | |
nnoremap <leader>ts :ts | |
nnoremap <leader>doc :JsDoc<CR> | |
nnoremap <leader>f :Leaderf file<cr> | |
nnoremap <leader>ft :Leaderf tag<cr> | |
nnoremap <leader>fb :Leaderf line<cr> | |
nnoremap <leader>fw :Leaderf window<cr> | |
nnoremap <leader>fl :Leaderf buffer<cr> | |
nnoremap <leader>ag :Ag | |
nnoremap <leader>def :TSDefPreview<CR> | |
nnoremap <leader>tbs :tab split<CR> | |
nnoremap <silent> <space>y :<C-u>CocList -A --normal yank<cr> | |
" nmap <leader>bm <Plug>(coc-bookmark-toggle) | |
" nmap <leader>bj <Plug>(coc-bookmark-next) | |
" nmap <Leader>bk <Plug>(coc-bookmark-prev) | |
" nmap <leader>ba <Plug>(coc-bookmark-annotate) | |
" nmap <leader>bma <Plug>(coc-bookmark-toggle) <bar> <Plug>(coc-bookmark-annotate) | |
" nmap <leader>bl :CocList bookmark<CR> | |
vmap <leader>a <Plug>(coc-codeaction-selected) | |
nmap <leader>a <Plug>(coc-codeaction-selected) | |
nnoremap <leader>rf :NERDTreeFind<cr> | |
" nnoremap <silent> <leader>z :let&l:fdl=indent('.')/&sw<cr> | |
let g:bookmark_no_default_key_mappings = 1 | |
let g:bookmark_auto_close = 1 | |
nmap <leader>bm :BookmarkToggle<cr> | |
nmap <leader>ba :BookmarkAnnotate<cr> | |
nmap <leader>bl :BookmarkShowAll<cr> | |
nmap <leader>bj :BookmarkNext<cr> | |
nmap <leader>bk :BookmarkPrev<cr> | |
nmap <leader>bc :BookmarkClear<cr> | |
nmap <leader>cc :cclose<cr> | |
nnoremap <C-n> :NERDTree<CR> | |
nnoremap <C-t> :NERDTreeToggle<CR> | |
nnoremap <C-f> :NERDTreeFind<CR> | |
noremap <leader>agc :Ag! "<cword>"<cr> | |
nmap <leader>sr <Plug>SnipRun | |
nmap <leader>sro <Plug>SnipRunOperator | |
vmap sr <Plug>SnipRun | |
set tags+=~/src/zipari/design-system/tags | |
set tags+=~/src/zipari/web-services/tags | |
set tags+=~/src/zipari/web-utils/tags | |
colorscheme afterglow | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
syntax on | |
set ignorecase | |
set spelllang=en | |
set spellfile=~/.vim/spell/en.utf-8.add | |
" set shellcmdflag=-ic | |
let mapleader=" " | |
set number | |
set backup | |
set backupdir=~/.vim/tmp | |
set dir=~/.vim/tmp | |
set hlsearch | |
set showmode | |
set autoindent | |
set expandtab | |
set shiftwidth=2 | |
set tabstop=2 | |
set softtabstop=2 | |
set foldmethod=indent | |
set foldlevelstart=20 | |
set hidden | |
set cmdheight=2 | |
set updatetime=300 | |
" Vim Plugs | |
call plug#begin('~/.vim/plugged') | |
Plug 'scrooloose/nerdtree' | |
Plug 'tpope/vim-fugitive' | |
Plug 'junegunn/fzf' | |
Plug 'vim-airline/vim-airline' | |
Plug 'vim-airline/vim-airline-themes' | |
Plug 'tpope/vim-sensible' | |
Plug 'junegunn/vim-easy-align' | |
Plug 'junegunn/vim-github-dashboard' | |
Plug 'rafi/awesome-vim-colorschemes' | |
Plug 'ncm2/ncm2' | |
" snippets for ncm2 | |
Plug 'SirVer/ultisnips' | |
Plug 'honza/vim-snippets' | |
Plug 'ncm2/ncm2-bufword' | |
Plug 'ncm2/ncm2-path' | |
Plug 'filipekiss/ncm2-look.vim' | |
" Yarp and Shougu | |
if has('nvim') | |
Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } | |
Plug 'roxma/nvim-yarp' | |
else | |
Plug 'Shougo/deoplete.nvim' | |
Plug 'roxma/nvim-yarp' | |
Plug 'roxma/vim-hug-neovim-rpc' | |
endif | |
let g:deoplete#enable_at_startup = 1 | |
Plug 'Shougo/denite.nvim' | |
autocmd BufEnter * call ncm2#enable_for_buffer() | |
set completeopt=noinsert,menuone,noselect | |
set completeopt+=preview | |
set shortmess+=c | |
inoremap <c-c> <ESC> | |
" inoremap <expr> <CR> (pumvisible() ? "\<c-y>\<cr>" : "\<CR>") | |
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>" | |
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>" | |
" JS | |
Plug 'ncm2/ncm2-tern', {'do': 'npm install'} | |
" CSS | |
Plug 'ncm2/ncm2-cssomni' | |
" Typescript | |
Plug 'HerringtonDarkholme/yats.vim' | |
Plug 'mhartington/nvim-typescript', { 'do': ':UpdateRemotePlugins' } | |
" Java | |
Plug 'ObserverOfTime/ncm2-jc2', {'for': ['java', 'jsp']} | |
Plug 'artur-shaik/vim-javacomplete2', {'for': ['java', 'jsp']} | |
" Markdown | |
Plug 'ncm2/ncm2-markdown-subscope' | |
Plug 'ncm2/ncm2-html-subscope' | |
Plug 'nathanaelkane/vim-indent-guides' | |
let g:indent_guides_enable_on_vim_startup = 1 | |
set ts=2 sw=2 et | |
let g:indent_guides_start_level = 1 | |
let g:indent_guides_guide_size = 1 | |
let g:indent_guides_auto_colors = 0 | |
autocmd VimEnter,Colorscheme * :hi IndentGuidesOdd guibg=red ctermbg=3 | |
autocmd VimEnter,Colorscheme * :hi IndentGuidesEven guibg=green ctermbg=4 | |
Plug 'frazrepo/vim-rainbow' | |
let g:rainbow_active = 1 | |
let g:rainbow_guifgs = ['RoyalBlue3', 'DarkOrange3', 'DarkOrchid3', 'FireBrick'] | |
let g:rainbow_ctermfgs = ['lightblue', 'lightgreen', 'yellow', 'red', 'magenta'] | |
Plug 'mattn/emmet-vim' | |
Plug 'tpope/vim-commentary' | |
Plug 'dense-analysis/ale' | |
let g:ale_linters = { | |
\'css': ['stylelint'], | |
\'javascript': ['eslint'] | |
\} | |
let g:ale_linter_aliases = { | |
\ 'javascriptreact': 'javascript', | |
\'typescriptreact': 'javacript', | |
\'typescript': 'javascript', | |
\'scss': 'css' | |
\} | |
let g:ale_fixers = { | |
\'javascript': ['eslint'], | |
\'typescript': ['eslint'], | |
\'css': ['stylelint'] | |
\} | |
let g:ale_sign_error = '❌' | |
let g:ale_sign_warning = '⚠️' | |
let g:ale_fix_on_save = 1 | |
Plug 'prettier/vim-prettier', { | |
\ 'do': 'yarn install', | |
\ 'branch': 'release/1.x', | |
\ 'for': [ | |
\ 'javascript', | |
\ 'typescript', | |
\ 'css', | |
\ 'less', | |
\ 'scss', | |
\ 'json', | |
\ 'graphql', | |
\ 'markdown', | |
\ 'vue', | |
\ 'lua', | |
\ 'php', | |
\ 'python', | |
\ 'ruby', | |
\ 'html', | |
\ 'swift' ] } | |
Plug 'mxw/vim-jsx' | |
Plug 'plasticboy/vim-markdown' | |
" Plug 'jiangmiao/auto-pairs' | |
Plug 'raimondi/delimitmate' | |
Plug 'elzr/vim-json' | |
Plug 'Xuyuanp/nerdtree-git-plugin' | |
Plug 'othree/html5.vim' | |
Plug 'janko-m/vim-test' | |
Plug 'thaerkh/vim-workspace' | |
let g:workspace_create_new_tabs = 0 " enabled = 1 (default), disabled = 0 | |
nnoremap <leader>s :ToggleWorkspace<CR> | |
let g:workspace_session_directory = $HOME . '/.vim/sessions/' | |
Plug 'powerline/powerline' | |
Plug 'cakebaker/scss-syntax.vim' | |
Plug 'ekalinin/dockerfile.vim' | |
Plug 'moll/vim-node' | |
Plug 'mhinz/vim-startify' | |
Plug '/pangloss/vim-javascript' | |
let g:javascript_plugin_jsdoc = 1 | |
Plug 'jparise/vim-graphql' | |
Plug 'kkoomen/vim-doge' | |
Plug 'ap/vim-css-color' | |
Plug 'fvictorio/vim-extract-variable' | |
Plug 'neoclide/coc.nvim', {'branch': 'release'} | |
Plug 'neoclide/coc-highlight' | |
Plug 'neoclide/coc-snippets' | |
Plug 'neoclide/coc-eslint' | |
Plug 'neoclide/coc-yaml' | |
Plug 'neoclide/coc-prettier' | |
Plug 'neoclide/coc-tsserver' | |
Plug 'neoclide/coc-jest' | |
Plug 'weirongxu/coc-calc' | |
Plug 'ryanoasis/vim-devicons' | |
call plug#end() | |
colorscheme afterglow | |
set tags=tags | |
command Wd w !diff % - | |
cnoreabbrev wd Wd | |
" coc.nvim configuration | |
" if hidden is not set, TextEdit might fail. | |
" set hidden | |
" Some servers have issues with backup files, see #649 | |
" set nobackup | |
" set nowritebackup | |
" Better display for messages | |
set cmdheight=2 | |
" You will have bad experience for diagnostic messages when it's default 4000. | |
set updatetime=300 | |
" don't give |ins-completion-menu| messages. | |
" set shortmess+=c | |
" always show signcolumns | |
set signcolumn=yes | |
" Use tab for trigger completion with characters ahead and navigate. | |
" Use command ':verbose imap <tab>' to make sure tab is not mapped by other plugin. | |
inoremap <silent><expr> <TAB> | |
\ pumvisible() ? "\<C-n>" : | |
\ <SID>check_back_space() ? "\<TAB>" : | |
\ coc#refresh() | |
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>" | |
function! s:check_back_space() abort | |
let col = col('.') - 1 | |
return !col || getline('.')[col - 1] =~# '\s' | |
endfunction | |
" Use <c-space> to trigger completion. | |
inoremap <silent><expr> <c-space> coc#refresh() | |
" Use <cr> to confirm completion, `<C-g>u` means break undo chain at current position. | |
" Coc only does snippet and additional edit on confirm. | |
inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>" | |
" Or use `complete_info` if your vim support it, like: | |
" inoremap <expr> <cr> complete_info()["selected"] != "-1" ? "\<C-y>" : "\<C-g>u\<CR>" | |
" Use `[g` and `]g` to navigate diagnostics | |
nmap <silent> [g <Plug>(coc-diagnostic-prev) | |
nmap <silent> ]g <Plug>(coc-diagnostic-next) | |
" Remap keys for gotos | |
nmap <silent> gd <Plug>(coc-definition) | |
nmap <silent> gy <Plug>(coc-type-definition) | |
nmap <silent> gi <Plug>(coc-implementation) | |
nmap <silent> gr <Plug>(coc-references) | |
" Use K to show documentation in preview window | |
" nnoremap <silent> K :call <SID>show_documentation()<CR> | |
nnoremap K :TSDoc<CR> | |
function! s:show_documentation() | |
if (index(['vim','help'], &filetype) >= 0) | |
execute 'h '.expand('<cword>') | |
else | |
call CocAction('doHover') | |
endif | |
endfunction | |
" Highlight symbol under cursor on CursorHold | |
autocmd CursorHold * silent call CocActionAsync('highlight') | |
" Remap for rename current word | |
nmap <leader>rn <Plug>(coc-rename) | |
" Remap for format selected region | |
xmap <leader>f <Plug>(coc-format-selected) | |
nmap <leader>f <Plug>(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: `<leader>aap` for current paragraph | |
xmap <leader>a <Plug>(coc-codeaction-selected) | |
nmap <leader>a <Plug>(coc-codeaction-selected) | |
" Remap for do codeAction of current line | |
nmap <leader>ac <Plug>(coc-codeaction) | |
" Fix autofix problem of current line | |
nmap <leader>qf <Plug>(coc-fix-current) | |
" Create mappings for function text object, requires document symbols feature of languageserver. | |
xmap if <Plug>(coc-funcobj-i) | |
xmap af <Plug>(coc-funcobj-a) | |
omap if <Plug>(coc-funcobj-i) | |
omap af <Plug>(coc-funcobj-a) | |
" Use <TAB> for select selections ranges, needs server support, like: coc-tsserver, coc-python | |
nmap <silent> <TAB> <Plug>(coc-range-select) | |
xmap <silent> <TAB> <Plug>(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', <f-args>) | |
" 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 <silent> <space>a :<C-u>CocList diagnostics<cr> | |
" Manage extensions | |
nnoremap <silent> <space>e :<C-u>CocList extensions<cr> | |
" Show commands | |
nnoremap <silent> <space>c :<C-u>CocList commands<cr> | |
" Find symbol of current document | |
nnoremap <silent> <space>o :<C-u>CocList outline<cr> | |
" Search workspace symbols | |
nnoremap <silent> <space>s :<C-u>CocList -I symbols<cr> | |
" Do default action for next item. | |
nnoremap <silent> <space>j :<C-u>CocNext<CR> | |
" Do default action for previous item. | |
nnoremap <silent> <space>k :<C-u>CocPrev<CR> | |
" Resume latest coc list | |
nnoremap <silent> <space>p :<C-u>CocListResume<CR> | |
" My keyboard shortcuts | |
nnoremap <leader>, :nohlsearch<CR> | |
nnoremap <, :foldc<CR> | |
nnoremap >. :foldo<CR> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment