Skip to content

Instantly share code, notes, and snippets.

@hprobotic
Created April 18, 2020 15:46
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 hprobotic/a3db4ca73a5454a42f14f21f178053b5 to your computer and use it in GitHub Desktop.
Save hprobotic/a3db4ca73a5454a42f14f21f178053b5 to your computer and use it in GitHub Desktop.
" plugins
call plug#begin('~/.config/nvim/plugged')
"colorschemes
Plug 'arcticicestudio/nord-vim'
"airline
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
"navigation
Plug 'nguquen/nerdtree'
Plug 'easymotion/vim-easymotion'
Plug 'christoomey/vim-tmux-navigator'
"javascript
Plug 'yuezk/vim-js'
Plug 'leafgarland/typescript-vim'
Plug 'moll/vim-node'
Plug 'nikvdp/ejs-syntax'
Plug 'maxmellon/vim-jsx-pretty'
"css in js
Plug 'nguquen/vim-styled-components', { 'branch': 'main' }
Plug 'alampros/vim-styled-jsx'
"graphql
Plug 'jparise/vim-graphql'
"ruby
Plug 'vim-ruby/vim-ruby'
Plug 'tpope/vim-rails'
Plug 'tpope/vim-haml'
Plug 'tpope/vim-bundler'
Plug 'kana/vim-textobj-user'
Plug 'nelstrom/vim-textobj-rubyblock'
Plug 'tpope/vim-endwise'
Plug 'thoughtbot/vim-rspec'
Plug 'skywind3000/asyncrun.vim'
"golang
Plug 'fatih/vim-go'
Plug 'jodosha/vim-godebug'
Plug 'towolf/vim-helm'
"protobuf
Plug 'uarun/vim-protobuf'
"swift
Plug 'bumaociyuan/vim-swift'
"smali
Plug 'kelwin/vim-smali'
"terraform
Plug 'hashivim/vim-terraform'
"monitoring
Plug 'wakatime/vim-wakatime'
"Python black formatting
Plug 'axiros/axblack'
" not black related but useful:
autocmd FileType python map <Leader>e Otry:<Esc>j^i<TAB><Esc>oexcept Exception as ex:<CR>print('breakpoint set')<CR>breakpoint()<CR>keep_ctx=True<Esc>^
" defaults:
let g:black_linelength = 88
let g:black_fast = 1
" set appropriately:
let g:black_virtualenv = "~/.pyenv/versions/3.7.6"
" Clean whitespace at saves:
"autocmd BufWritePre * execute ':RemoveWhitespace'
fun! Blackify()
if &ft =~ 'python'
:Black
endif
endfun
" blackify at any write of a python file:
autocmd BufWritePre * call Blackify()
" Using pythonmode? Keep it happy:
let g:pymode_options_max_line_length = 88
let g:pymode_lint_options_pep8 = {'max_line_length': g:pymode_options_max_line_length}
let g:pymode_options_colorcolumn = 1
"editor
Plug 'neoclide/coc.nvim', {'tag': '*', 'branch': 'release'}
Plug 'xabikos/vscode-react'
Plug 'honza/vim-snippets'
Plug 'w0rp/ale'
Plug 'nguquen/vim-shot-f'
Plug 'terryma/vim-multiple-cursors'
Plug 'airblade/vim-gitgutter'
Plug 'tpope/vim-repeat'
Plug 'tpope/vim-surround'
Plug 'scrooloose/nerdcommenter'
Plug 'Raimondi/delimitMate'
Plug 'mbbill/undotree'
Plug 'majutsushi/tagbar'
Plug 'ludovicchabant/vim-gutentags'
Plug 'mattn/emmet-vim'
"Plug 'chaoren/vim-wordmotion'
call plug#end()
" clipboard settings
set clipboard+=unnamedplus
set pastetoggle=<F2>
" color settings
set termguicolors
let g:nord_bold=1
let g:nord_italic=1
let g:nord_underline=1
let g:nord_italic_comments=1
augroup Colors
autocmd!
autocmd ColorScheme nord highlight Folded cterm=italic,bold ctermbg=0 ctermfg=10 guibg=#3B4252 guifg=#5E81AC
autocmd ColorScheme nord highlight CocErrorSign guifg=#BF616A
autocmd ColorScheme nord highlight CocWarningSign guifg=#EBCB8B
autocmd ColorScheme nord highlight CocErrorHighlight guisp=#BF616A gui=undercurl
autocmd ColorScheme nord highlight CocWarningHighlight guisp=#EBCB8B gui=undercurl
autocmd ColorScheme nord highlight fzf1 guifg=#ECEFF4 guibg=#4C566A
autocmd ColorScheme nord highlight fzf2 guifg=#ECEFF4 guibg=#4C566A
autocmd ColorScheme nord highlight fzf3 guifg=#ECEFF4 guibg=#4C566A
augroup END
silent! colorscheme nord
"change VertSpit color of colorscheme `one`
" airline settings
let g:airline_powerline_fonts=1
let g:airline#extensions#tmuxline#enabled = 0
let g:airline#extensions#tabline#enabled = 1
let g:airline_exclude_preview = 1
let g:airline#extensions#tabline#buffer_nr_show = 1
" editor settings
set updatetime=100 "for gitgutter
set number
set relativenumber
set visualbell
set listchars=eol:¬,tab:>·,trail:~,extends:>,precedes:<,space:·
set list
set tabstop=2 shiftwidth=2 expandtab
"let $NVIM_TUI_ENABLE_CURSOR_SHAPE=1
set guicursor=n-v-c:block-Cursor/lCursor-blinkon0,i-ci:ver25-Cursor/lCursor,r-cr:hor20-Cursor/lCursor
"disable automatic comment insertion
au FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o
"let alt 'send' ESC key
let s:printable_ascii = map(range(65, 122), 'nr2char(v:val)')
for s:char in s:printable_ascii
execute "inoremap <A-" . s:char . "> <Esc>" . s:char
endfor
unlet s:printable_ascii s:char
"highlight cursor line
"set cursorline
set splitbelow
set splitright
"set leader key
let mapleader=" "
"disable arrow keys
noremap <Up> <NOP>
noremap <Down> <NOP>
noremap <Left> <NOP>
noremap <Right> <NOP>
inoremap <Up> <NOP>
inoremap <Down> <NOP>
inoremap <Left> <NOP>
inoremap <Right> <NOP>
"bind K to grep word under cursor
nnoremap K :grep! "\b<C-R><C-W>\b"<CR>
"mapping misc keys
let g:gitgutter_map_keys = 0
nnoremap <silent> <Leader>w :w<CR>
nnoremap <silent> <Leader>q :q<CR>
nnoremap <silent> <Leader>x :x<CR>
noremap <silent> <Leader>h <C-W><C-H>
noremap <silent> <Leader>j <C-W><C-J>
noremap <silent> <Leader>k <C-W><C-K>
noremap <silent> <Leader>l <C-W><C-L>
noremap <silent> <leader>u :UndotreeToggle<CR>
noremap <silent> <Leader>re :reg<CR>
noremap <silent> <Leader>p "0p
noremap <silent> <Leader>y :let @0=@*<CR>
noremap <silent> <Leader>ch :noh<CR>
noremap <silent> <Leader>tt :tabnew<CR>
"mapping for quick switch windows
let g:airline_section_c = '%{winnr()}  %<%f%m %#__accent_red#%{airline#util#wrap(airline#parts#readonly(),0)}%#__restore__#'
for i in range(1, 9)
execute 'nnoremap <silent> <Leader>' . i . ' :' . i . 'wincmd w<CR>'
endfor
"Toggle number display
function! NumberToggle()
if(&relativenumber == 1)
set norelativenumber
else
set relativenumber
endif
endfunc
nnoremap <silent> <Leader>nt :call NumberToggle()<cr>
" javascript settings
let g:javascript_plugin_jsdoc = 1
let g:javascript_plugin_ngdoc = 1
let g:javascript_plugin_flow = 1
" NERDTree settings
let NERDTreeShowLineNumbers=1
let NERDTreeShowHidden=1
let NERDTreeAutoDeleteBuffer=1
"open NERDTree automatically when vim starts up on opening a directory
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 | endif
"NerdTreeToggleAndFind
function NerdTreeToggleAndFind()
if &filetype == 'nerdtree' || exists("g:NERDTree") && g:NERDTree.IsOpen() || bufname('%') == ''
:NERDTreeToggle
else
:NERDTreeFind
endif
endfunction
nnoremap <silent> <C-n> :call NerdTreeToggleAndFind()<CR>
" grepprg settings
if executable('rg')
" Use ag over grep
set grepprg=rg\ --vimgrep\ --no-heading
endif
" ale settings
let g:ale_sign_error = '✖'
let g:ale_sign_warning = '⚠'
let g:ale_sign_info = 'ℹ'
let g:airline#extensions#ale#enabled = 1
let g:ale_echo_msg_error_str = 'E'
let g:ale_echo_msg_warning_str = 'W'
let g:ale_echo_msg_format = '[%linter%] %s [%severity%]'
let g:ale_linters = {
\ 'javascript': ['flow', 'eslint'],
\ 'javascriptreact': ['flow', 'eslint'],
\ 'typescript': ['eslint'],
\ 'typescriptreact': ['eslint'],
\ 'java': [],
\}
let g:ale_fixers = {
\ '*': ['remove_trailing_lines', 'trim_whitespace'],
\ 'javascript': ['prettier', 'eslint'],
\ 'javascriptreact': ['prettier', 'eslint'],
\ 'typescript': ['prettier', 'eslint'],
\ 'typescriptreact': ['prettier', 'eslint'],
\ 'css': ['prettier'],
\ 'json': ['prettier'],
\ 'graphql': ['prettier'],
\}
let g:ale_fix_on_save = 1
set signcolumn=yes
" easymotion settings
let g:EasyMotion_do_mapping = 0 "Disable default mappings
let g:EasyMotion_startofline = 0 "keep cursor column when JK motion
let g:EasyMotion_smartcase = 1
map <Leader>f <Plug>(easymotion-bd-w)
nmap <Leader>s <Plug>(easymotion-overwin-f2)
map <Leader>/ <Plug>(easymotion-sn)
map <Leader>n <Plug>(easymotion-next)
map <Leader>N <Plug>(easymotion-prev)
" multiple-cursors settings
let g:multi_cursor_use_default_mapping = 0
let g:multi_cursor_exit_from_insert_mode = 0
let g:multi_cursor_next_key='<C-s>'
let g:multi_cursor_prev_key='<C-p>'
let g:multi_cursor_skip_key='<C-x>'
let g:multi_cursor_quit_key='<Esc>'
" nerdcommenter settings
let NERDSpaceDelims=1
" tagbar settings
nnoremap <silent> <Leader>tb :TagbarToggle<CR>
" gutentags settings
set statusline+=%{gutentags#statusline('[Generating...]')}
let g:gutentags_add_default_project_roots=0
let g:gutentags_project_root = ['.withtags']
let g:gutentags_ctags_exclude=["node_modules"]
" RSpec.vim settings
map <silent> <Leader>sc :call RunCurrentSpecFile()<cr>:copen<cr>
map <silent> <Leader>sn :call RunNearestSpec()<cr>
map <silent> <Leader>sl :call RunLastSpec()<cr>
map <silent> <Leader>sa :call RunAllSpecs()<cr>
let g:rspec_command = "AsyncRun rspec {spec}"
" delimitMate settings
let g:endwise_no_mappings = 1
let delimitMate_expand_cr = 1
let delimitMate_expand_space = 1
"golang settings
let g:go_fmt_command = "goimports"
let g:go_autodetect_gopath = 1
au FileType go let $GOPATH = go#path#Detect()
let g:go_doc_keywordprg_enabled = 0
" coc.nvim
let g:coc_global_extensions = ['coc-css', 'coc-highlight', 'coc-html', 'coc-java', 'coc-json', 'coc-lists', 'coc-snippets', 'coc-tsserver', 'coc-yaml', 'coc-vimlsp', 'coc-svg', 'coc-emmet', 'coc-sh', 'coc-docker']
set hidden
"use <tab> for trigger completion and navigate to the next complete item
function! s:check_back_space() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~ '\s'
endfunction
imap <silent><expr> <TAB>
\ coc#expandableOrJumpable() ? "\<C-r>=coc#rpc#request('doKeymap', ['snippets-expand-jump',''])\<CR>" :
\ pumvisible() ? coc#_select_confirm() :
\ emmet#isExpandable() ? "\<plug>(emmet-expand-abbr)" :
\ <SID>check_back_space() ? "\<TAB>" :
\ coc#refresh()
let g:coc_snippet_next = '<tab>'
inoremap <silent><expr> <c-space> coc#refresh()
inoremap <silent><expr> <C-j> pumvisible() ? "\<C-n>" : "\<C-j>"
inoremap <silent><expr> <C-k> pumvisible() ? "\<C-p>" : "\<C-k>"
imap <silent><expr><CR> pumvisible() ? "\<C-y>" : "\<Plug>delimitMateCR\<Plug>DiscretionaryEnd"
autocmd InsertLeave,CompleteDone * if pumvisible() == 0 | pclose | endif
autocmd FileType css,scss setlocal iskeyword=@,48-57,_,-,?,!,192-255
autocmd FileType json syntax match Comment +\/\/.\+$+
"integrate with airline
let g:airline_section_error = '%{airline#util#wrap(airline#extensions#coc#get_error(),0)}'
let g:airline_section_warning = '%{airline#util#wrap(airline#extensions#coc#get_warning(),0)}'
"don't give |ins-completion-menu| messages.
set shortmess+=c
"Use `[c` and `]c` to navigate diagnostics
nmap <silent> [c <Plug>(coc-diagnostic-prev)
nmap <silent> ]c <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>
function! s:show_documentation()
if (index(['vim','help'], &filetype) >= 0)
execute 'h '.expand('<cword>')
else
call CocAction('doHover')
endif
endfunction
"Remap for rename current word
nmap <leader>rn <Plug>(coc-rename)
" Using CocList
nnoremap <silent> <C-p> :<C-u>CocList files<cr>
nnoremap <silent> <Leader>g :<C-u>CocList grep<cr>
nnoremap <silent> <Leader>o :<C-u>CocList outline<cr>
nnoremap <silent> <Leader>b :<C-u>CocList buffers<cr>
nnoremap <silent> <Leader>[ :<C-u>CocList --normal locationlist<cr>
nnoremap <silent> <Leader>] :<C-u>CocList --normal quickfix<cr>
nnoremap <silent> <Leader>rl :<C-u>CocListResume<cr>
hi CursorLine guibg=#4f5b66
"jsx highlight
autocmd BufNewFile,BufRead *.jsx set filetype=javascript.jsx
autocmd BufNewFile,BufRead *.tsx set filetype=typescript.tsx
highlight! def link jsxComponentName Identifier
highlight! def link jsVariableType Identifier
highlight! def link jsImport Identifier
"emmet
"let g:user_emmet_leader_key=','
hi MatchParen guifg=#f43753 ctermfg=203 guibg=NONE ctermbg=NONE gui=bold cterm=bold
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment