综合

安装

安装VIM

brew install vim --with-lua

安装插件

:PluginList
:PluginInstall
:PluginSearch foo
:PluginClean

配置

1、 .vimrc 配置文件

    "mapleader
    let mapleader = ","

    source ~/.vim/bundles.vim

    " encoding dectection
    set fileencoding=utf-8
    set fileencodings=utf-8,gb2312,gb18030,gbk,ucs-bom,cp936,latin1

    " enable filetype dectection and ft specific plugin/indent
    filetype plugin indent on

    " enable syntax hightlight and completion
    syntax on

    "must be executed before session load
    "execute neocomplete#initialize()

    "--------
    " Vim user interface
    "--------
    " color scheme
    set background=dark
    "color vividchalk
    color molokai
    let g:molokai_original = 0

    " For showmarks plugin
    hi ShowMarksHLl ctermbg=Yellow   ctermfg=Black  guibg=#FFDB72    guifg=Black
    hi ShowMarksHLu ctermbg=Magenta  ctermfg=Black  guibg=#FFB3FF    guifg=Black

    " highlight current line
    au WinLeave * set nocursorline nocursorcolumn
    au WinEnter * set cursorline cursorcolumn
    set cursorline cursorcolumn

    " search
    set incsearch
    set ignorecase
    set smartcase

    " editor settings
    set history=1000
    set nocompatible
    set nofoldenable                                                  " disable folding"
    set confirm                                                       " prompt when existing from an unsaved file
    set backspace=indent,eol,start                                    " More powerful backspacing
    set t_Co=256                                                      " Explicitly tell vim that the terminal has 256 colors "
    set mouse=a                                                       " use mouse in all modes
    set report=0                                                      " always report number of lines changed                "
    set nowrap                                                        " dont wrap lines
    set scrolloff=5                                                   " 5 lines above/below cursor when scrolling
    set number                                                        " show line numbers
    set showmatch                                                     " show matching bracket (briefly jump)
    set showcmd                                                       " show typed command in status bar
    set title                                                         " show file in titlebar
    set laststatus=2                                                  " use 2 lines for the status bar
    set matchtime=2                                                   " show matching bracket for 0.2 seconds
    set matchpairs+=<:>                                               " specially for html
    set clipboard=unnamed                                             " yank and paste with the system clipboard
    set hidden

    " Default Indentation
    set autoindent
    set smartindent     " indent when
    set tabstop=4       " tab width
    set softtabstop=4   " backspace
    set shiftwidth=4    " indent width
    set expandtab       " expand tab to space

    autocmd FileType php setlocal tabstop=2 shiftwidth=2 softtabstop=2 textwidth=120
    autocmd FileType ruby setlocal tabstop=2 shiftwidth=2 softtabstop=2 textwidth=120
    autocmd FileType php setlocal tabstop=4 shiftwidth=4 softtabstop=4 textwidth=120
    autocmd FileType coffee,javascript setlocal tabstop=4 shiftwidth=4 softtabstop=4 textwidth=120
    autocmd FileType python setlocal tabstop=4 shiftwidth=4 softtabstop=4 textwidth=120
    autocmd FileType html,htmldjango,xhtml,haml,tpl setlocal tabstop=2 shiftwidth=2 softtabstop=2 textwidth=0
    autocmd FileType sass,scss,css setlocal tabstop=4 shiftwidth=4 softtabstop=4 textwidth=120

    " syntax support
    "autocmd Syntax javascript set syntax=jquery   " JQuery syntax support

    "tpl support
    au BufNewFile,BufRead *.tpl set ft=html
    "au FileType javascript call JavaScriptFold()
    " js
    let g:html_indent_inctags = "html,body,head,tbody"
    let g:html_indent_script1 = "inc"
    let g:html_indent_style1 = "inc"

    " highlight tabs and trailing spaces
    set list
    set listchars=tab:>-,trail:-,extends:>,precedes:<

    "-----------------
    " Plugin settings
    "-----------------
    "
    "IndentGuides
    let g:indent_guides_enable_on_vim_startup = 1

    "syntastic
    "let g:syntastic_check_on_open=1
    let g:syntastic_javascript_checkers=['jshint']

    " Rainbow parentheses for Lisp and variants
    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'],
        \ ]
    let g:rbpt_max = 16
    autocmd Syntax lisp,scheme,clojure,racket RainbowParenthesesToggle

    "dash
    :nmap <silent> <leader>z <Plug>DashSearch

    "ctags
    set tags=tags;
    set autochdir

    """"""""""""""""""""""""""""""
    " => MRU plugin
    """"""""""""""""""""""""""""""
    let MRU_Max_Entries = 400
    map <leader>x :MRU<CR>

    "tabbar
    "let g:Tb_MaxSize = 2
    "let g:Tb_TabWrap = 1
    "
    "hi Tb_Normal guifg=white ctermfg=white
    "hi Tb_Changed guifg=green ctermfg=green
    "hi Tb_VisibleNormal ctermbg=252 ctermfg=235
    "hi Tb_VisibleChanged guifg=green ctermbg=252 ctermfg=white

    " showmarks setting
    " Enable ShowMarks
    let showmarks_enable = 1
    " Show which marks
    let showmarks_include = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    " Ignore help, quickfix, non-modifiable buffers
    let showmarks_ignore_type = "hqm"
    " Hilight lower & upper marks
    let showmarks_hlline_lower = 1
    let showmarks_hlline_upper = 1
    nmap <F10> :MarksBrowser<cr>

    "yankring
    nnoremap <leader>q :YRShow<CR>
    let g:yankring_replace_n_pkey = 'π'
    let g:yankring_replace_n_nkey = '˜'
    let g:yankring_history_dir = '~/.vim/temp_dirs/'

    " easy-motion
    " let g:EasyMotion_leader_key = '<Leader>'
    " nmap <Leader> <Plug>(easymotion-prefix)
    nmap s <Plug>(easymotion-s2)
    nmap t <Plug>(easymotion-t2)
    " map  / <Plug>(easymotion-sn)
    " omap / <Plug>(easymotion-tn)
    map  n <Plug>(easymotion-next)
    map  N <Plug>(easymotion-prev)
    map <Leader>l <Plug>(easymotion-lineforward)
    map <Leader>j <Plug>(easymotion-j)
    map <Leader>k <Plug>(easymotion-k)
    map <Leader>h <Plug>(easymotion-linebackward)
    let g:EasyMotion_startofline = 0 " keep cursor colum when JK motion"
    let g:EasyMotion_smartcase = 1
    let g:EasyMotion_use_smartsign_us = 1 " US layout"
    nmap s <Plug>(easymotion-s)
    " Bidirectional & within line 't' motion
    omap t <Plug>(easymotion-bd-tl)
    " Use uppercase target labels and type as a lower case
    let g:EasyMotion_use_upper = 1
     " type `l` and match `l`&`L`
    let g:EasyMotion_smartcase = 1

    " Tagbar
    let g:tagbar_right=1
    let g:tagbar_width=30
    let g:tagbar_autofocus = 1
    let g:tagbar_sort = 0
    let g:tagbar_compact = 1
    " tag for coffee
    if executable('coffeetags')
      let g:tagbar_type_coffee = {
            \ 'ctagsbin' : 'coffeetags',
            \ 'ctagsargs' : '',
            \ 'kinds' : [
            \ 'f:functions',
            \ 'o:object',
            \ ],
            \ 'sro' : ".",
            \ 'kind2scope' : {
            \ 'f' : 'object',
            \ 'o' : 'object',
            \ }
            \ }

      let g:tagbar_type_markdown = {
        \ 'ctagstype' : 'markdown',
        \ 'sort' : 0,
        \ 'kinds' : [
            \ 'h:sections'
        \ ]
        \ }
    endif

    " Nerd Tree
    let NERDChristmasTree=0
    let NERDTreeWinSize=30
    let NERDTreeChDirMode=2
    let NERDTreeIgnore=['\~$', '\.pyc$', '\.swp$']
    " let NERDTreeSortOrder=['^__\.py$', '\/$', '*', '\.swp$',  '\~$']
    let NERDTreeShowBookmarks=1
    let NERDTreeWinPos = "left"

    " nerdcommenter
    let NERDSpaceDelims=1
    "nmap <D-/> :NERDComToggleComment<cr>
    let NERDCompactSexyComs=1

    "gitgutter
    nmap ]h <Plug>GitGutterNextHunk
    nmap [h <Plug>GitGutterPrevHunk

    " ZenCoding
    let g:user_zen_expandabbr_key='<C-j>'

    " powerline
    let g:Powerline_symbols = 'fancy'
    set laststatus=2 " Always display the statusline in all windows
    set noshowmode " Hide the default mode text (e.g. -- INSERT -- below the statusline)

    "zenroom goyo
    nnoremap <silent> <leader>d :Goyo<cr>
    let g:goyo_margin_top=1
    let g:goyo_margin_bottom=1

    " For snippet_complete marker.
    if has('conceal')
      set conceallevel=2 concealcursor=i
    endif

    " youdao translate
    vnoremap <silent> <C-T> <Esc>:Ydv<CR>
    nnoremap <silent> <C-T> <Esc>:Ydc<CR>
    noremap <leader>yd :Yde<CR>

    " neocomplete
    source ~/.vim/neocomplete.conf

    " SuperTab
    let g:SuperTabDefaultCompletionType = '<C-X><C-O>'
    let g:SuperTabRetainCompletionType=2

    "auto session let g:session_autoload = 'yes'
    " auto load session
    "let g:session_autoload = 'yes'
    "let g:session_autosave = 'yes'

    "js format
    autocmd FileType javascript noremap <buffer>  <c-s> :call JsBeautify()<cr>
    " for html
    autocmd FileType html noremap <buffer> <c-s> :call HtmlBeautify()<cr>
    " for css or scss
    autocmd FileType css noremap <buffer> <c-s> :call CSSBeautify()<cr>

    " ctrlp
    set wildignore+=*/tmp/*,*.so,*.o,*.a,*.obj,*.swp,*.zip,*.pyc,*.pyo,*.class,.DS_Store  " MacOSX/Linux
    let g:ctrlp_custom_ignore = '\.git$\|\.hg$\|\.svn$'

    " other keybindings for plugin toggle
    nmap <F5> :TagbarToggle<cr>
    nmap <F6> :NERDTreeToggle<cr>
    nmap <F3> :GundoToggle<cr>
    nmap <F4> :IndentGuidesToggle<cr>
    map <F7> :Gist
    "nmap  <D-/> :
    nnoremap <leader>a :CtrlSF 
    nnoremap <leader>v V`]
    nnoremap <leader>i :FixWhitespace<cr>
    nnoremap <leader>r :Unite register<cr>

    "------------------
    " Useful Functions
    "------------------

    " Turn persistent undo on
    "    means that you can undo even when you close a buffer/VIM
    try
        set undodir=~/.vim/temp_dirs/undodir
        set undofile
    catch
    endtry

    " paste without replace
    xnoremap p pgvy

    " Move a line of text using ALT+[jk]
    nmap <M-j> mz:m+<cr>`z
    nmap <M-k> mz:m-2<cr>`z
    vmap <M-j> :m'>+<cr>`<my`>mzgv`yo`z
    vmap <M-k> :m'<-2<cr>`>my`<mzgv`yo`z

    if has("mac") || has("macunix")
    nnoremap ∆ :m .+1<CR>==
    nnoremap ˚ :m .-2<CR>==

    inoremap ∆ <Esc>:m .+1<CR>==gi
    inoremap ˚ <Esc>:m .-2<CR>==gi

    vnoremap ∆ :m '>+1<CR>gv=gv
    vnoremap ˚ :m '<-2<CR>gv=gv
    endif

    "Switch CWD to the directory of the open buffer:
    map <leader>cd :cd %:p:h<cr>:pwd<cr>

    " easier navigation between split windows
    nnoremap <c-j> <c-w>j
    nnoremap <c-k> <c-w>k
    nnoremap <c-h> <c-w>h
    nnoremap <c-l> <c-w>l

    "for long line move
    map j gj
    map k gk

    "Open vimgrep and put the cursor in the right position:
    map <leader>g :vimgrep // **/*.<left><left><left><left><left><left><left>

    "Vimgreps in the current file:
    map <leader><space> :vimgrep // <C-R>%<C-A><right><right><right><right><right><right><right><right><right>

    "Toggle paste mode on and off:
    map <leader>pp :setlocal paste!<cr>

    "use ag instead of ack, should install the_silver_searcher
    let g:ackprg = 'ag --nogroup --nocolor --column'

    "When you press gv you vimgrep after the selected text:
    vnoremap <silent> gv :call VisualSelection('gv', '')<CR>

    function! s:VSetSearch(cmdtype)
      let temp = @s
      norm! gv"sy
      let @/ = '\V' . substitute(escape(@s, a:cmdtype.'\'), '\n', '\\n', 'g')
      let @s = temp
    endfunction

    "Visual mode pressing * or # searches for the current selection:
    xnoremap * :<C-u>call <SID>VSetSearch('/')<CR>/<C-R>=@/<CR><CR>
    xnoremap # :<C-u>call <SID>VSetSearch('?')<CR>?<C-R>=@/<CR><CR>

    function! VisualSelection(direction, extra_filter) range
        let l:saved_reg = @"
        execute "normal! vgvy"

        let l:pattern = escape(@", '\\/.*$^~[]')
        let l:pattern = substitute(l:pattern, "\n$", "", "")

        if a:direction == 'gv'
            call CmdLine("vimgrep " . '/'. l:pattern . '/' . ' **/*.' . a:extra_filter)
        elseif a:direction == 'replace'
            call CmdLine("%s" . '/'. l:pattern . '/')
        endif

        let @/ = l:pattern
        let @" = l:saved_reg
    endfunction

    function! CmdLine(str)
        exe "menu Foo.Bar :" . a:str
        emenu Foo.Bar
        unmenu Foo
    endfunction

    " When editing a file, always jump to the last cursor position
    autocmd BufReadPost *
          \ if ! exists("g:leave_my_cursor_position_alone") |
          \     if line("'\"") > 0 && line ("'\"") <= line("$") |
          \         exe "normal g'\"" |
          \     endif |
          \ endif

    " w!! to sudo & write a file
    cmap w!! w !sudo tee >/dev/null % 

    :command W w
    :command WQ wq
    :command Wq wq
    :command Q q
    :command Qa qa
    :command QA qa

    "--------
    "for macvim
    "--------
    if has("gui_running")
        set go=aAce  " remove toolbar
        "set transparency=30
        set guifont=Source\ Code\ Pro\ for\ Powerline:h13
        set showtabline=2 " always show tabs in gvim, but not vim
        set columns=140
        set lines=40
        noremap <C-Tab> :tabnext<CR>
        noremap <C-S-Tab> :tabprev<CR>
        map <D-1> 1gt
        map <D-2> 2gt
        map <D-3> 3gt
        map <D-4> 4gt
        map <D-5> 5gt
        map <D-6> 6gt
        map <D-7> 7gt
        map <D-8> 8gt
        map <D-9> 9gt
        map <D-0> :tablast<CR>
    endif

2、 .vim/bundles.vim 配置文件

    set nocompatible               " be iMproved
    filetype off                   " required!

    set rtp+=~/.vim/bundle/Vundle.vim/

    call vundle#rc()

    " 让vundle管理插件版本,必须
    Plugin 'VundleVim/Vundle.vim'

    " vim-scripts上的插件
    " Plugin 'vimcdoc'

    " Github上的插件
    " 格式为 Plugin '用户名/插件仓库名'

    " 由Git支持但不再github上的插件仓库 Plugin 'git clone 后面的地址'
    " Plugin 'git://git.wincent.com/command-t.git'

    " 本地的Git仓库(例如自己的插件) Plugin 'file:///+本地插件仓库绝对路径'
    " Plugin 'file:///home/gmarik/path/to/plugin'

    " 插件在仓库的子目录中.
    " 正确指定路径用以设置runtimepath. 以下范例插件在sparkup/vim目录下
    " Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}

    " 避免插件名冲突,例如L9已存在,则可以指定
    " Plugin 'user/L9', {'name': 'newL9'}


    "------------------
    " Code Completions
    "------------------
    Plugin 'Shougo/neocomplete'
    Plugin 'Shougo/neosnippet'
    Plugin 'Shougo/neosnippet-snippets'
    Plugin 'ervandew/supertab'
    Plugin 'mattn/emmet-vim'
    Plugin 'rizzatti/funcoo.vim'

    "-----------------
    " Fast navigation
    "-----------------
    "Plugin 'tsaleh/vim-matchit'
    Plugin 'Lokaltog/vim-easymotion'
    Plugin 'vim-scripts/ShowMarks'
    Plugin 'vim-scripts/Marks-Browser'
    Plugin 'spiiph/vim-space'
    Plugin 'tpope/vim-unimpaired'
    Plugin 'tpope/vim-repeat'

    "--------------
    " Fast editing
    "--------------
    Plugin 'tpope/vim-surround'
    Plugin 'scrooloose/nerdcommenter'
    Plugin 'sjl/gundo.vim'
    Plugin 'kana/vim-smartinput'
    Plugin 'godlygeek/tabular'
    Plugin 'nathanaelkane/vim-indent-guides'
    Plugin 'yonchu/accelerated-smooth-scroll'
    Plugin 'michaeljsmith/vim-indent-object'
    Plugin 'vim-scripts/argtextobj.vim'
    Plugin 'bkad/CamelCaseMotion'
    "--------------
    " IDE features
    "--------------
    Plugin 'scrooloose/nerdtree'
    Plugin 'majutsushi/tagbar'
    Plugin 'mileszs/ack.vim'
    Plugin 'kien/ctrlp.vim'
    Plugin 'tpope/vim-fugitive'
    Plugin 'Lokaltog/vim-powerline'
    "Plugin 'bling/vim-airline'
    Plugin 'scrooloose/syntastic'
    Plugin 'Shougo/unite.vim'
    Plugin 'vim-scripts/mru.vim'
    Plugin 'junegunn/goyo.vim'
    Plugin 'amix/vim-zenroom2'
    Plugin 'dyng/ctrlsf.vim'
    Plugin 'airblade/vim-gitgutter'
    Plugin 'vim-scripts/bufexplorer.zip'
    Plugin 'vim-scripts/session.vim--Odding'
    Plugin 'rizzatti/dash.vim'
    Plugin 'vim-scripts/Conque-Shell'

    "-------------
    " Other Utils
    " ------------
    Plugin 'terryma/vim-expand-region'
    Plugin 'nvie/vim-togglemouse'
    Plugin 'vim-scripts/Gist.vim'
    Plugin 'vim-scripts/cmdline-completion'
    Plugin 'mattn/webapi-vim'
    "Plugin "vim-pandoc/vim-pandoc"
    Plugin 'tpope/vim-pastie'
    Plugin 'bronson/vim-trailing-whitespace'
    Plugin 'asins/vimcdoc'

    "----------------------------------------
    " Syntax/Indent for language enhancement
    "----------------------------------------

    "js
    Plugin 'jelera/vim-javascript-syntax'
    Plugin 'maksimr/vim-jsbeautify'

    " web backend
    Plugin '2072/PHP-Indenting-for-VIm'
    "Plugin 'tpope/vim-rails'
    Plugin 'lepture/vim-jinja'
    "Plugin 'digitaltoad/vim-jade'

    " web front end
    Plugin 'othree/html5.vim'
    Plugin 'tpope/vim-haml'
    Plugin 'nono/jquery.vim'
    Plugin 'pangloss/vim-javascript'
    Plugin 'kchmck/vim-coffee-script'
    "Plugin 'groenewege/vim-less'
    "Plugin 'wavded/vim-stylus'

    " markup language
    Plugin 'tpope/vim-markdown'

    " Ruby
    "Plugin 'tpope/vim-endwise'

    " Scheme
    Plugin 'kien/rainbow_parentheses.vim'

    "--------------
    " Color Scheme
    "--------------
    Plugin 'rickharris/vim-blackboard'
    Plugin 'altercation/vim-colors-solarized'
    Plugin 'rickharris/vim-monokai'
    Plugin 'tpope/vim-vividchalk'
    Plugin 'Lokaltog/vim-distinguished'
    Plugin 'chriskempson/vim-tomorrow-theme'
    Plugin 'vim-scripts/peaksea'
    Plugin 'morhetz/gruvbox'
    Plugin 'marcelbeumer/twilight.vim'
    Plugin 'fromonesrc/codeschool.vim'
    Plugin 'tomasr/molokai'

    " 必须   你的所有插件需要在下面这行之前
    call vundle#end()            

    filetype plugin indent on    " 必须  加载vim自带和插件相应的语法和文件类型相关脚本

3、 .vim/neocomplete.conf

    "Note: This option must set it in .vimrc(_vimrc).  NOT IN .gvimrc(_gvimrc)!
    " Disable AutoComplPop.
    let g:acp_enableAtStartup = 0
    " Use neocomplete.
    let g:neocomplete#enable_at_startup = 1
    " Use smartcase.
    let g:neocomplete#enable_smart_case = 1
    " Set minimum syntax keyword length.
    let g:neocomplete#sources#syntax#min_keyword_length = 3
    let g:neocomplete#lock_buffer_name_pattern = '\*ku\*'

    " Define dictionary.
    let g:neocomplete#sources#dictionary#dictionaries = {
        \ 'default' : '',
        \ 'vimshell' : $HOME.'/.vimshell_hist',
        \ 'scheme' : $HOME.'/.gosh_completions'
            \ }

    " Define keyword.
    if !exists('g:neocomplete#keyword_patterns')
        let g:neocomplete#keyword_patterns = {}
    endif
    let g:neocomplete#keyword_patterns['default'] = '\h\w*'

    " Plugin key-mappings.
    inoremap <expr><C-g>     neocomplete#undo_completion()
    inoremap <expr><C-l>     neocomplete#complete_common_string()

    " Recommended key-mappings.
    " <CR>: close popup and save indent.
    inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR>
    function! s:my_cr_function()
      return (pumvisible() ? "\<C-y>" : "" ) . "\<CR>"
      " For no inserting <CR> key.
      "return pumvisible() ? "\<C-y>" : "\<CR>"
    endfunction
    " <TAB>: completion.
    inoremap <expr><TAB>  pumvisible() ? "\<C-n>" : "\<TAB>"
    " <C-h>, <BS>: close popup and delete backword char.
    inoremap <expr><C-h> neocomplete#smart_close_popup()."\<C-h>"
    inoremap <expr><BS> neocomplete#smart_close_popup()."\<C-h>"
    " Close popup by <Space>.
    "inoremap <expr><Space> pumvisible() ? "\<C-y>" : "\<Space>"

    " AutoComplPop like behavior.
    "let g:neocomplete#enable_auto_select = 1

    " Shell like behavior(not recommended).
    "set completeopt+=longest
    "let g:neocomplete#enable_auto_select = 1
    "let g:neocomplete#disable_auto_complete = 1
    "inoremap <expr><TAB>  pumvisible() ? "\<Down>" : "\<C-x>\<C-u>"

    " Enable omni completion.
    autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS
    autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags
    autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
    autocmd FileType python setlocal omnifunc=pythoncomplete#Complete
    autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags

    " Enable heavy omni completion.
    if !exists('g:neocomplete#sources#omni#input_patterns')
      let g:neocomplete#sources#omni#input_patterns = {}
    endif
    "let g:neocomplete#sources#omni#input_patterns.php = '[^. \t]->\h\w*\|\h\w*::'
    "let g:neocomplete#sources#omni#input_patterns.c = '[^.[:digit:] *\t]\%(\.\|->\)'
    "let g:neocomplete#sources#omni#input_patterns.cpp = '[^.[:digit:] *\t]\%(\.\|->\)\|\h\w*::'

    " For perlomni.vim setting.
    " https://github.com/c9s/perlomni.vim
    let g:neocomplete#sources#omni#input_patterns.perl = '\h\w*->\h\w*\|\h\w*::'