一個vim設置

""===============================
" 更新時間:2015-05-11 17:37
""===============================
" 設置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
""===============================
"=== Github vim-scripts repos "
" 快速註釋、反註釋代碼
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 'tpope/vim-surround'
"打入快速輸入括號,引號等,避免出錯"
Bundle 'spf13/vim-autoclose'
"ctrl + p 文件模糊搜索"
Bundle 'kien/ctrlp.vim'
"Bundle 'ctrlpvim/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'
"在快速的在module, class, method中跳躍"
Bundle 'vim-ruby/vim-ruby'
"Vim開發Rails不可缺少的一個插件"
Bundle 'tpope/vim-rails'
"快速對齊"
Bundle 'godlygeek/tabular'
"在文件中快速定位"
Bundle 'Lokaltog/vim-easymotion'
"自動補全插件"
Bundle 'Shougo/neocomplete'
""代碼補全
Bundle 'Valloric/YouCompleteMe'
"tab 補全代碼
Bundle 'ervandew/supertab'
let g:SuperTabDefaultCompletionType="<C-X><C-O>"
let g:SuperTabRetainCompletionType=2
"快速選中結對符"
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"]
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 = 1
" 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>
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
"Omnicoplete的配置"
" OmniComplete {
if has("autocmd") && exists("+omnifunc")
autocmd Filetype *
\if &omnifunc == "" |
\setlocal omnifunc=syntaxcomplete#Complete |
\endif
endif
" Some convenient mappings
inoremap <expr> <Esc> pumvisible() ? "\<C-e>" : "\<Esc>"
inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>"
inoremap <expr> <Down> pumvisible() ? "\<C-n>" : "\<Down>"
inoremap <expr> <Up> pumvisible() ? "\<C-p>" : "\<Up>"
inoremap <expr> <C-d> pumvisible() ? "\<PageDown>\<C-p>\<C-n>" : "\<C-d>"
inoremap <expr> <C-u> pumvisible() ? "\<PageUp>\<C-p>\<C-n>" : "\<C-u>"
" Automatically open and close the popup menu / preview window
au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif
set completeopt=menu,preview,longest
" }
" Ctags {
""set tags=./tags;/,~/.vimtags
" Make tags placed in .git/tags file available in all levels of a repository
""let gitroot = substitute(system('git rev-parse --show-toplevel'), '[\n\r]', '', 'g')
""if gitroot != ''
"" let &tags = &tags . ',' . gitroot . '/.git/tags'
""endif
" }
" AutoCloseTag {
" Make it so AutoCloseTag works for xml and xhtml files as well
"" au FileType xhtml,xml ru ftplugin/html/autoclosetag.vim
"" nmap <Leader>ac <Plug>ToggleAutoCloseMappings
" }
" neocomplete的配置
" neocomplete {
"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\*'
let g:neocomplete#enable_fuzzy_completion = 1
let g:neocomplete#enable_auto_select = 1
let g:neocomplete#max_list = 5
let g:neocomplete#enable_auto_delimiter = 1
let g:neocomplete#force_overwrite_completefunc = 1
let g:neocomplete#auto_completion_start_length = 2
" 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 neocomplete#close_popup() . "\<CR>"
" For no inserting <CR> key.
return pumvisible() ? neocomplete#close_popup() : "\<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>"
inoremap <expr><C-y> neocomplete#close_popup()
inoremap <expr><C-e> neocomplete#cancel_popup()
" Close popup by <Space>.
"inoremap <expr><Space> pumvisible() ? neocomplete#close_popup() : "\<Space>"
" For cursor moving in insert mode(Not recommended)
"inoremap <expr><Left> neocomplete#close_popup() . "\<Left>"
"inoremap <expr><Right> neocomplete#close_popup() . "\<Right>"
"inoremap <expr><Up> neocomplete#close_popup() . "\<Up>"
"inoremap <expr><Down> neocomplete#close_popup() . "\<Down>"
" Or set this.
"let g:neocomplete#enable_cursor_hold_i = 1
" Or set this.
"let g:neocomplete#enable_insert_char_pre = 1
" 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.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.php = '[^. \t]->\h\w*\|\h\w*::'
let g:neocomplete#sources#omni#input_patterns.perl = '\h\w*->\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.ruby = '[^. *\t]\.\h\w*\|\h\w*::'
let g:neocomplete#sources#omni#input_patterns.go = '\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*::'
" }
"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章