Skip to content

Instantly share code, notes, and snippets.

@3ZsForInsomnia
Last active September 29, 2021 11:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 3ZsForInsomnia/ed2ac2193c29b43b07a56ffb5b55d8fd to your computer and use it in GitHub Desktop.
Save 3ZsForInsomnia/ed2ac2193c29b43b07a56ffb5b55d8fd to your computer and use it in GitHub Desktop.
Vimrc
" 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
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