macvim 配置

sublime用着虽然很不错,但是还是有些不习惯的,于是就折腾了下vim。

""===============================
" 更新时间:2015-12-03 12:15
""===============================


" 设置vundle 
set nocompatible
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
Bundle 'gmarik/vundle'




""===============================
""自定义插件vundle设置
" :BundleList - list configured BundleList
" :BundleInstall(!) - install(update) bundles 
" :BundleSearch(!) foo - search(or refresh cache first) for foo "
" :BundleClean(!) - confirm(or auto-approve) removal of unused bundles
" 更新插件:BundleUpdate
""===============================


"=== Github vim-scripts repos "
" 快速注释、反注释代码
" gc gcc注释
Bundle 'tComment'


"=== Github User repos "
""主题
Bundle 'flazz/vim-colorschemes'
""以树状方式浏览系统中的文件和目录
Bundle 'scrooloose/nerdtree'
"设置子窗口位置"
let g:NERDTreeWinPos = "left"
" 设置NERDTree子窗口宽度
let NERDTreeWinSize=32"
map <C-n> :NERDTreeToggle<CR>


"打入快速输入括号,引号等,避免出错
Bundle 'spf13/vim-autoclose'


"ctrl + p 文件模糊搜索
Bundle 'kien/ctrlp.vim'
let g:ctrlp_cmd = 'CtrlP'
let g:ctrlp_custom_ignore = {
  \ 'dir':  '\.git$\|\.hg$\|\.svn$\|\.yardoc\|public\/images\|public\/system\|data\|log\|tmp$',
  \ 'file': '\.exe$\|\.so$\|\.dat$'
  \ }


"语法检测
Bundle 'scrooloose/syntastic'
let g:syntastic_check_on_open=1
let g:syntastic_html_tidy_ignore_errors=[" proprietary attribute \"ng-"]
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_wq = 0
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
"自动补全end关键字"
Bundle 'tpope/vim-endwise'
"ruby语法高亮,智能缩进,集成编译插件
Bundle 'vim-ruby/vim-ruby'
"Vim开发Rails不可缺少的一个插件"
Bundle 'tpope/vim-rails'
"快速对齐 gg = G
Bundle 'godlygeek/tabular'




"快速选中结对符,用空格(space)选中
Bundle 'gcmt/wildfire.vim'
map <SPACE> <Plug>(wildfire-fuel)
vmap <S-SPACE> <Plug>(wildfire-water)
"适用于哪些结对符
let g:wildfire_objects = ["i'", 'i"', "i)", "i]", "i}", "i>", "ip"]




"git控制下,文件改变标示
""Bundle 'airblade/vim-gitgutter'
Bundle 'git://github.com/airblade/vim-gitgutter.git'


Bundle 'yegappan/grep'
Bundle 'mileszs/ack.vim'
Bundle 'dyng/ctrlsf.vim'
" CtrlSF搜索
" 默认程序为ACK而不是AG
let g:ctrlsf_ackprg = 'ack'                                     
"使用 Ctrl + f 打开查找 
nmap     <C-F> <Plug>CtrlSFPrompt 
vmap     <C-F>f <Plug>CtrlSFVwordPath 
vmap     <C-F>F <Plug>CtrlSFVwordExec 
nmap     <C-F>n <Plug>CtrlSFCwordPath 
nmap     <C-F>p <Plug>CtrlSFPwordPath 
nnoremap <C-F>o :CtrlSFOpen<CR> 




""替换
" 定义快捷键的前缀,即 <Leader>
let mapleader=";"


" 替换函数。参数说明:
" confirm:是否替换前逐一确认
" wholeword:是否整词匹配
" replace:被替换字符串
"替换之前要先确定范围 bufdo bufdo! argdo argsdo argsdo!


function! Replace(confirm, wholeword, replace)
    wa
    let flag = ''
    if a:confirm
        let flag .= 'gec'
    else
        let flag .= 'ge'
    endif
    let search = ''
    if a:wholeword
        let search .= '\<' . escape(expand('<cword>'), '/\.*$^~[') . '\>'
    else
        let search .= expand('<cword>')
    endif
    let replace = escape(a:replace, '/\&~')
    execute 'argdo %s/' . search . '/' . replace . '/' . flag . '| update'
endfunction
" 不确认、非整词
nnoremap <Leader>R :call Replace(0, 0, input('Replace '.expand('<cword>').' with: '))<CR>
" 不确认、整词
nnoremap <Leader>rw :call Replace(0, 1, input('Replace '.expand('<cword>').' with: '))<CR>
" 确认、非整词
nnoremap <Leader>rc :call Replace(1, 0, input('Replace '.expand('<cword>').' with: '))<CR>
" 确认、整词
nnoremap <Leader>rcw :call Replace(1, 1, input('Replace '.expand('<cword>').' with: '))<CR>
nnoremap <Leader>rwc :call Replace(1, 1, input('Replace '.expand('<cword>').' with: '))<CR>






"airline 设置
"git clone [email protected]:Lokaltog/powerline-fonts.git ~/Library/Fonts/powerline-fonts
"./install
"themes: https://github.com/bling/vim-airline/tree/master/autoload/airline/themes
"https://github.com/bling/vim-airline/wiki/Screenshots


Bundle 'bling/vim-airline'
"显示状态栏
set laststatus=2
" 使用powerline打过补丁的字体
let g:airline_powerline_fonts = 1
"主题
let g:airline_theme='powerlineish'


let g:airline#extensions#tabline#enabled = 0 
" tabline中当前buffer两端的分隔字符
let g:airline#extensions#tabline#left_sep = ' '
" tabline中未激活buffer两端的分隔字符
let g:airline#extensions#tabline#left_alt_sep = '|'
" tabline中buffer显示编号
let g:airline#extensions#tabline#buffer_nr_show = 1


" 映射切换buffer的键位,你只能通过 :ls 来查看buffer.
"然后通过 :bn (buffer next)和 :bp (buffer previous),或者 :b num (打开编号为num的buffer)这样的命令来切换不同文件
nnoremap [b :bp<CR>
nnoremap ]b :bn<CR>


""set showtabline=0              始终不显示标签页 
""set showtabline=1              新建了标签页才会在窗口上方显示标签栏 
""set showtabline=2              ""总是显示标签栏 






Bundle 'pbrisbin/vim-mkdir'




Bundle 'amirh/HTML-AutoCloseTag'
Bundle 'hail2u/vim-css3-syntax'
Bundle 'slim-template/vim-slim'
Bundle 'tpope/vim-haml'
Bundle 'MarcWeber/vim-addon-mw-utils'
if executable('ctags')
  Bundle 'majutsushi/tagbar'
endif
"tagbar是一个taglist的替代品
nmap tl :TagbarToggle<CR>




"Github non repos "
Bundle '[email protected]:vim-scripts/taglist.vim.git'
Bundle '[email protected]:vim-scripts/buftabs.git'


"================================






let g:rubycomplete_buffer_loading = 1
let g:rubycomplete_classes_in_global = 1
let g:rubycomplete_rails = 1






" 自适应不同语言的智能缩进"
filetype plugin indent on
"设置语法高亮"
syntax enable
syntax on
"设置编码"
set encoding=utf-8
set fileencodings=utf-8,gbk,ucs-bom,gb18030,gb2312,cp936
"显示行号"
set number
"设置默认窗口大小"
set lines=44 columns=150
"调色版"
colorscheme desertEx
"在Insert模式下,设置Backspace键如何删除光标前边的字符。这里三个值分别表示空白字符,分行符和插入模式之前的字符"
set backspace=indent,eol,start
"保存700条命令历史记录"
set history=700
"总是在窗口右下角显示光标的位置"
set ruler
"忽略大小写"
set ignorecase
"启动搜索高亮."
set hlsearch
"在查找时输入字符过程中就高亮显示匹配点。然后回车跳到该匹配点。"
set incsearch
" 总是显示状态栏"
set laststatus=2
" 高亮显示当前行"
set cursorline
" 基于缩进或语法进行代码折叠
set foldmethod=indent
" 启动 vim 时关闭折叠代码
set nofoldenable
" 设置 gvim 显示字体
"set guifont=Monaco:h13
set guifont=Literation_Mono_Powerline:h16
"vim 自身命令行模式智能补全
set wildmenu


" 禁止显示滚动条
set guioptions-=l
set guioptions-=L
set guioptions-=r
set guioptions-=R


" 禁止显示菜单和工具条
set guioptions-=m
set guioptions-=T




" 将制表符扩展为空格
set expandtab
" 设置编辑时制表符占用空格数
set tabstop=4
" 设置格式化时制表符占用空格数
set shiftwidth=4
" 让 vim 把连续数量的空格视为一个制表符
set softtabstop=4




"Python
Bundle 'python-syntax'
Bundle 'kevinw/pyflakes-vim'


"CTRLSpace
"ctrl + space 键盘弹出搜索框
"
"CtrlSpace has 5 lists:


"" Buffer List (<h> for Home)
"" File List (<o> for Open)
"" Tab List (<l> for Lists) 搜索tab名字,一般不常用
"" Workspace List (<w>)
"" Bookmark List (<b>) 不常用
" 相应的大写 直接进入搜索模式
" H 进入书签搜索模式,直接输入关键字即可搜索
" O 进入文件搜索模式,直接输入关键字即可搜索
"
Bundle 'szw/vim-ctrlspace'
set hidden


if has("gui_running")
    " Settings for MacVim and Inconsolata font
    let g:CtrlSpaceSymbols = { "File": "◯", "CTab": "▣", "Tabs": "▢" }
endif


if executable("ag")
    let g:CtrlSpaceGlobCommand = 'ag -l --nocolor -g ""'
endif


let g:CtrlSpaceSearchTiming = 100


hi link CtrlSpaceNormal   PMenu
hi link CtrlSpaceSelected PMenuSel
hi link CtrlSpaceSearch   Search
hi link CtrlSpaceStatus   StatusLine


hi link CtrlSpaceSearch IncSearch


nnoremap <silent><C-p> :CtrlSpace O<CR>


let g:CtrlSpaceLoadLastWorkspaceOnStart = 1
let g:CtrlSpaceSaveWorkspaceOnSwitch = 1
let g:CtrlSpaceSaveWorkspaceOnExit = 1




"括号高亮
Bundle 'kien/rainbow_parentheses.vim'
let g:rbpt_colorpairs = [
    \ ['brown',       'RoyalBlue3'],
    \ ['Darkblue',    'SeaGreen3'],
    \ ['darkgray',    'DarkOrchid3'],
    \ ['darkgreen',   'firebrick3'],
    \ ['darkcyan',    'RoyalBlue3'],
    \ ['darkred',     'SeaGreen3'],
    \ ['darkmagenta', 'DarkOrchid3'],
    \ ['brown',       'firebrick3'],
    \ ['gray',        'RoyalBlue3'],
    \ ['darkmagenta', 'DarkOrchid3'],
    \ ['Darkblue',    'firebrick3'],
    \ ['darkgreen',   'RoyalBlue3'],
    \ ['darkcyan',    'SeaGreen3'],
    \ ['darkred',     'DarkOrchid3'],
    \ ['red',         'firebrick3'],
    \ ]


let g:rbpt_max = 16
let g:rbpt_loadcmd_toggle = 0
au VimEnter * RainbowParenthesesToggle
au Syntax * RainbowParenthesesLoadRound
au Syntax * RainbowParenthesesLoadSquare
au Syntax * RainbowParenthesesLoadBraces






if has('lua') 
    Bundle 'Shougo/neocomplete'
    " Use NeoComplete
    " 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
    autocmd FileType ruby setlocal omnifunc=rubycomplete#Complete


    " 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.ruby = '[^. *\t]\.\h\w*\|\h\w*::'
    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*::'
    let g:neocomplete#sources#omni#input_patterns.perl = '\h\w*->\h\w*\|\h\w*::'
endif





你可能感兴趣的:(macvim 配置)