ShawnRong
11/28/2017 - 1:25 AM

.vimrc(vim settings)

.vimrc(vim settings)


" so ~/.vim/plugins.vim

syntax enable
set backspace=indent,eol,start                                  "Make backspace behave like every other editor.
let mapleader=','                                    		"The default leader is \, but a comma is much better.
set number 							"Let's activate line numbers.
set linespace=10						"Maccim-specific line-height"
set noerrorbells visualbell t_vb=                               "No bell
set shiftwidth=4                                                " number of spaces to use for autoindenting
set shiftround                                                  " use multiple of shiftwidth when indenting with '<' and '>'
set autoindent                                                  " always set autoindenting on
set copyindent                                                  " copy the previous indentation on autoindenting
set autowriteall                                                "Automatically write the file when switching buffers.
set complete=.,w,b,u                                            "Set Autocomplete

set tabstop=8
set expandtab
set softtabstop=4
set shiftwidth=4
set ignorecase                                                  "Ignore case when searching"
set smartcase                                                   "Ignore case if searching pattern is all lowercase"
"-----------Visuals--------------"
"Theme set
colorscheme onedark
set background=dark
let g:onedark_termcolors=256

"----------Custom----------------"

" Swap files out of the project root
set backupdir=~/.vim/backup//
set directory=~/.vim/swap//
"Easy escaping to normal model
inoremap jj <esc>
set guioptions-=e                                               "Delate gui tabs

set guioptions-=l
set guioptions-=L
set guioptions-=r
set guioptions-=R

"Fake a custom left padding for each window.
"hi LineNr guibg=bg
"set foldcolumn=2
"hi foldcolum guibg=bg

"Get rid of ugly split borders.
hi vertsplit guifg=bg guibg=bg

" Create/edit file in the current directory
nmap :ed :edit %:p:h/

" Open splits
nmap vs :vsplit<cr>
nmap sp :split<cr>

" Down is really the next line
nnoremap j gj
nnoremap k gk

"-----------Search---------------"
set hlsearch
set incsearch

"-----------Split Management-------"
set splitbelow
set splitright

"Moving between window
nmap <C-J> <C-W><C-J>
nmap <C-K> <C-W><C-K>
nmap <C-H> <C-W><C-H>
nmap <C-L> <C-W><C-L>

" Quickly go forward or backward to buffer
nmap :bp :BufSurfBack<cr>
nmap :bn :BufSurfForward<cr>

"-----------Mappings---------------"

"Make it easy to edit the Vimrc file.
nmap <Leader>ev :tabedit $MYVIMRC<cr>
"Remove the highlight search"
nmap <Leader><space> :nohlsearch<cr>

nmap <Leader>f :tag<space>

"Add code snippet setting"
nmap <Leader>es :e ~/.vim/snippets/
"-----------Plugins----------------"
"-----------vim-polyglot-----------"
let g:polyglot_disabled = ['yaml']
"----------NERDTree plugins--------"
"shortct to open NERDtred
nmap <Leader>n :NERDTreeToggle<cr>
let NERDTreeAutoDeleteBuffer=1
"display git information
let g:NERDTreeIndicatorMapCustom = {
    \ "Modified"  : "✹",
    \ "Staged"    : "✚",
    \ "Untracked" : "✭",
    \ "Renamed"   : "➜",
    \ "Unmerged"  : "═",
    \ "Deleted"   : "✖",
    \ "Dirty"     : "✗",
    \ "Clean"     : "✔︎",
    \ "Unknown"   : "?"
    \ }

"--------CtrlP Plugins------------"
"open file
map <Leader>p :CtrlP<cr>
"open buffer file
noremap <Leader>o :CtrlPBuffer<cr>
"open recent file
noremap <Leader>e :CtrlPMRU<cr>
"open recent file
map <Leader>r :CtrlBufTag<cr>
"exclude file
set wildignore+=*/tmp/*,*.so,*.swp,*.zip     " MacOSX/Linux
let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$'
let g:ctrlp_mruf_max=500
let g:ctrlp_match_window_bottom=1

"--------Rainbow_parenthese-------"
let g:rbpt_colorpairs = [
    \ ['brown',       'RoyalBlue3'],
    \ ['Darkblue',    'SeaGreen3'],
    \ ['darkgray',    'DarkOrchid3'],
    \ ['darkgreen',   'firebrick3'],
    \ ['darkcyan',    'RoyalBlue3'],
    \ ['darkred',     'SeaGreen3'],
    \ ['darkmagenta', 'DarkOrchid3'],
    \ ['brown',       'firebrick3'],
    \ ['gray',        'RoyalBlue3'],
    \ ['black',       'SeaGreen3'],
    \ ['darkmagenta', 'DarkOrchid3'],
    \ ['Darkblue',    'firebrick3'],
    \ ['darkgreen',   'RoyalBlue3'],
    \ ['darkcyan',    'SeaGreen3'],
    \ ['darkred',     'DarkOrchid3'],
    \ ['red',         'firebrick3'],
    \ ]
"-----------Vim-airline------------"
if !exists('g:airline_symbols')
    let g:airline_symbols = {}
endif
"let g:airline_left_sep = '▶'
"let g:airline_left_alt_sep = '❯'
"let g:airline_right_sep = '◀'
"let g:airline_right_alt_sep = '❮'
let g:airline_symbols.linenr = '¶'
let g:airline_symbols.branch = '⎇'
set noshowmode
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#buffer_nr_show = 1
let g:airline_theme='onedark'
set laststatus=2
let g:airline#extensions#branch#enabled = 1
let g:airline#extensions#tabline#show_tab_nr = 0
let g:airline#extensions#tabline#show_tab_type = 1
let g:airline#extensions#tabline#buffers_label = 'b'
let g:airline#extensions#tabline#tabs_label = 't'


"------------Syntastic-------------"

nnoremap <Leader>w :Errors<cr>
let g:syntastic_html_checkers = ['eslint', 'eslint-plugin-vue']

"-----------TagBar-----------------"

nmap <Leader>t :TagbarToggle<cr>
" 启动时自动focus
"let g:tagbar_autofocus = 1
"-----------YouCompleteMe Plugin---"
"file type black list ycm
" 设置在下面几种格式的文件上屏蔽ycm
 let g:ycm_filetype_blacklist = {
    \ 'tagbar' : 1,
    \ 'qf' : 1,
    \ 'notes' : 1,
    \ 'markdown' : 1,
    \ 'unite' : 1,
    \ 'text' : 1,
    \ 'vimwiki' : 1,
    \ 'pandoc' : 1,
    \ 'infolog' : 1,
    \ 'mail' : 1
    \}
"key word trigger
let g:ycm_semantic_triggers =  {
    \ 'c' : ['->', '.', ' ', '(', '[', '&'],
    \ 'objc' : ['->', '.', 're!\[[_a-zA-Z]+\w*\s', 're!^\s*[^\W\d]\w*\s',
    \           're!\[.*\]\s'],
    \ 'ocaml' : ['.', '#'],
    \ 'cpp,objcpp' : ['->', '.', '::'],
    \ 'perl' : ['->'],
    \ 'php' : ['->', '::'],
    \ 'cs,java,javascript,typescript,d,python,perl6,scala,vb,elixir,go' : ['.'],
    \ 'ruby' : ['.', '::'],
    \ 'lua' : ['.', ':'],
    \ 'erlang' : [':'],
    \ }
let g:ycm_cache_omnifunc = 1
let g:ycm_python_binary_path = '/usr/bin/python3'
let g:ycm_key_list_select_completion = ['<TAB>', '<Down>']
"-----------Auto-Commands----------"

"Automatically source the Vimrc file on save.
augroup autosourcing
	autocmd!
	autocmd BufWritePost .vimrc source %
augroup END

if exists('$ITERM_PROFILE')
  if exists('$TMUX')
    let &t_SI = "\<Esc>[3 q"
    let &t_EI = "\<Esc>[0 q"
  else
    let &t_SI = "\<Esc>]50;CursorShape=1\x7"
    let &t_EI = "\<Esc>]50;CursorShape=0\x7"
  endif
end
"----------Iterm2 cursor issue-----"
" Change cursor shape between insert and normal mode in iTerm2.app
"if $TERM_PROGRAM =~ "iTerm"
    "let &t_SI = "\<Esc>]50;CursorShape=1\x7" " Vertical bar in insert mode
        "let &t_EI = "\<Esc>]50;CursorShape=0\x7" " Block in normal mode
    "endif

""---------Tmux cursor shape--------"        
"if exists('$ITERM_PROFILE')
    "if exists('$TMUX')
        "let &t_SI = "\<Esc>[3 q"
        "let &t_EI = "\<Esc>[0 q"
    "else
        "let &t_SI = "\<Esc>]50;CursorShape=1\x7"
        "let &t_EI = "\<Esc>]50;CursorSgape=0\x7"
    "endif
"end
""---------Tmux copy indentation at pasting--"
"function! WrapForTmux(s)
    "if !exists('$TMUX')
        "return a:s
    "endif
    
    "let tmux_start = "\<Esc>Ptmux;"
    "let tmux_end = "\<Esc>\\"

    "return tmux_start . substitute(a:s, "\<Esc>", "\<Esc>\<Esc>", 'g') . tmux_end
"endfunction

"let &t_SI .= WrapForTmux("\<Esc>[?2004h")
"let &t_EI .= WrapForTmux("\<Esc>[?2004l")

"function! XTermPasteBegin()
    "set pastetoggle=<Esc>[201~
    "set paste 
    "return ""
"endfunction
"inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()
"Notes and Tips
"- Press 'zz' to instntly center the line where the cursor is located.