Created
August 28, 2020 12:00
-
-
Save LEvinson2504/c19c29b842a9683c2548c18a584ca5d5 to your computer and use it in GitHub Desktop.
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 relativenumber | |
set nu rnu | |
set tabstop=2 softtabstop=2 expandtab shiftwidth=2 smarttab autoindent smartindent | |
set cursorline | |
set encoding=utf-8 | |
call plug#begin('~/.vim/plugged') | |
Plug 'morhetz/gruvbox' | |
Plug 'rakr/vim-one' | |
Plug 'arcticicestudio/nord-vim' | |
Plug 'haishanh/night-owl.vim' | |
Plug 'preservim/nerdtree' | | |
\ Plug 'Xuyuanp/nerdtree-git-plugin' | |
Plug 'tiagofumo/vim-nerdtree-syntax-highlight' | |
Plug 'prettier/vim-prettier', { 'do': 'yarn install' } | |
Plug 'neoclide/coc.nvim', {'branch': 'release'} | |
"Plug 'pangloss/vim-javascript' | |
Plug 'sheerun/vim-polyglot' | |
"Plug 'leafgarland/typescript-vim' | |
Plug 'styled-components/vim-styled-components', { 'branch': 'main' } | |
"Plug 'peitalin/vim-jsx-typescript' | |
Plug 'preservim/nerdcommenter' | |
Plug 'airblade/vim-gitgutter' | |
Plug 'vim-airline/vim-airline' | |
Plug 'vim-airline/vim-airline-themes' | |
Plug 'tpope/vim-fugitive' | |
Plug 'tpope/vim-surround' | |
Plug 'ctrlpvim/ctrlp.vim' | |
Plug 'ryanoasis/vim-devicons' | |
call plug#end() | |
" Setting leaders | |
let mapleader = "," | |
let maplocalleader = "\\" | |
" File settings | |
autocmd BufWritePre,BufRead *.html :normal gg=G | |
au BufNewFile,BufRead *.py | |
\ set tabstop=4 | | |
\ set softtabstop=4 | | |
\ set shiftwidth=4 | | |
\ set textwidth=79 | | |
\ set expandtab | | |
\ set autoindent | | |
\ set fileformat=unix | |
"autocmd BufWritePre *js,*ts,*jsx,*tsx,*.graphql,*.json :Prettier | |
autocmd BufEnter *.{js,jsx,ts,tsx} :syntax sync fromstart | |
autocmd BufLeave *.{js,jsx,ts,tsx} :syntax sync clear | |
let g:prettier#autoformat_require_pragma = 0 | |
let g:ctrlp_custom_ignore = '\v[\/](node_modules|target|dist)|(\.(swp|ico|git|svn))$' | |
let g:ctrlp_match_window = 'top,order:ttb' | |
" Prettier or ESLint | |
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 | |
command! -nargs=0 Prettier :call CocAction('runCommand', 'prettier.formatFile') | |
" Vimrc bindings | |
nnoremap <leader>ev :vsplit $MYVIMRC<cr> | |
nnoremap <leader>sv :source $MYVIMRC<cr> | |
nnoremap <leader>" viw<esc>a"<esc>bi"<esc>lel | |
onoremap L $ | |
onoremap H ^ | |
nnoremap L $ | |
nnoremap H ^ | |
" Status bar | |
" let g:airline_powerline_fonts = 1 | |
" Nerdtree settings | |
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 | exe 'cd '.argv()[0] | endif | |
autocmd VimEnter * wincmd p | |
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif | |
" Nerdtree select current open file: | |
" 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() | |
nmap <Leader>r :NERDTreeFocus<cr>R<c-w><c-p> | |
" Git gutter | |
set signcolumn=yes | |
nmap ]h <Plug>(GitGutterNextHunk) "same as default | |
nmap [h <Plug>(GitGutterPrevHunk) "same as default | |
nmap ghs <Plug>(GitGutterStageHunk) | |
nmap ghu <Plug>(GitGutterUndoHunk) | |
let g:gitgutter_sign_added = '✚' | |
let g:gitgutter_sign_modified = '✹' | |
let g:gitgutter_sign_removed = '-' | |
let g:gitgutter_sign_removed_first_line = '-' | |
let g:gitgutter_sign_modified_removed = '-' | |
map <C-n> :NERDTreeToggle<CR> | |
" Add a few bindings for me | |
inoremap jk <esc> | |
" j/k will move virtual lines (lines that wrap) | |
noremap <silent> <expr> j (v:count == 0 ? 'gj' : 'j') | |
noremap <silent> <expr> k (v:count == 0 ? 'gk' : 'k') | |
nnoremap <leader>n :bn<CR> | |
nnoremap <leader>m :bp<CR> | |
" coc config | |
let g:coc_global_extensions = [ | |
\ 'coc-tsserver', | |
\ 'coc-json', | |
\ 'coc-css', | |
\ 'coc-python' | |
\ ] | |
" documentation hover | |
nnoremap <silent> K :call CocAction('doHover')<CR> | |
function! ShowDocIfNoDiagnostic(timer_id) | |
if (coc#util#has_float() == 0) | |
silent call CocActionAsync('doHover') | |
endif | |
endfunction | |
function! s:show_hover_doc() | |
call timer_start(400, 'ShowDocIfNoDiagnostic') | |
endfunction | |
autocmd CursorHoldI * :call <SID>show_hover_doc() | |
autocmd CursorHold * :call <SID>show_hover_doc() | |
autocmd CursorHoldI * :call <SID>show_hover_doc() | |
autocmd CursorHold * :call <SID>show_hover_doc() | |
function! s:show_documentation() | |
if (index(['vim','help'], &filetype) >= 0) | |
execute 'h '.expand('<cword>') | |
else | |
call CocAction('doHover') | |
endif | |
endfunction | |
" tab for trigger completion with characters ahead and navigate. | |
" NOTE: Use command ':verbose imap <tab>' to make sure tab is not mapped by | |
" other plugin before putting this into your config. | |
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>" | |
" Coc key mapping | |
nmap <silent> gd <Plug>(coc-definition) | |
nmap <silent> gy <Plug>(coc-type-definition) | |
nmap <silent> gr <Plug>(coc-references) | |
nmap <silent> [g <Plug>(coc-diagnostic-prev) | |
nmap <silent> ]g <Plug>(coc-diagnostic-next) | |
nnoremap <silent> <space>d :<C-u>CocList diagnostics<cr> | |
nnoremap <silent> <space>s :<C-u>cocList -I symbols<cr> | |
nmap <leader>do <Plug>(coc-codeaction) | |
nmap <leader>rn <Plug>(coc-rename) | |
" nord customisations | |
let g:nord_italic_comments = 1 | |
set termguicolors | |
colorscheme one | |
let g:airline_theme='onedark' | |
set background=dark | |
highlight Visual cterm=reverse ctermbg=NONE |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment