andrwj
11/10/2017 - 4:11 AM

vimrc

vimrc

"Initialization {{{
    set nocompatible
    let mapleader = '\'
" }}}

"Loading Vundle Plugins: {{{
    filetype on
    set rtp+=~/.vim/bundle/Vundle.vim
    set runtimepath+=~/.vim/bundle/ctrlp.vim
    set runtimepath+=~/.vim/bundle/dart-vim-plugin
    call vundle#begin()

    Plugin 'gmarik/Vundle.vim'
    "Plugin 'Shougo/denite.vim'              "unite replacement but needs python3
    "Plugin 'Shougo/unite.vim'               "vimfiler.vim에 필요
    "Plugin 'Shougo/vimfiler.vim'            "nerdtree alternative
    "Plugin 'Shougo/neossh.vim'
    Plugin 'shougo/vimproc'
    Plugin 'shougo/vimshell'
    "Plugin 'christoomey/vim-tmux-navigator'
    "Plugin 'dart-lang/dart-vim-plugin'
    "Plugin 'edkolev/promptline.vim'
    "Plugin 'edkolev/tmuxline.vim'
    "Plugin 'jmcantrell/vim-virtualenv'
    Plugin 'mattn/emmet-vim'                 "https://github.com/mattn/emmet-vim
    "Plugin 'mklabs/grunt.vim'               "https://github.com/mklabs/grunt.vim
    "Plugin 'tpope/vim-scriptease'           "https://github.com/tpope/vim-scriptease
    "Plugin 'ujihisa/vimshell-ssh'
    "Plugin 'vim-pandoc/vim-pandoc'
    "Plugin 'vim-pandoc/vim-pandoc-syntax'
    "Plugin 'vimrepress'
    "Plugin 'vimwiki/vimwiki'               "몇가지 수정을 위해 fork 하였다
    "Plugin 'xolox/vim-misc'                 "required by vim-notes.git
    "Plugin 'xolox/vim-notes.git'
    "Plugin 'othree/eregex.vim'
    "Plugin 'terryma/vim-expand-region'         "그닥 효과적인지 모르겠다..
    "Plugin 'mattn/flappyvird-vim'
    "Plugin 'idanarye/vim-merginal'             "manage Git branches
    "Plugin  'zoeesilcock/vim-caniuse'
    "Plugin 'gilligan/vim-lldb'
    "Plugin 'Zuckonit/vim-airline-todo'
    "Plugin 'junegunn/seoul256.vim'
    "Plugin 'sk1418/HowMuch'                    "수식계산
    "Plugin 'flazz/vim-colorschemes'
    "Plugin 'biskark/vim-ultimate-colorscheme-utility'
    "Plugin 'altercation/vim-colors-solarized'
    Plugin 'dracula/vim'                         "Darducla theme
    "Plugin 'drmikehenry/vim-fixkey/'            "매크로와 같이 쓸때 주의
    "Plugin 'matze/vim-move'                     "현재 라인을 위/아래로 이동
    "Plugin 'mattboehm/vim-unstack'              "Parse stack traces or quickfix entries and open the result in vim splits
    "Plugin 'justinmk/vim-gtfo'                  "현재 파일이나 폴더를 터미널이나 파인더로 열기 (got - terminal, gof - finder)
    "Plugin '29decibel/vim-stringify'            "라인을 싱글/더블 쿼트로 연결해서 문자열로 만들어줌
    Plugin 'Lokaltog/vim-easymotion'            "'/' - (search)키맵핑
    "Plugin 'Raimondi/delimitMate'
    "Plugin 'SirVer/ultisnips'
    "Plugin 'Valloric/YouCompleteMe'
    Plugin 'andrwj/pebble-vim-syntax'
    "Plugin 'airblade/vim-gitgutter'
    "Plugin 'andrwj/vimwiki'
    "Plugin 'benmills/vimux.git'                 "Interactive with tmux
    "Plugin 'bling/vim-airline'
    "Plugin 'paranoida/vim-airlineish'           "Theme for vim-airlin
    "Plugin 'dhruvasagar/vim-table-mode'
    "Plugin 'fatih/vim-go'
    "Plugin 'fatih/molokai'
    "Plugin 'gregsexton/gitv'
    "Plugin 'groenewege/vim-less'
    "Plugin 'honza/vim-snippets'
    Plugin 'Mizuchi/vim-ranger'                 "File Manager <C-k><C-b>
    "Plugin 'jelera/vim-javascript-syntax'
    "Plugin 'marijnh/tern_for_vim'              "JavaScript completer
    "Plugin 'othree/javascript-libraries-syntax.vim'
    Plugin 'ctrlpvim/ctrlp.vim'
    Plugin 'tacahiroy/ctrlp-funky'
    Plugin 'sgur/ctrlp-extensions.vim'
    Plugin 'jasoncodes/ctrlp-modified.vim'
    Plugin 'kien/rainbow_parentheses.vim'
    Plugin 'lokikl/vim-ctrlp-ag'
    Plugin 'fisadev/vim-ctrlp-cmdpalette'     "Command palette like Sublime Text
    "Plugin 'tacahiroy/ctrlp-ssh'              "tmux를 실행한 상태여야함
    "Plugin 'klen/python-mode'
    "Plugin 'nvie/vim-flake8'
    "Plugin 'majutsushi/tagbar'
    "Plugin 'mattn/gist-vim'
    "Plugin 'mattn/webapi-vim'                  "An Interface to WEB APIs.
    Plugin 'mhinz/vim-signify'                 "Show a VCS diff using Vim's sign column.
    "vim-node:Tools and environment to make Vim superb for developing with Node.js. Like Rails.vim for Node.
    "Plugin 'moll/vim-node'
    "Plugin 'myhere/vim-nodejs-complete'        "omnifunc for nodejs (불편하다)
    Plugin 'godlygeek/tabular'                  "tabular vim-markdown은 같이 설정되야 함
    Plugin 'plasticboy/vim-markdown'           "pandoc을 대신함
    "Plugin 'scrooloose/nerdtree'
    "Plugin 'Xuyuanp/nerdtree-git-plugin'
    "Plugin 'scrooloose/nerdcommenter'
    "Plugin 'scrooloose/syntastic'
    Plugin 'szw/vim-maximizer'              "<F3> to maximize Tab/Window
    Plugin 'terryma/vim-multiple-cursors'   "동시에 바꾸기 <C-n> (i.e. Sublime Text CMD-D)
    Plugin 'tpope/vim-fugitive'             "Git wrapper so awesome
    "Plugin 'tpope/vim-haml'                 "Vim runtime files for Haml, Sass, and SCSS
    "Plugin 'tpope/vim-repeat'
    "Plugin 'tpope/vim-surround.git'         "문장/구절을 둘러싼 인용부호를 바꿈: cs"'
    "Plugin 'guns/xterm-color-table.vim'
    "Plugin 'junegunn/limelight.vim'        "<F11> - Limelight [0.0 ~ 1.0]
    Plugin 'othree/html5.vim'
    "Plugin 'toyamarinyon/vim-swift'         "Swift programming language
    "Plugin 'burnettk/vim-angularburnettk/vim-angular'           "https://github.com/burnettk/vim-angular
    Plugin 'jeetsukumaran/vim-markology'    "visualizing marks
    Plugin 'ap/vim-buftabline'               "Tab 형태처럼 Buffer 목록을 표시
    Plugin 't9md/vim-choosewin'             "land to window you choose like tmux's 'display-pane' keymap: -
    "Plugin 'itchyny/calendar.vim'
    "Plugin 'junegunn/goyo.vim'
    "Plugin 'duff/vim-scratch'               "Scratch buffer
    "Plugin 'mhinz/vim-startify'
    Plugin 'gorkunov/smartpairs.vim'        "press v .. v.. v .. and it extends
    "Plugin 'Rykka/riv.vim'                  "reStructedText
    "Plugin 'Rykka/clickable.vim'            "riv plugin
    "Plugin 'ekalinin/Dockerfile.vim'
    Plugin 'tomtom/tcomment_vim'
    Plugin 'nathanaelkane/vim-indent-guides' "들여쓰기 가이드라인 표시
    "Plugin 'tpope/vim-fireplace'           			 "Clojure REPL for vim
    "Plugin 'kovisoft/slimv' 								 "Superior Lisp Interaction Mode for Vim
    "Plugin 'leafgarland/typescript-vim' 		 "Typescript 
    Plugin 'Quramy/tsuquyomi' 							 "TypeScript for vim

    call vundle#end()            " required
    filetype plugin indent on    " required
" }}}

"Global Settings: {{{
    "solarized 테마 토글
    "call togglebg#map("<F5>")
    scriptencoding utf-8
    set nobackup
    set nowritebackup
    set swapfile
    set backupdir=~/tmp
    set cursorline
    set backspace=indent,eol,start
    " set virtualedit=onemore     "줄끝으로 커서 이동가능하게
    set number
    set showmatch
    set hlsearch                  "파일 내용이 클 경우, 검색할 때 시간끄는 요인이 된다
    set incsearch
    set ignorecase
    set smartcase
    set wildmenu
    set wildmode=list:longest,full
    set completeopt=preview,longest,menu
    set directory=/tmp
    "set autochdir                 "편집하는 파일이 있는 폴더위치로 작업폴더 위치를 자동으로 변경
    let &titlestring = @% " 탭제목에 경로제외하고 파일명만 표시
    "let &titlestring = expand('%:p') " 탭제목에 전체 경로표시할 떄
    set title
    set titleold=""

    set cmdheight=1 " 명령입력창 높이
    set shell=/usr/local/bin/bash

    " set ts=4 sts=4 sw=4 expandtab
    set tabstop=2
    set softtabstop=2
    set shiftwidth=2
    set expandtab
    set history=1000
    set splitright
    runtime! ftplugin/man.vim   "vim을 매뉴얼뷰어로 지정
    set hidden
    set encoding=utf-8
    set ruler
    set showcmd
    set showmode
    set showmatch
    set matchtime=2
    set ambiwidth=single        "show whitespace characters
		set autoindent

    "Section: Folding {{{
        set foldmethod=marker
        set nofoldenable
        set foldlevel=0
    "}}}

    "Section:Clickable {{{
        set ttyfast
        set ttymouse=xterm2
        set mouse=a
        set mousehide   "타이핑하는 동안 마우스 숨김
    ""}}}

    syntax on

    if has("gui_running")
        "set guifont=Source\ Code\ Pro\ for\ Powerline:h17
        set guifont=Hermit:h16
        set background=dark
        set cursorcolumn
    else
        set background=dark
    endif

    "ctags 파일 참조위치를 편지중인 파일이 위치한 폴더에서 먼처 찾고 상위폴더로 옮겨가면서 찾는다 (need +autochdir)
    "공백없이 comman(,)로 항목구분
    "set tags=./tags;

    " Powerline symbols: ⮂ ⮃ ⮀ ⮁ ⭤·»¬
    set laststatus=2

    "set ambiwidth=double
    set fillchars+=stl:\ ,stlnc:\
    set pastetoggle=<F2>
    set paste

    "workaround for 'Nothing in register *'
    if $TMUX == ''
        set clipboard+=unnamed
    endif

    "Invisible character colors
    highlight NonText guifg=#4a4a59
    highlight SpecialKey guifg=#4a4a59

    "현재줄 강조색상 지정
    highlight CursorColumn ctermbg=242


    "Section: Italic comments {{{
        ".vim/terminfo/xterm-256color-italic.terminfo
        if &term=~ 'xterm-256color-italic'
            set t_ZH=
            set t_ZR=
            "highlight Comment font=Anonymous_Pro:h13
            highlight Comment cterm=italic
            highlight Comment ctermfg=240 guifg=#aaaaaa "rgb=8,8,8"
            highlight Comment gui=italic
        endif
    "}}}


    "문법강조의 cchar까지 보이지 않게 함
    set conceallevel=2

    "Section: Spell checking {{{
        set spelllang=en
        set nospell
        set novisualbell
        set noerrorbells
        set magic
    "}}}

    "Section: Encription {{{
        set cryptmethod=blowfish
        autocmd BufReadPost * if &key != "" | set noswapfile nowritebackup viminfo= nobackup noshelltemp history=0 secure | endif
    "}}}

    "Section: Lisp {{{
				autocmd BufNewFile,BufRead .spacemacs set syntax=lisp
		"}}}
" }}}


"KeyMapping: {{{
    "Section: Global {{{
 
        "let g:agprg="/usr/local/bin/ag --ignore-case --ignore .git --ignore .hg --all-text --skip-vcs-ignores --column"
        "let g:agprg="/Users/andrwj/bin/ag.sh"
        "let g:agformat="%f:%l:%m"
        "let g:aghighlight=1
        "nnoremap <leader>f :Ag

        "<스페이스>키를 눌러 커서위치의 단어를 선택
        "nnoremap <space> viw

        ".vimrc 다시 읽기
        nnoremap <leader>rf :source $MYVIMRC<cr>

        "cursorcolumn 토글
        "색상변경 :highlight CursorColumn ctermbg=Grey
        nnoremap <leader>\| :set cursorcolumn!<cr>

        "ctags 이전으로 돌아가기 ctrl-[
        "nnoremap <C-[> :pop<cr>

        "cursor color
        autocmd BufNewFile,InsertLeave * hi Cursor guibg=red
        autocmd BufEnter,InsertEnter * hi Cursor guibg=green

        "JSON formatter
        nnoremap =j :%!python -m json.tool<CR>
        function!  s:formatJSON()
            execute ':%!python -m json.tool'
        endfunction

        "
        nnoremap <C-m> :tnext<CR>

    "}}}

    "Section: Tab {{{
        "nnoremap <silent> <C-a><C-n> :tabnew<cr>
        nnoremap <silent> <leader>n :tabnew<cr>
        "au FileType * map <silent> <C-a><C-]> :tabnext<cr>
        nnoremap <silent> <leader>] :tabnext<cr>
        "au FileType * map <silent> <C-a><C-[> :tabprevious<cr>
        nnoremap <silent> <leader>[ :tabprevious<cr>
        "au FileType * map <silent> <C-a><C-w> :tabclose<cr>
        nnoremap <silent> <leader>w :tabclose<cr>
    "}}}

    "Section: 'Mizuchi/vim-ranger' (새로운 탭에 파일 열기) {{{
        "새로운 탭에 파일 열기. open new tab
        "This only works in version of console vim, not with  MacVIM
        "nnoremap <silent> <C-k><C-b> :tabe %:p:h<cr>

        "수직으로 화면 나누고 파일열기
        "nnoremap <silent> <C-k><C-v> :VsplitVifm<cr>

        "수직으로 화면 나누고 diff 출력
        "nnoremap <silent> <C-k><C-d> :DiffVifm<cr>

        "수평으로 화면 나누고 파일 읽어들임
        "nnoremap <silent> <C-k><C-s> :SplitVifm<cr>
    "}}}

    "Section: 그외 ... {{{
        "괄호안을 지움 dp | cp
        "onoremap p i(
        "괄호안을 지움cin
        "onoremap in( :<c-u>normal! f(vi(<cr>
        "return 문을 만날때까지 삭제 db
        "onoremap b /return<cr>
        "현재줄을 다음줄 뒤로 붙이기
        "nnoremap <leader>sw viw^<c-v>$d<esc>pJ$<cr>
        "선택된 블럭양끝에 따옴표 넣기
        "nnoremap <leader>" viw<esc>a"<esc>hbi"<esc>lel
    "}}}

    augroup keymapping
        autocmd!
        "Filetype: * {{{
            map <leader>q :q!<cr>
            map <leader>Q :qa!<cr>
            "au FileType *  nmap <Leader>\ :VimuxPromptCommand<cr>

            "Section: 버퍼 {{{
                map <space>b :buffer
                map <space>l :ls<cr>
                map <space>w :bdelete!<cr>
                map <space>[ :bprevious!<cr>
                map <space>] :bnext!<cr>
                map <space>n :vnew<cr>
                map <space>s :new<cr>
                map <space>o :VimFilerExplorer<cr>

                nnoremap <silent>== :MaximizerToggle<cr>
                vnoremap <silent><F3> :MaximizerToggle<cr>gv
                inoremap <silent><F3> <C-o>:MaximizerToggle<cr>
            "}}}

            "Section: list character (vim-go 패키지의 lcs 처리를 위해서 필요할 때만 enable 시킨다
            "Filetype: go {{{
                "map <silent> <C-a><C-m> :set list lcs=trail:·,tab:»,eol:¬<cr>
                "map <silent> <C-a><C-u> :set nolist<cr>
                map <silent> <Leader>\w :set list lcs=trail:·,tab:»,eol:¬<cr>
                map <silent> <Leader>\W :set nolist<cr>
            "}}}
        "}}}

        "Filetype: shell {{{
            "autocmd FileType sh nnoremap <buffer> <localleader>c I#<esc>
        "}}}

        "Filetype: vim {{{
            autocmd FileType vim setlocal foldmethod=marker
        "}}}

        "Filetype: js {{{
            "autocmd FileType javascript set dictionary+=$HOME/.vim/dicts/node.dict
            "autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
            "autocmd FileType javascript set tags+=~/.vim/tags/v5.0.1/tags
        "}}}

        "Filetype: json {{{
            " JSON prettifier
            autocmd FileType json,js nnoremap <buffer> <leader>fmt :%!python -m json.tool<cr>
						autocmd BufNewFile,BufRead *.json set ft=javascript
        "}}}

        "Filetype: markdown {{{
            au BufRead,BufNewFile *.md set filetype=markdown
        "}}}

        "Filetype: python {{{
            autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
            autocmd BufRead *.py set nocindent
            autocmd BufWritePre *.py normal m`:%s/\s\+$//e ``

            " 120 컬럼위치 넘어가면 색상 변경 (이럴필요가 있을까? 2014-9-5)
            "autocmd FileType python highlight Excess ctermbg=DarkGrey guibg=Black
            "autocmd FileType python match Excess /\%120v.*/
            "autocmd FileType python set nowrap

            "PEP8 경고 무시
            let g:pep8_ignore="E501,W601,E265"
        "}}}
    augroup END
" }}}


"Plugin: NERDtree {{{
    augroup NERDTree
        " let g:NERDTreeDirArrowExpandable = '▸'
        " let g:NERDTreeDirArrowCollapsible = '▾'

        autocmd!
        nnoremap <silent> <C-k><C-t> :NERDTreeToggle<cr>
        "파일지정없이 vim을 열었을 경우, 자동으로 NERDTree를 동작시킴
        autocmd StdinReadPre * let s:std_in=1
        autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
    augroup END
"}}}


"Plugin: vim-airline {{{
    if !exists('g:airline_symbols')
      let g:airline_symbols = {}
    endif
    " unicode symbols
    let g:airline_symbols.space = "\ua0"
    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.branch = '⭠'
    let g:airline_symbols.readonly = '⭤'
    let g:airline_symbols.linenr = '⭡'
    let g:airline_symbols.paste = 'ρ'
    let g:airline_symbols.whitespace = '·'

    let g:airline_detect_modified=1
    let g:airline_powerline_fonts = 1
    let g:airline#extensions#tabline#left_sep = '⮀'
    let g:airline#extensions#tabline#left_alt_sep = '⮁'
    let g:airline#extensions#tabline#enabled=1
    let g:airline_theme='solarized'
    let g:airline_section_z=''
    "let g:airline_detect_whitespace=0
    let g:airline#extensions#syntastic#enabled=1
    let g:airline#extensions#hunks#enabled=1
    let g:airline#extensions#branch#enabled=1
    let g:airline#extensions#eclim#enabled=0
    let g:airline#extensions#bufferline#enabled=0
    let g:airline#extensions#promptline#enabled=0
    let g:airline#extensions#promptline#snapshot_file = "~/.shell_prompt.sh"
    let airline#extensions#promptline#color_template = 'normal'
"}}}

"Plugin: vim-promptline {{{
  "promptline plugin은 zshell을 사용할때에만 적용하기로 한다 (2014-8-17)
  "let g:promptline_theme = 'jelly'
  "let g:promptline_powerline_symbols=1
  "let git_sha_slice = {
  "    \'function_name': 'git_sha',
  "    \'function_body': [
  "    \'function git_sha {',
  "    \'  local sha',
  "    \'  sha=$(git rev-parse --short HEAD 2>/dev/null) || return 1',
  "    \'  printf "%s" "$sha"',
  "    \'}']}
  "
  "let g:promptline_preset = {
  "    \'a' : [ promptline#slices#host() ],
  "    \'b' : [ promptline#slices#user() ],
  "    \'c' : [ promptline#slices#cwd() ],
  "    \'y' : [ promptline#slices#vcs_branch() ],
  "    \'x' : [ git_sha_slice ],
  "    \'warn' : [ promptline#slices#last_exit_code() ],
  "    \'options': {
  "    \'left_sections' : [ 'a', 'b', 'c' ],
  "    \'right_sections' : [ 'x', 'y', 'warn' ],
  "    \'left_only_sections' : [ 'a', 'b', 'c' ] }}
  "
"}}}

"Plugin: tagbar {{{
  "Section: KeyMap {{{
      augroup tagbarWindow
          autocmd!
          map <silent> <C-c><C-c> :TagbarOpen fj<cr>
          map <silent> <C-c><C-x> :TagbarClose<cr>
      augroup END
  "}}}

  "Section: gotags + tagbar {{{
      let g:tagbar_type_go = {
          \ 'ctagstype' : 'go',
          \ 'kinds'     : [
              \ 'p:package',
              \ 'i:imports:1',
              \ 'c:constants',
              \ 'v:variables',
              \ 't:types',
              \ 'n:interfaces',
              \ 'w:fields',
              \ 'e:embedded',
              \ 'm:methods',
              \ 'r:constructor',
              \ 'f:functions'
          \ ],
          \ 'sro' : '.',
          \ 'kind2scope' : {
              \ 't' : 'ctype',
              \ 'n' : 'ntype'
          \ },
          \ 'scope2kind' : {
              \ 'ctype' : 't',
              \ 'ntype' : 'n'
          \ },
          \ 'ctagsbin'  : 'gotags',
          \ 'ctagsargs' : '-R -sort -silent'
          \ }
  "}}}

  "Section: JavaScript {{{
      let g:tagbar_type_javascript = {
          \ 'ctagstype' : 'javascript',
          \ 'kinds'     : [
              \ 'o:objects',
              \ 'c:classes',
              \ 'm:methods',
              \ 'p:properties',
              \ 'v:global variables',
              \ 'f:functions',
              \ 'a:arrays',
              \ 's:strings',
              \ 'r:string'
          \ ]}

  "}}}
  "
  "Section: CSS {{{
      let g:tagbar_type_css = {
          \ 'ctagstype' : 'Css',
          \ 'kinds'     : [
          \ 'c:classes',
          \ 's:selectors',
          \ 'i:identities'
          \ ]}
  "}}}

  "Section: Markdown {{{
      let g:tagbar_type_markdown = {
          \ 'ctagstype' : 'markdown',
          \ 'kinds' : [
          \ 'h:Heading_L1',
          \ 'i:Heading_L2',
          \ 'k:Heading_L3'
          \ ]}
  "}}}

  "Section: R {{{
      let g:tagbar_type_r = {
          \ 'ctagstype' : 'r',
          \ 'kinds'     : [
          \ 'f:Functions',
          \ 'g:GlobalVariables',
          \ 'v:FunctionVariables'
          \ ]}
  "}}}

  "Section: Ruby {{{
      let g:tagbar_type_ruby = {
          \ 'ctagstype' : 'ruby',
          \ 'kinds' : [
          \ 'm:modules',
          \ 'c:classes',
          \ 'd:describes',
          \ 'C:contexts',
          \ 'f:methods',
          \ 'F:singleton methods'
          \ ]}
  "}}}

  "Section: Snippets {{{
      let g:tagbar_type_snippets = {
          \ 'ctagstype' : 'snippets',
          \ 'kinds' : [
          \ 's:snippets',
          \ ]}
  "}}}

"}}}

"Plugin: ultisnip {{{
  let g:UltiSnipsExpandTrigger="<F12>"
  "let g:UltiSnipsJumpForwardTrigger="<c-b>"
  "let g:UltiSnipsJumpBackwardTrigger="<c-z>"
  " If you want :UltiSnipsEdit to split your window.
  "let g:UltiSnipsEditSplit="vertical"
"}}}

"Plugin: tmuxline {{{
  "for manual setting of Tmuxline theme
  let g:airline#extensions#tmuxline#enabled=0
  let g:tmuxline_preset = 'full'
  let g:tmuxline_theme = 'icebert'
  let g:vim_statusline_3=1
"}}}

"Plugin: untotree {{{
  "persistent undotree repository
  "(소스내에 이 부분을 적용하는게 보이지 않는다:2014-8-19)
  if has("persistent_undo")
      set undodir='~/.vim/undodir/'
      set undofile
  endif
"}}}

"Plugin: vim-gist {{{
  let g:gist_clip_command = 'pbcopy'
  let g:gist_detect_filetype = 1
  let g:gist_open_browser_after_post = 1
  let g:gist_show_privates = 1
  let g:gist_post_private = 1
  let g:gist_get_multiplefile = 1
" }}}

"Plugin: python-mode {{{
  " Activate rope
  " K             Show python docs
  " <Ctrl-Space>  Rope autocomplete
  " <Ctrl-c>g     Rope goto definition
  " <Ctrl-c>d     Rope show documentation
  " <Ctrl-c>f     Rope find occurrences
  " <Leader>b     Set, unset breakpoint (g:pymode_breakpoint enabled)
  " [[            Jump on previous class or function (normal, visual, operator modes)
  " ]]            Jump on next class or function (normal, visual, operator modes)
  " [M            Jump on previous class or method (normal, visual, operator modes)
  " ]M            Jump on next class or method (normal, visual, operator modes)

  let g:pymode_rope = 0
  " 경고 끔
  let g:pymode_warnings = 0

  " Documentation
  let g:pymode_doc = 1
  let g:pymode_doc_key = 'K'

  "Linting
  "let g:pymode_lint = 1
  "let g:pymode_lint_checker = "pyflakes,pep8"

  " Auto check on save
  "let g:pymode_lint_write = 1

  " Support virtualenv
  let g:pymode_virtualenv = 1

  " Enable breakpoints plugin
  let g:pymode_breakpoint = 1
  let g:pymode_breakpoint_key = '<leader>b'

  " syntax highlighting
  "let g:pymode_syntax = 0
  "let g:pymode_syntax_all = 0
  "let g:pymode_syntax_indent_errors = g:pymode_syntax_all
  "let g:pymode_syntax_space_errors = g:pymode_syntax_all
  let g:syntastic_python_checker_args='--ignore=E501,E225,E265'
  " Don't autofold code
  let g:pymode_folding = 0
  " Override go-to.definition key shortcut to Ctrl-]
  let g:pymode_rope_goto_definition_bind = "<C-]>"
  "
  " Override run current python file key shortcut to Ctrl-Shift-e
  "let g:pymode_run_bind = "<C-S-e>"

  " Override view python doc key shortcut to Ctrl-Shift-d
  "let g:pymode_doc_bind = "<C-S-d>""

  let g:pymode_trim_whitespaces = 1
  let g:pymode_options_max_line_length = 130
" }}}

"Plugin: vim-markdown (markdown 타입은 vim-pandoc으로 처리중) {{{
  let g:vim_markdown_folding_disabled=1
  let g:vim_markdown_emphasis_multiline=0
  let g:vim_markdown_conceal = 0  "이미지 태그 라인이 보이지 않는 것을 해결

" }}}

"Plugin: emmet {{{
"    확장단축기: <C-y>,
"    let g:user_emmet_mode='a'
"    let g:user_emmet_install_global = 1
"    augroup emmet
"    au!
"        autocmd FileType html,css,go EmmetInstall
"        "autocmd FileType * EmmetInstall
"    augroup END
"    let g:user_emmet_leader_key='<C-y>'
  "let g:user_emmet_settings = webapi#json#decode(join(readfile(expand('~/.vim/snippets/emmet.json')), "\n"))
" }}}

"Plugin: vim-table-mode {{{
  let g:table_mode_separator='|'
  let g:table_mode_align_char=':'
  let g:table_mode_corner_corner='+'
  nnoremap <buffer> <silent> <leader>tm :TableModeToggle<cr>
  "block을 잡은후 <leader>tt --> Tableize
  "다른 구분자 적용 --> :Tableize/;   ';'이 구분자
  "+-----------------------------+-----------------------------------+
  "| g:table_mode_corner_corner='+' 로 설정해야 테두리가 제대로 나옴 |
  "+-----------------------------+-----------------------------------+
" }}}

"Plugin: vim-note (obsoleted) {{{
"    let g:notes_suffix = '.note'
"    let g:notes_directories = ['~/Documents/vim-notes']
"    let g:notes_markdown_program='/usr/local/bin/pandoc'
"}}}

"Plugin: vimwiki {{{
  "주의: vimwiki/plugin/vimwiki.vim 350line ==>  let s:vimwiki_defaults.syntax = 'markdown'
  " augroup mediawiki
  "     autocmd!
  "     " Enable folding based on ==sections==
  "     au BufRead,BufNewFile *.wiki  setlocal foldmethod=syntax
  "     au BufRead,BufNewFile *.wiki  setlocal foldexpr=getline(v:lnum)=~'^\\(=\\+\\)[^=]\\+\\1\\(\\s*<!--.*-->\\)\\=\\s*$'?\">\".(len(matchstr(getline(v:lnum),'^=\\+'))-1):\"=\"
  "     au BufRead,BufNewFile *.wiki  setlocal fdm=expr
  "     au BufRead,BufNewFile *.wiki  setlocal matchpairs+=<:>
  "     au BufRead,BufNewFile *.wiki  setlocal comments=n:#,n:*,n:\:,s:{\|,m:\|,ex:\|}
  "     au BufRead,BufNewFile *.wiki  setlocal formatoptions+=roq
  "
  "     " Insert a matching = automatically while starting a new header.
  "     autocmd FileType mediawiki inoremap <buffer> <silent> = <C-R>=(getline('.')==''\|\|getline('.')=~'^=\+$')?"==\<Lt>Left>":"="<cr>
  " augroup END
"}}}

"Plugin: vimshell {{{
  function! LaunchVIMShell()
      cd %:p:h
      execute ':below new'
      set noautochdir
      execute ':resize 5'
      execute ':VimShell'
      set autochdir
  endfunction

  let g:vimshell_force_overwrite_statusline=1
  let g:vimshell_user_prompt = 'fnamemodify(getcwd(), ":~")'
  let g:vimshell_prompt =  '$ '
  let g:vimshell_use_terminal_command='bash'
  augroup vimshell
      autocmd!
      nnoremap <leader>sh :call LaunchVIMShell()<cr>
        "nnoremap <space>bash :VimShellInteractive --split='below|resize 5' bash
    augroup END
"}}}

"Plugin: Tabularize {{{
    ":Tabularize /패턴 ==> 패턴을 기준으로해서 컬럼폭을 맞춤
    augroup tabularize
        autocmd!
        nnoremap <Leader>a= :Tabularize /=
        nnoremap <Leader>a: :Tabularize /:
        nnoremap <Leader>a:: :Tabularize /:\zs
        nnoremap <Leader>a, :Tabularize /,
        nnoremap <Leader>a<Bar> :Tabularize /
    augroup END
"}}}

"Plugin: fugitive {{{
    augroup fugitive
        autocmd!
        nnoremap <leader>gs :Gstatus
        nnoremap <leader>gd :Gdiff
        nnoremap <leader>gc :Gcommit
        nnoremap <leader>gb :Gblame
        nnoremap <leader>gl :Glog
        nnoremap <leader>gp :Git push
    augroup END
"}}}

"Plugin: easymotion {{{
    if exists('g:EasyMotion_loaded')
        augroup easymotion
            autocmd!
            map  / <Plug>(easymotion-sn)
            omap / <Plug>(easymotion-tn)
            map  n <Plug>(easymotion-next)
            map  N <Plug>(easymotion-prev)
        augroup END
    endif
"}}}

"Plugin: pebble-vim-syntax {{{
    "특정 위치에서의 C 소스는 페블어플리케이션으로 인식하게함
    augroup pebble
        "autocmd!
        "autocmd FileType C set syntax=pebble
        "autocmd Filetype C set makeprg=bash\ --init-file\ ~/.shell_prompt.sh\ -c\ 'cd\ ..\ &&\ pebble\ build'
        "autocmd Filetype C set errorformat=../src/%f:%l:%c:\ %m
        "autocmd Filetype C nmap <leader>b :make!<cr><cr>:cw<cr>
        "autocmd Filetype C nmap <F4> :cw<cr>

        autocmd BufNewFile,BufRead ~/Develops/pebble.applications/*.{c,h} set syntax=pebble
        "autocmd BufNewFile,BufRead ~/Develops/pebble.applications/*.{c,h} set makeprg=bash\ --init-file\ ~/.shell_prompt.sh\ -c\ 'cd\ ..\ &&\ pebble\ build'
        autocmd BufNewFile,BufRead ~/Develops/pebble.applications/*.{c,h} set errorformat=../src/c/%f:%l:%c:\ %m
        "autocmd BufNewFile,BufRead ~/Develops/pebble.applications/*.{c,h} nmap <leader>b :make!<cr><cr>:cw<cr>
        "autocmd BufNewFile,BufRead ~/Develops/pebble.applications/*.{c,h} nmap <F4> :cw<cr>
        autocmd BufWritePost ~/Develops/pebble.applications/*.{c,h} *.c,*.h silent! !ctags --fields=+l --C-kinds=+p -R % 2> /dev/null &
    augroup END
"}}}

"Plugin: vim-go {{{
    let g:go_auto_type_info=1
    let g:go_play_open_browser = 1
    augroup filetype_go
        autocmd!
        "타입정보 자동보이기를 수동으로 보일경우
        "au FileType go nmap <leader>i <Plug>(go-info)

        "문서열기 gd:수평분할, gv:수직분할, gb: 브라우저에서 열기
        " au FileType go nmap <Leader>gd <Plug>(go-doc)
        " au FileType go nmap <Leader>gv <Plug>(go-doc-vertical)
        " au FileType go nmap <Leader>gb <Plug>(go-doc-browser)

        "정의된 소스 열기 ds:수평, dv:수직, dt:탭으로 열기
        " au FileType go nmap <Leader>ds <Plug>(go-def-split)
        " au FileType go nmap <Leader>dv <Plug>(go-def-vertical)
        " au FileType go nmap <Leader>dt <Plug>(go-def-tab)


        "r: 실행, b:빌드, t:CtrlP를 타입으로 열기
        " au FileType go nmap <leader>r <Plug>(go-run)
        " au FileType go nmap <leader>b <Plug>(go-build)
        " au FileType go nmap <leader>t :CtrlPTag<cr>
        " "au FileType go nmap <leader>t <Plug>(go-test)
        " au FileType go nmap <leader>c <Plug>(go-coverage)

        " 파일저장후에 항상 ctags 업데이트 (~/.ctags의 --languages 설정에 맞춘것임. 경고를 보이지 않게했음<-- 주의 )
        au BufWritePost *.go silent! !gotags -R -sort -silent ./ > ./tags &

        "[[몇가지 자동완성]]
        "현재라인을 주석처리하기
        autocmd FileType go nnoremap <buffer> <localleader>c I//<esc>

        "자주쓰이는 snippets
        autocmd FileType go inoremap <buffer> \|pack package main<cr>
        autocmd FileType go inoremap <buffer> \|main func main() {<cr><cr>}<esc>ki<tab>
        autocmd FileType go inoremap <buffer> \|{ {<cr><cr>}<esc>ki<tab>
        autocmd FileType go inoremap <buffer> \|err err != nil {<cr><cr>}<esc>ki<tab>
        autocmd FileType go inoremap <buffer> \|im  import (<cr>"fmt"<cr><cr>)<esc>ki<tab>
        "autocmd FileType go nnoremap <buffer> <localleader>C I/* <esc>$a */<esc>
        "autocmd FileType go vnoremap <buffer> <localleader>c <esc>a*/<esc>I/*<esc>lel

        "tool paths
        "let g:go_bin_path = expand("~/.vim-go")
        "let g:go_gocode_bin="~/your/custom/gocode/path"
        "let g:go_goimports_bin="~/your/custom/goimports/path"
        "let g:go_godef_bin="~/your/custom/godef/path"
        "let g:go_oracle_bin="~/your/custom/godef/path"
        "let g:go_golint_bin="~/your/custom/golint/path"
        "let g:go_errcheck_bin="~/your/custom/errcheck/path"
    augroup END
"}}}

"Plugin: vimrepress (인증문제때문에 안쓰고있음) {{{

"}}}

"Plugin: rainbow_parenthesis {{{
    "wiki, markdown의 '[]' 문자를 해제해버리므로 (conceallevel=0) 무조건 enable 시키면 곤란하다
    augroup rainbow
        autocmd!
        au VimEnter *.go,*.sh,*.c RainbowParenthesesToggle
        au Syntax *.go,*.sh,*.c RainbowParenthesesLoadRound
        au Syntax *.go,*.sh,.c RainbowParenthesesLoadSquare
        au Syntax *.go,*.sh,.c RainbowParenthesesLoadBraces
        au Syntax *.go,*.sh,.c RainbowParenthesesLoadChevrons
    augroup END
"}}}

"Plugin: UndoTree {{{
    augroup UndoTree
        autocmd!
        map <leader>u :UndotreeToggle<cr>
    augroup END
"}}}

"Plugin: eregex (easymotion과 충돌하기 때문에 해결방법을 찾을 때까지 disable ) {{{
    "let g:eregex_default_enable = 0
    "nnoremap <leader>/ :call eregex#toggle()<cr>
""}}}

"Plugin: xterm-color-table {{{
    "comand: XtermColorTable
"}}}

"Plugin: limelight {{{
    " Color name (:help cterm-colors) or ANSI code
    let g:limelight_conceal_ctermfg = 0

    " Color name (:help gui-colors) or RGB color
    let g:limelight_conceal_guifg = '#777777'

    " Default: 0.5
    let g:limelight_default_coefficient = 0.5

    nnoremap <silent><F11> :Limelight!!<cr>
    "if exists(':Limelight')
    "    nnoremap <silent><F11> :Limelight!!<cr>
    "endif
"}}}

"Plugin: vim-choosewin {{{  
    "keymap '='
    
    let g:choosewin_overlay_enable = 1
    let g:choosewin_overlay_clear_multibyte = 1
    let g:choosewin_blink_on_land      = 0 " dont' blink at land
    let g:choosewin_statusline_replace = 0 " don't replace statusline
    let g:choosewin_tabline_replace    = 0 " don't replace tabline
    nmap - <Plug>(choosewin)
    nmap = <Plug>(choosewin-swap)
    " tmux like overlay color
    let g:choosewin_color_overlay = {
          \ 'gui': ['DodgerBlue3', 'DodgerBlue3' ],
          \ 'cterm': [ 125, 125 ]
          \ }
    let g:choosewin_color_overlay_current = {
          \ 'gui': ['firebrick1', 'firebrick1' ],
          \ 'cterm': [ 124, 124 ]
          \ }
"}}}

"Plugin: markology {{{
    "Section: characters for marking {{{
        "- h: Help, m: Non-modifiable, p: Preview, q: Quickfix, r: Readonly
        "m+: add, m-:delete, m<space>:toggle, m,:toggle, 
        "m[/m]: jump previous/next, 
        "m{/m}: jump lexicographically
        "m?: display all marks
        "m~: quickfix window
        let g:markology_ignore_type=""
        let g:markology_include="23456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
        let g:markology_hlline_lower=1  "highlight marked line
        let g:markology_hlline_upper=1
        let g:markology_hlline_other=0
    "}}}

    "Section: Color Sheme {{{
        highlight MarkologyHLl guifg=red guibg=green
        "highlight MarkologyHLu guifg=red guibg=green
        "highlight MarkologyHLo guifg=red guibg=green
        "highlight MarkologyHLm guifg=red guibg=green
        "highlight MarkologyHLLine guifg=red guibg=green
    "}}}

    "Section: Key Remapping instead of 'm' {{{
        "nmap <silent> ;0 <Plug>MarkologyEnable
        "nmap <silent> ;1 <Plug>MarkologyDisable
        "nmap <silent> ;! <Plug>MarkologyToggle
        "nmap <silent> ;, <Plug>MarkologyPlaceMarkToggle
        "nmap <silent> ;+ <Plug>MarkologyPlaceMark
        "nmap <silent> ;- <Plug>MarkologyClearMark
        "nmap <silent> ;_ <Plug>MarkologyClearAll
        "nmap <silent> ;] <Plug>MarkologyNextLocalMarkPos
        "nmap <silent> ;[ <Plug>MarkologyPrevLocalMarkPos
        "nmap <silent> ;} <Plug>MarkologyNextLocalMarkByAlpha
        "nmap <silent> ;{ <Plug>MarkologyPrevLocalMarkByAlpha
        "nmap <silent> ;? <Plug>MarkologyLocationList
        "nmap <silent> ;~ <Plug>MarkologyQuickFix
    "}}}
"}}}

"Plugin: Stringify {{{
    "map <leader>g :call Stringify()<CR>
"}}}

"Plugin: vim-airline-todo {{{
"    let g:todo#directory = "/Users/andrwj/.vim/todo"
"    let g:todo#remind = "TODO"
"    let g:todo#recurse =1
"    let g:todo#suffix = "md"
"    "nnoremap <leader>t :NERDTree ~/.vim/todo/<cr>
"}}}

"Plugin: calendar {{{
    let g:calendar_google_calendar = 1
    let g:calendar_google_task = 1
"}}}

"Plugin: Goyo {{{
    nnoremap <silent> <leader>z :Goyo<cr>
    let g:goyo_width = 90
    let g:goyo_margin_top = 3
    let g:goyo_margin_bottom = 3
    let g:goyo_linenr = 0
"}}}

"Plugin: vim-gtfo {{{
    "got - terminal
    "gof - finder
"}}}

"Plugin: airlineish (airline status라인을 모드에 따라 바꿔줌) {{{
    let g:airline_theme='airlineish'
"}}}

"Plugin: unstack {{{
    "supported language: Python, Ruby, C#, Perl, Go, Node.js, Erlang
    let g:unstack_mapkey='<F10>'
    "let g:unstack_layout = "portrait"
"}}}

"Plugin: colorscheme-utility {{{
    nnoremap <leader><leader>a    " Adds the current colorscheme to favorites
    nnoremap <leader><leader>A    " Removes the current colorscheme from favorites
    nnoremap <leader><leader>f    " Goes to next colorscheme in filetype specific favorites
    nnoremap <leader><leader>F    " Goes to previous colorscheme in filetype specific favorites
    nnoremap <leader><leader>g    " Goes to next colorscheme in global favorites
    nnoremap <leader><leader>G    " Goes to previous colorscheme in global favorites
    nnoremap <leader><leader>n    " Goes to next colorscheme in all colors
    nnoremap <leader><leader>N    " Goes to previous colorscheme in all colors

    nnoremap <leader><leader>t    " Adds the current font to favorites
    nnoremap <leader><leader>T    " Removes the current font from favorites
    nnoremap <leader><leader>e    " Goes to the next font in filetype specific favorites
    nnoremap <leader><leader>E    " Goes to the previous font in filetype specific favorites
    nnoremap <leader><leader>r    " Goes to the next font in global favorites
    nnoremap <leader><leader>R    " Goes to the previous font in global favorites
    nnoremap <leader><leader>q    " Views all favorites
"}}}

"Plugin: vim-move (move up/down visual blocked area) {{{
    let g:move_key_modifier = 'C'
"}}}

"Plugin: YouCompleteMe {{{
    let g:ycm_global_ycm_extra_conf = "~/.vim/ycm_extra_conf.py"
    let g:ycm_confirm_extra_conf = 0
    let g:ycm_min_num_of_chars_for_completion = 2
    let g:ycm_auto_trigger = 1
    "let g:ycm_always_populate_location_list = 1
    let g:ycm_collect_identifiers_from_comments_and_strings = 1
    let g:ycm_collect_identifiers_from_tags_files = 1
    let g:ycm_seed_identifiers_with_syntax = 1
    let g:ycm_show_diagnostics_ui = 1
    let g:ycm_add_preview_to_completeopt = 1
    let g:ycm_autoclose_preview_window_after_completion = 1
    let g:ycm_key_invoke_completion = '<C-Space>'
    let g:ycm_filepath_completion_use_working_dir = 1
    let g:ycm_path_to_python_interpreter = '/usr/bin/python2.7'
    let g:ycm_filetype_whitelist = { '*': 1 }
    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
          \}
    let g:ycm_semantic_triggers =  {
      \   'c' : ['->', '.'],
      \   'objc' : ['->', '.'],
      \   'ocaml' : ['.', '#'],
      \   'cpp,objcpp' : ['->', '.', '::'],
      \   'perl' : ['->'],
      \   'php' : ['->', '::'],
      \   'cs,java,javascript,d,python,perl6,scala,vb,elixir,go' : ['.'],
      \   'vim' : ['re![_a-zA-Z]+[_\w]*\.'],
      \   'ruby' : ['.', '::'],
      \   'lua' : ['.', ':'],
      \   'erlang' : [':'],
      \ }

    "CTRL-O for jump back
    nnoremap <leader>jd :YcmCompleter GoTo<cr>
"}}}

"Plugin: GitGutter {{{
    let g:gitgutter_eager = 0
    let g:gitgutter_realtime = 0
"}}}

"Plugin: javascript-syntax-library {{{
    "let g:used_javascript_libs = 'jquery,angularjs,extjs'
    "autocmd BufReadPre *.js let b:javascript_lib_use_jquery = 1
    "autocmd BufReadPre *.js let b:javascript_lib_use_underscore = 1
    "autocmd BufReadPre *.js let b:javascript_lib_use_backbone = 1
    "autocmd BufReadPre *.js let b:javascript_lib_use_prelude = 0
    "autocmd BufReadPre *.js let b:javascript_lib_use_angularjs = 0
"}}}

"Plugin: Startify {{{
"    let g:startify_disable_at_vimenter = 0
"    let g:startify_custom_header = map(split(system('fortune ~/.fortunes/|cowsay'), '\n'), '" ". v:val') + ['','']
"    let g:startify_skiplist = [
"           \ 'COMMIT_EDITMSG',
"           \ '\.DS_Store'
"           \ ]
"    "파일지정없이 vim을 열었을 경우, 자동으로 Starify를 동작시킴
"    autocmd StdinReadPre * let s:std_in=1
"    autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | Startify | endif
"    autocmd User Startified call AirlineRefresh
"    nnoremap <silent> <C-k><C-l> :Startify<cr>
""}}}

"Plugin: tern {{{
    let g:tern_map_keys = 1
    let g:tern_show_argument_hints = 'on_hold'
    let g:tern_show_signature_in_pum = 1
"}}}

"Plugin: pandoc {{{
    augroup pandoc
        autocmd!
        autocmd FileType markdown nnoremap <leader>v :!open -a Marked.app %<cr><cr>
        "autocmd FileType markdown set dictionary+=$HOME/.vim/dicts/corpus.dict
    augroup END
"}}}

"Plugin: ctrlp {{{
    set wildignore+=*/tmp/*,*.so,*.swp,*.zip     " MacOSX/Linux
    let g:ctrlp_show_hidden = 1
    let g:ctrlp_regexp = 1
    let g:ctrlp_use_caching = 1
    let g:ctrlp_clear_cache_on_exit = 1
    let g:ctrlp_root_markers = ['.git']
    let g:ctrlp_switch_buffer = 'et'
    let g:ctrlp_working_path_mode='c'
      "t - in a new tab.
      "h - in a new horizontal split.
      "v - in a new vertical split.
      "r - in the current window.
    let g:ctrlp_follow_symlinks = 1
    let g:ctrlp_open_new_file = 'v'
    let g:ctrlp_map = '<c-p>'
    "let g:ctrlp_cmd = 'CtrlPMixed'
    let g:ctrlp_cmd = 'CtrlPLastMode'
    let g:ctrlp_extensions = ['line', 'funky', 'tag', 'buffertag', 'dir', 'cmdline', 'yankring', 'modified']
    " if executable('ag')
    "     let g:ctrlp_user_command = "ag %s -l --nocolor"
    " endif
     " let g:ctrlp_user_command = {
     "    \ 'types': {
     "        \ 1: ['.git', 'cd %s && git ls-files . -co --exclude-standard', 'find %s -type f'],
     "        \ },
     "    \ 'fallback': 'find %s -type f'
     "    \ }
    let g:ctrlp_custom_ignore = {
        \ 'dir':  '\v[\/]\.(git|hg|svn)$',
        \ 'file': '\v\.(swap)$'
        \ }
    "let g:ctrlp_funky_matchtype = 'path'
    let g:ctrlp_funky_syntax_highlight = 1

    " CtrlP auto cache clearing.
    " ----------------------------------------------------------------------------
    function! SetupCtrlP()
      if exists("g:loaded_ctrlp") && g:loaded_ctrlp
        augroup CtrlPExtension
          autocmd!
          autocmd FocusGained  * CtrlPClearCache
          autocmd BufWritePost * CtrlPClearCache
        augroup END
      endif
    endfunction
    if has("autocmd")
      autocmd VimEnter * :call SetupCtrlP()
    endif

    " Use this to customize the mappings inside CtrlP's prompt to your liking. You
    " only need to keep the lines that you've changed the values (inside []): >
    "   let g:ctrlp_prompt_mappings = {
    "       \ 'PrtBS()':              ['<bs>', '<c-]>'],
    "       \ 'PrtDelete()':          ['<del>'],
    "       \ 'PrtDeleteWord()':      ['<c-w>'],
    "       \ 'PrtClear()':           ['<c-u>'],
    "       \ 'PrtSelectMove("j")':   ['<c-j>', '<down>'],
    "       \ 'PrtSelectMove("k")':   ['<c-k>', '<up>'],
    "       \ 'PrtSelectMove("t")':   ['<Home>', '<kHome>'],
    "       \ 'PrtSelectMove("b")':   ['<End>', '<kEnd>'],
    "       \ 'PrtSelectMove("u")':   ['<PageUp>', '<kPageUp>'],
    "       \ 'PrtSelectMove("d")':   ['<PageDown>', '<kPageDown>'],
    "       \ 'PrtHistory(-1)':       ['<c-n>'],
    "       \ 'PrtHistory(1)':        ['<c-p>'],
    "       \ 'AcceptSelection("e")': ['<cr>', '<2-LeftMouse>'],
    "       \ 'AcceptSelection("h")': ['<c-x>', '<c-cr>', '<c-s>'],
    "       \ 'AcceptSelection("t")': ['<c-t>'],
    "       \ 'AcceptSelection("v")': ['<c-v>', '<RightMouse>'],
    "       \ 'ToggleFocus()':        ['<s-tab>'],
    "       \ 'ToggleRegex()':        ['<c-r>'],
    "       \ 'ToggleByFname()':      ['<c-d>'],
    "       \ 'ToggleType(1)':        ['<c-f>', '<c-up>'],
    "       \ 'ToggleType(-1)':       ['<c-b>', '<c-down>'],
    "       \ 'PrtExpandDir()':       ['<tab>'],
    "       \ 'PrtInsert("c")':       ['<MiddleMouse>', '<insert>'],
    "       \ 'PrtInsert()':          ['<c-\>'],
    "       \ 'PrtCurStart()':        ['<c-a>'],
    "       \ 'PrtCurEnd()':          ['<c-e>'],
    "       \ 'PrtCurLeft()':         ['<c-h>', '<left>', '<c-^>'],
    "       \ 'PrtCurRight()':        ['<c-l>', '<right>'],
    "       \ 'PrtClearCache()':      ['<F5>'],
    "       \ 'PrtDeleteEnt()':       ['<F7>'],
    "       \ 'CreateNewFile()':      ['<c-y>'],
    "       \ 'MarkToOpen()':         ['<c-z>'],
    "       \ 'OpenMulti()':          ['<c-o>'],
    "       \ 'PrtExit()':            ['<esc>', '<c-c>', '<c-g>'],
    "       \ }

" }}}

"Plugin: tcomment {{{
    " A secondary set of key maps is defined for normal and insert mode:
    "     <Leader>__       :: :TComment
    "     <Leader>_p       :: Comment the current inner paragraph
    "     <Leader>_<space> :: :TComment <QUERY COMMENT-BEGIN ?COMMENT-END>
    "     <Leader>_i       :: :TCommentInline
    "     <Leader>_r       :: :TCommentRight
    "     <Leader>_b       :: :TCommentBlock
    "     <Leader>_a       :: :TCommentAs <QUERY COMMENT TYPE>
    "     <Leader>_n       :: :TCommentAs &filetype <QUERY COUNT>
    "     <Leader>_s       :: :TCommentAs &filetype_<QUERY COMMENT SUBTYPE>
    "
    " ... and for select mode:
    "
    "     <Leader>__       :: :TComment
    "     <Leader>_i       :: :TCommentInline
"}}}

"Plugin: dracula {{{
  "https://draculatheme.com/vim/
  color dracula
"}}}


"Plugin: 'nathanaelkane/vim-indent-guides' {{{
    "default indent toggle key: <leader>ig
    set background=dark
    let g:indent_guides_auto_colors = 1
    let g:indent_guides_start_level = 2
    let g:indent_guides_guide_size = 1
    let g:indent_guides_enable_on_vim_startup = 0

    " autocmd VimEnter,Colorscheme * :hi IndentGuidesOdd  guibg=black     ctermbg=3
    " autocmd VimEnter,Colorscheme * :hi IndentGuidesEven guibg=darkgrey  ctermbg=4
"}}}

"Plugin: 'Shougo/vimfiler.vim' {{{
  nnoremap <silent> <C-k><C-b> :VimFilerExplorer<cr>
  let g:vimfiler_as_default_explorer = 1
"}}}
"
"Plugin: 'emmet' {{{
  "enable just for HTML/CSS
  let g:user_emmet_install_global = 0
  autocmd FileType html,css,md EmmetInstall 

  "remap
  let g:user_emmet_leader_key='<C-.>'

  " let g:user_emmet_mode='n'    "only enable normal mode functions.
  " let g:user_emmet_mode='inv'  "enable all functions, which is equal to
  " let g:user_emmet_mode='a'    "enable all function in all mode.
"}}}

"Plugin: cmdpalette {{{
  nnoremap <silent> <C-k><C-p> :CtrlPCmdPalette<cr>
"}}}

"Plugin: 'terryma/vim-multiple-cursors' {{{
  let g:multi_cursor_use_default_mapping=1
  let g:multi_cursor_next_key='<C-d>'
  let g:multi_cursor_prev_key='<C-p>'
  let g:multi_cursor_skip_key='<C-x>'
  let g:multi_cursor_quit_key='<Esc>'

  " Default highlighting (see help :highlight and help :highlight-link)
  " highlight multiple_cursors_cursor term=reverse cterm=reverse gui=reverse
  " highlight link multiple_cursors_visual Visual
"}}}

"Plugin: syntastic {{{
  set statusline+=%#warningmsg#
  "set statusline+=%{SyntasticStatuslineFlag()}
  set statusline+=%*

  let g:syntastic_always_populate_loc_list = 1
  let g:syntastic_auto_loc_list = 1
  let g:syntastic_check_on_open = 1
  let g:syntastic_check_on_wq = 0
"}}}

"Plugin: syntastic {{{
  let g:calendar_google_calendar = 1
  let g:calendar_google_task = 1
" :Calendar 2017 9
" :Calendar -view=year 
" :Calendar -view=year -split=vertical -width=27
" :Calendar -view=year -split=horizontal -position=below -height=12
" :Calendar -view=clock
" :Calendar -first_day=monday
" press E for event list
" press T for Goggle task
"}}}

"Plugin: html5 {{{
  "Disable event-handler attributes support:
  let g:html5_event_handler_attributes_complete = 0

  "Disable RDFa attributes support:
  let g:html5_rdfa_attributes_complete = 1

  "Disable microdata attributes support:
  let g:html5_microdata_attributes_complete = 1

  "Disable WAI-ARIA attribute support:
  let g:html5_aria_attributes_complete = 1
"}}}

"Plugin: Editing for Wrapped selection {{{
  augroup VisualEditing
    vmap <Leader>tm <Esc>:call VisualHTMLTagWrap('mark')<CR>
    vmap <Leader>tn <Esc>:call VisualHTMLTagWrap('note')<CR>
    vmap <Leader>tw <Esc>:call VisualHTMLTagWrap('words')<CR>
    vmap <Leader>tu <Esc>:call VisualHTMLTagWrap('u')<CR>
    vmap <Leader>tub <Esc>:call VisualHTMLTagWrap('ub')<CR>
    vmap <Leader>tubs <Esc>:call VisualHTMLTagWrap('ubs')<CR>
    vmap <Leader>trb <Esc>:call VisualHTMLTagWrap('rb')<CR>
    vmap <Leader>trbs <Esc>:call VisualHTMLTagWrap('rbs')<CR>
    vmap <Leader>turbs <Esc>:call VisualHTMLTagWrap('urbs')<CR>
    vmap <Leader>tbs <Esc>:call VisualHTMLTagWrap('bs')<CR>
    vmap <Leader>tc <Esc>:call VisualHTMLTagWrap('comment')<CR>
  augroup END
  function! VisualHTMLTagWrap(tag)
    "let tag = input("Tag to wrap block: ")
    if len(a:tag) > 0
      normal `>
      if &selection == 'exclusive'
        exe "normal i</".a:tag.">"
      else
        exe "normal a</".a:tag.">"
      endif
      normal `<
      exe "normal i<".a:tag.">"
      normal `<
    endif
  endfunction
"}}}
"

"Plugin: Super Lisp {{{
    let g:slimv_swank_cmd = '!osascript -e "tell application \"iTerm\" to do script \"sbcl --load ~/.vim/bundle/slimv/slime/start-swank.lisp\""'

		"For Clojure use the g:slimv_swank_clojure option, e.g.:
    let g:slimv_swank_clojure = '! xterm -e lein swank &' 
"}}}

"Plugin: pluginName {{{
"}}}