Created
April 24, 2019 08:18
-
-
Save khanghh/2ef715c9a5aaa0366c17c33fb724fe46 to your computer and use it in GitHub Desktop.
My vim config
This file contains hidden or 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
" Plugin {{{ | |
call plug#begin('~/.vim/plugged') | |
Plug 'christoomey/vim-tmux-navigator' | |
Plug 'scrooloose/nerdtree' | |
Plug 'jistr/vim-nerdtree-tabs' | |
Plug 'Xuyuanp/nerdtree-git-plugin' | |
Plug '/home/linuxbrew/.linuxbrew/opt/fzf' | |
Plug 'junegunn/fzf.vim' | |
Plug 'vim-airline/vim-airline' | |
Plug 'vim-airline/vim-airline-themes' | |
Plug 'tpope/vim-fugitive' | |
Plug 'sodapopcan/vim-twiggy' | |
Plug 'godlygeek/tabular' | |
Plug 'plasticboy/vim-markdown' | |
Plug 'tpope/vim-surround' | |
Plug 'w0rp/ale' | |
Plug 'editorconfig/editorconfig-vim' | |
Plug 'pangloss/vim-javascript' | |
Plug 'airblade/vim-gitgutter' | |
Plug 'jiangmiao/auto-pairs' | |
Plug 'scrooloose/nerdcommenter' | |
Plug 'ryanoasis/vim-devicons' | |
Plug 'tiagofumo/vim-nerdtree-syntax-highlight' | |
" Plugin colorscheme {{{ | |
Plug 'khang-hoang/vim-code-dark' | |
Plug 'dracula/vim', { 'as': 'dracula' } | |
" }}} | |
call plug#end() | |
" }}} | |
" General {{{ | |
set encoding=UTF-8 | |
set shell=/bin/sh | |
set nocompatible | |
set nofoldenable | |
filetype on " detects file type | |
filetype plugin on " load plugin for this file type | |
filetype indent on " load indent rule for this file type | |
set timeoutlen=1000 ttimeoutlen=0 " exit visual mode without delay | |
set guicursor=a:blinkon100 " make the cursor blinking | |
" }}} | |
" UI {{{ | |
syntax on " enable syntax highlighting | |
set expandtab " use space | |
set tabstop=4 " set tab width | |
set shiftwidth=4 " width of auto-indent | |
set relativenumber " show relative line number | |
set wrap " allow wrap lines | |
set linebreak " breaks lines at word | |
set ruler " show row and column ruler information | |
" ========================= colorscheme ====================== | |
colorscheme codedark " theme | |
"colorscheme dracula " theme | |
" }}} | |
" TMUX {{{ | |
if exists('$TMUX') | |
let &t_SI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=1\x7\<Esc>\\" | |
let &t_EI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=0\x7\<Esc>\\" | |
else | |
let &t_SI = "\<Esc>]50;CursorShape=1\x7" | |
let &t_EI = "\<Esc>]50;CursorShape=0\x7" | |
endif | |
" }}} | |
" FZF {{{ | |
" Customize fzf colors to match your color scheme | |
let g:fzf_colors = | |
\ { 'fg': ['fg', 'Normal'], | |
\ 'bg': ['bg', 'Normal'], | |
\ 'hl': ['fg', 'Comment'], | |
\ 'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'], | |
\ 'bg+': ['bg', 'CursorLine', 'CursorColumn'], | |
\ 'hl+': ['fg', 'Statement'], | |
\ 'info': ['fg', 'PreProc'], | |
\ 'border': ['fg', 'Ignore'], | |
\ 'prompt': ['fg', 'Conditional'], | |
\ 'pointer': ['fg', 'Exception'], | |
\ 'marker': ['fg', 'Keyword'], | |
\ 'spinner': ['fg', 'Label'], | |
\ 'header': ['fg', 'Comment'] } | |
" Enable per-command history. | |
let g:fzf_history_dir = '~/.local/share/fzf-history' | |
" Open files in horizontal split | |
nnoremap <silent> <Leader>s :call fzf#run(fzf#wrap({ | |
\ 'down': '40%', | |
\ 'sink': 'split' }))<CR> | |
" Open files in vertical horizontal split | |
nnoremap <silent> <Leader>v :call fzf#run(fzf#wrap({ | |
\ 'right': winwidth('.') / 2, | |
\ 'sink': 'vsplit' }))<CR> | |
" Insert mode completion | |
imap <c-x><c-k> <plug>(fzf-complete-word) | |
imap <c-x><c-f> <plug>(fzf-complete-path) | |
imap <c-x><c-j> <plug>(fzf-complete-file-ag) | |
imap <c-x><c-l> <plug>(fzf-complete-line) | |
" }}} | |
" NERDTree {{{ | |
" open NERDTree automatically | |
"autocmd vimenter * NERDTree | |
" open NERDTree automatically if no file is specified | |
autocmd StdinReadPre * let s:std_in=1 | |
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif | |
" open NERDTree at current directory | |
autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe 'NERDTree' argv()[0] | wincmd p | ene | exe 'cd '.argv()[0] | endif | |
" Ctrl-n to toggle NERDTree | |
map <C-n> :NERDTreeToggle<CR> | |
" quit vim if no file is open | |
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif | |
" open NERDTree on new tab | |
autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | let g:nerdtree_tabs_open_on_console_startup=1 | |
" git ignore | |
"let g:NERDTreeShowIgnoredStatus = 1 | |
let g:NERDTreeIndicatorMapCustom = { | |
\ "Modified" : "✹", | |
\ "Staged" : "✚", | |
\ "Untracked" : "✭", | |
\ "Renamed" : "➜", | |
\ "Unmerged" : "═", | |
\ "Deleted" : "✖", | |
\ "Dirty" : "✗", | |
\ "Clean" : "✔︎", | |
\ 'Ignored' : '☒', | |
\ "Unknown" : "?" | |
\ } | |
" NERD commenter | |
let NERDDefaultAlign = 'left' | |
nmap <C-_> <Plug>NERDCommenterToggle | |
vmap <C-_> <Plug>NERDCommenterToggle | |
vmap / <Plug>NERDCommenterToggle | |
" NERDTree icons and highlights | |
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' | |
"let g:NERDTreeFileExtensionHighlightFullName = 1 | |
"let g:NERDTreeExtensionHighlightColor = {} " this line is needed to avoid error | |
"let g:NERDTreeExtensionHighlightColor['css'] = s:blue " sets the color of css files to blue | |
let g:NERDTreeExactMatchHighlightFullName = 1 | |
let g:NERDTreeExactMatchHighlightColor = {} " this line is needed to avoid error | |
let g:NERDTreeExactMatchHighlightColor['.gitignore'] = s:git_orange " sets the color for .gitignore files | |
"let g:NERDTreePatternMatchHighlightFullName = 1 | |
"let g:NERDTreePatternMatchHighlightColor = {} " this line is needed to avoid error | |
"let g:NERDTreePatternMatchHighlightColor['.*_spec\.rb$'] = s:rspec_red " sets the color for files ending with _spec.rb | |
" directory hightlight | |
let g:NERDTreeHighlightFolders = 1 " enables folder icon highlighting using exact match | |
let g:NERDTreeHighlightFoldersFullName = 1 " highlights the folder name | |
let g:WebDevIconsUnicodeDecorateFolderNodes = 1 | |
let g:DevIconsEnableFoldersOpenClose = 1 | |
" hide arrow NERDTree | |
let g:NERDTreeDirArrowExpandable = "\u00a0" | |
let g:NERDTreeDirArrowCollapsible = "\u00a0" | |
" }}} | |
" Vim-Airline {{{ | |
let g:airline_powerline_fonts = 1 | |
let g:airline#extensions#tabline#enabled = 1 | |
let g:airline#extensions#tabline#show_buffers = 0 | |
" }}} | |
" Git-Gutter {{{ | |
let g:gitgutter_override_sign_column_highlight = 0 | |
hi link GitGutterAdd GitDiffAdd | |
hi link GitGutterChange GitDiffChange | |
hi link GitGutterDelete GitDiffDelete | |
hi link GitGutterChangeDelete GitDiffDelete | |
set updatetime=500 | |
" }}} | |
" ALE {{{ | |
"nmap <silent> <C-n> <Plug>(ale_next_wrap) | |
let g:ale_completion_enabled = 1 | |
let g:ale_completion_delay = 1000 | |
let g:ale_sign_error = '!' | |
let g:ale_sign_warning = '-' | |
let g:ale_fix_on_save = 1 | |
let g:airline#extensions#ale#enabled = 1 | |
hi link ALEErrorSign ErrorMsg | |
hi link ALEError Error | |
let g:ale_linters = { | |
\ 'javascript': ['tsserver', 'eslint'], | |
\ 'typescript': ['tsserver', 'eslint'], | |
\ 'c': ['gcc'], | |
\ 'cpp': ['g++'] | |
\} | |
let g:ale_fixers = { | |
\ 'javascript': ['eslint'], | |
\ 'typescript': ['eslint'] | |
\} | |
" }}} | |
" Search {{{ | |
set hlsearch " highlight all search results | |
set ignorecase " ignore case-sensitive | |
set incsearch " incremental searching | |
"set showmatch " blinks "[,{,(" when type "),},]" | |
nnoremap \c :noh<return> " use key "\" turn off search highlight | |
let s:is_cmdline_open = 0 | |
function! s:cmdline(key) | |
if a:key ==# ':' | |
if !s:is_cmdline_open | |
let &lines-=1 | |
let s:is_cmdline_open = 1 | |
redraw | |
endif | |
else | |
if s:is_cmdline_open | |
let &lines+=1 | |
let s:is_cmdline_open = 0 | |
endif | |
endif | |
return a:key | |
endfunction | |
"nnoremap <expr><silent> : <sid>cmdline(':') | |
"nnoremap <expr> : <sid>cmdline(':') | |
"cnoremap <expr><silent> <cr> <sid>cmdline("\<cr>gv") | |
"cnoremap <expr><silent> <esc> <sid>cmdline("\<esc>gv") | |
"cnoremap <expr><silent> <C-c> <sid>cmdline("\<C-c>gv") | |
cnoremap <expr> <esc> mode()=='v' ? "\<esc>gv" : "\<esc>" | |
"nnoremap <silent> <C-h> <sid>set lines+=1 | |
" }}} | |
" vim:foldmethod=marker:foldlevel=0 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment