centos使用--vim配置和推薦插件使用

配置過程php

1.配置vim,只需在Home目錄建立一個~/.vimrc文件便可以配置vim了css

2.按照下面給出的vimrc配置內容修改~/.vimrc文件html

3.安裝ctagsvue

yum install ctags

4.安裝Vundel並安裝插件java

  • git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
  • 運行 vim 打開一個文件,再運行 :PluginInstall

1.vimrc的配置內容

" 定義快捷鍵的前綴,即 <Leader>
let mapleader=";"

" >>
" 文件類型偵測

" 開啓文件類型偵測
filetype on
" 根據偵測到的不一樣類型加載對應的插件
filetype plugin on

" <<

" >>
" vim 自身(非插件)快捷鍵

" 定義快捷鍵到行首和行尾
nmap LB 0
nmap LE $

" 定義快捷鍵關閉當前分割窗口
nmap <Leader>q :q<CR>
" 定義快捷鍵保存當前窗口內容
nmap <Leader>w :w<CR>
" 定義快捷鍵保存全部窗口內容並退出 vim
nmap <Leader>WQ :wa<CR>:q<CR>
" 不作任何保存,直接退出 vim
nmap <Leader>Q :qa!<CR>

" 定義快捷鍵在結對符之間跳轉
nmap <Leader>M %


" <<

" 讓配置變動當即生效
"autocmd BufWritePost $MYVIMRC source $MYVIMRC

" >>
" 其餘

" 開啓實時搜索功能
set incsearch

" 搜索時大小寫不敏感
set ignorecase

" 關閉兼容模式
set nocompatible

"設置空格
set backspace=indent,eol,start

" vim 自身命令行模式智能補全
set wildmenu

" <<

" >>>>
" 插件安裝

" vundle 環境設置
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
" vundle 管理的插件列表必須位於 vundle#begin() 和 vundle#end() 之間
call vundle#begin()

Plugin 'VundleVim/Vundle.vim'
Plugin 'altercation/vim-colors-solarized'
Plugin 'tomasr/molokai'
Plugin 'vim-scripts/phd'
Plugin 'Lokaltog/vim-powerline'
Plugin 'octol/vim-cpp-enhanced-highlight'
Plugin 'nathanaelkane/vim-indent-guides'
Plugin 'derekwyatt/vim-fswitch'
Plugin 'kshenoy/vim-signature'
Plugin 'vim-scripts/BOOKMARKS--Mark-and-Highlight-Full-Lines'
Plugin 'majutsushi/tagbar'
Plugin 'vim-scripts/indexer.tar.gz'
Plugin 'vim-scripts/DfrankUtil'
Plugin 'vim-scripts/vimprj'
Plugin 'dyng/ctrlsf.vim'
Plugin 'terryma/vim-multiple-cursors'
Plugin 'scrooloose/nerdcommenter'
Plugin 'vim-scripts/DrawIt'
Plugin 'SirVer/ultisnips'
Plugin 'derekwyatt/vim-protodef'
Plugin 'scrooloose/nerdtree'
Plugin 'fholgado/minibufexpl.vim'
Plugin 'gcmt/wildfire.vim'
Plugin 'sjl/gundo.vim'
Plugin 'Lokaltog/vim-easymotion'
Plugin 'suan/vim-instant-markdown'
Plugin 'lilydjwg/fcitx.vim'
Plugin '2072/PHP-Indenting-for-VIm'
Plugin 'SyntaxAttr.vim'
Plugin 'shawncplus/phpcomplete.vim'
Plugin 'tpope/vim-unimpaired.git'
Plugin 'PDV--phpDocumentor-for-Vim'
Plugin 'Shougo/neocomplcache'
Plugin 'scrooloose/syntastic'
Plugin 'mattn/emmet-vim'
Plugin 'taglist.vim'
Plugin 'SearchComplete'
Plugin 'ctrlpvim/ctrlp.vim'

" 插件列表結束
call vundle#end()
filetype plugin indent on
" <<<<

" 配色方案
set background=dark
"colorscheme solarized
colorscheme molokai
"colorscheme phd
"molokai{{{
 set rtp+=/usr/local/lib/python2.7/site-packages/powerline/bindings/vim/
 set laststatus=2
 set t_Co=256
 colo molokai
 let g:molokai_original = 1
 "}}}
 
"Shougo/neocomplcache{{{
"Bundle 'Shougo/neocomplcache'
set completeopt-=preview
let g:neocomplcache_enable_at_startup = 1
let g:neocomplcache_enable_smart_case = 1
let g:neocomplcache_enable_camel_case_completion = 1
let g:neocomplcache_enable_underbar_completion = 1
let g:neocomplcache_caching_limit_file_size = 50000000
let g:neocomplcache_min_syntax_length = 2
"<CR>: close popup and save indent.
inoremap <expr><CR>  neocomplcache#smart_close_popup() . "\<CR>"
"<TAB>: completion. NO USE with snipmate
inoremap <expr><TAB>  pumvisible() ? "\<C-n>" : "\<TAB>"
"<C-h>, <BS>: close popup and delete backword char.
inoremap <expr><C-h> neocomplcache#smart_close_popup()."\<C-h>"
inoremap <expr><BS> neocomplcache#smart_close_popup()."\<C-h>"
inoremap <expr><C-Y>  neocomplcache#close_popup()
inoremap <expr><C-e>  neocomplcache#cancel_popup()
"let g:neocomplcache_enable_auto_select = 1
"}}}
"scrooloose/nerdtree{{{
"Bundle 'scrooloose/nerdtree'

" let g:NERDChristmasTree = 1
"let g:NERDTreeQuitOnOpen = 1
"let g:NERDTreeMinimalUI = 1
"let g:NERDShowBookMarks = 1
"let g:NERDTreeIgnore = ['\.pyc$']
map <Leader>n  :NERDTreeToggle<CR>
" noremap <F2> :NERDTreeToggle<cr>
"}}}

let g:ctrlp_map = '<leader>p'
let g:ctrlp_cmd = 'CtrlP'
map <leader>f :CtrlPMRU<CR>
let g:ctrlp_custom_ignore = {
    \ 'dir':  '\v[\/]\.(git|hg|svn|rvm)$',
    \ 'file': '\v\.(exe|so|dll|zip|tar|tar.gz|pyc)$',
    \ }
let g:ctrlp_working_path_mode=0
let g:ctrlp_match_window_bottom=1
let g:ctrlp_max_height=15
let g:ctrlp_match_window_reversed=0
let g:ctrlp_mruf_max=500
let g:ctrlp_follow_symlinks=1
"scrooloose/syntastic{{{
"Bundle 'scrooloose/syntastic'
let g:syntastic_always_populate_loc_list = 1
"let g:syntastic_aggregate_errors = 1
let g:syntastic_mode_map = { 'mode': 'active',
            \ 'active_filetypes': [],
            \ 'passive_filetypes': ['python'] }
"}}}

" >>
" 營造專一氣氛

" 禁止光標閃爍
set gcr=a:block-blinkon0

" 禁止顯示滾動條
set guioptions-=l
set guioptions-=L
set guioptions-=r
set guioptions-=R

" 禁止顯示菜單和工具條
set guioptions-=m
set guioptions-=T

" >>
" 輔助信息

" 老是顯示狀態欄
set laststatus=2

" 顯示光標當前位置
"set ruler

" 開啓行號顯示
set number

" 高亮顯示當前行/列
"set cursorline
"set cursorcolumn

" 高亮顯示搜索結果
set hlsearch

" <<

" >>
" 其餘美化

" 設置 gvim 顯示字體
set guifont=YaHei\ Consolas\ Hybrid\ 10.5

" 禁止折行
"set nowrap

" 設置狀態欄主題風格
let g:Powerline_colorscheme='solarized256'

" <<

" >>
" 語法分析

" 開啓語法高亮功能
syntax enable
" 容許用指定語法高亮配色方案替換默認方案
syntax on

" <<

" >>
" 縮進

" 自適應不一樣語言的智能縮進
filetype indent on

" 將製表符擴展爲空格
set expandtab
" 設置編輯時製表符佔用空格數
set tabstop=4
" 設置格式化時製表符佔用空格數
set shiftwidth=4
" 讓 vim 把連續數量的空格視爲一個製表符
set softtabstop=4

" 縮進可視化插件 Indent Guides
" 隨 vim 自啓動
let g:indent_guides_enable_on_vim_startup=1
" 從第二層開始可視化顯示縮進
let g:indent_guides_start_level=2
" 色塊寬度
let g:indent_guides_guide_size=1
" 快捷鍵 i 開/關縮進可視化
nmap <silent> <Leader>i <Plug>IndentGuidesToggle

" <<

" 模板補全
" UltiSnips 的 tab 鍵與 YCM 衝突,從新設定
let g:UltiSnipsSnippetDirectories=["mysnippets"]
let g:UltiSnipsExpandTrigger="<leader><tab>"
let g:UltiSnipsJumpForwardTrigger="<leader><tab>"
let g:UltiSnipsJumpBackwardTrigger="<leader><s-tab>"


" 設置空格替換/
map <space> /

"Filetype Specified {{{
"
"=>PHP section

autocmd FileType php inoremap <buffer> {<cr> {<cr>}<esc>O
autocmd FileType php noremap <buffer> <leader>ep i<?php  ?><esc>hhi
autocmd FileType php noremap <buffer> <leader>eP i<?php<cr>?><esc>O<esc>==i
autocmd FileType php noremap <buffer> <leader>ee i<?php echo ; ?><esc>hhhi
autocmd FileType php setlocal cindent
autocmd FileType php setlocal makeprg=php\ %
autocmd FileType php setlocal omnifunc=phpcomplete#CompletePHP
autocmd BufRead,BufNewFile *.ctp set filetype=php.html
let g:php_folding = 1
let g:php_strict_blocks = 1
let g:php_sql_query = 1
let g:php_htmlInStrings = 1
let g:php_baseLib = 1
let g:php_special_vars = 1
let g:php_special_functions = 1
let g:php_alt_assignByReference = 1
let g:php_smart_members = 1

let g:php_nested_functions = 1
let g:php_fold_heredoc = 1
""""""""""""""""""""""""""""""
" => CSS section
""""""""""""""""""""""""""""""
autocmd FileType css inoremap <buffer> {<cr> {<esc>o}<esc>O
autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS

""""""""""""""""""""""""""""""
" => Python section
""""""""""""""""""""""""""""""

au FileType python setlocal makeprg=ipython\ %

let python_highlight_all = 1 

au BufNewFile,BufRead *.jinja set syntax=htmljinja
au BufNewFile,BufRead *.mako set ft=mako
au BufNewFile,BufRead *.volt set ft=html

au FileType python highlight OverLength ctermbg=red ctermfg=white guibg=#592929
au FileType python match OverLength /\%80v.\+/

""""""""""""""""""""""""""""""
" => C section
"""""""""""""""""""""""""""""""
autocmd FileType C inoremap <buffer> {<cr> {<esc>o}<esc>O
autocmd FileType C setlocal makeprg=gcc\ -o\ a\ % \&\& ./a

""""""""""""""""""""""""""""""
" => JavaScript section
"""""""""""""""""""""""""""""""
au FileType javascript inoremap <buffer> {<cr> {<esc>o}<esc>O
" au FileType javascript call JavaScriptFold()
au FileType javascript setl fen
au FileType javascript setl nocindent

au FileType javascript imap <c-t> AJS.log();<esc>hi
au FileType javascript imap <c-a> alert();<esc>hi

function! JavaScriptFold()
    setl foldmethod=syntax
    setl foldlevelstart=1
    syn region foldBraces start=/{/ end=/}/ transparent fold keepend extend

    function! FoldText()
        return substitute(getline(v:foldstart), '{.*', '{...}', '')
    endfunction
    setl foldtext=FoldText()
endfunction

au FileType volt set ft=html

""""""""""""""""""""""""""""""
" => ActionScript section
"""""""""""""""""""""""""""""""
au BufNewFile,BufRead *.as set filetype=actionscript
au BufNewFile,BufRead *.blade.php set filetype=html
au BufNewFile,BufRead *.vue set filetype=html

""""""""""""""""""""""""""""""
" => Vim grep
""""""""""""""""""""""""""""""
let Grep_Skip_Dirs = 'RCS CVS SCCS .svn generated'
set grepprg=/bin/grep\ -nH
"}}}

2.Vundle使用

簡介

Vundle 是 Vim bundle 的簡稱,是一個 Vim 插件管理器.python

安裝vundle

$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

默認安裝在/.vim/bundle/vundle下;git

配置vundle插件:

能夠在終端經過vim打開~/.vimrc文件,github

$vim ~/.vimrc

將如下加在.vimrc文件中,加入以後保存以後就可使用vundle了。
添加的配置信息(樣例)
注:之後安裝新插件就直接編輯vimrc,添加plugin就好了,在這裏咱們添加的plugin只是例子,你能夠不安裝這些插件,換上本身須要安裝的插件。sql

set nocompatible              " 去除VI一致性,必需要添加
filetype off                  " 必需要添加

" 設置包括vundle和初始化相關的runtime path
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" 另外一種選擇, 指定一個vundle安裝插件的路徑
"call vundle#begin('~/some/path/here')

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

" 如下範例用來支持不一樣格式的插件安裝.
" 請將安裝插件的命令放在vundle#begin和vundle#end之間.

" Github上的插件
" 格式爲 Plugin '用戶名/插件倉庫名'
Plugin 'tpope/vim-fugitive'

" 來自 http://vim-scripts.org/vim/scripts.html 的插件
" Plugin '插件名稱' 其實是 Plugin 'vim-scripts/插件倉庫名' 只是此處的用戶名能夠省略
Plugin 'L9'

" 由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 'ascenator/L9', {'name': 'newL9'}

" 你的全部插件須要在下面這行以前
call vundle#end()            " 必須

filetype plugin indent on    " 必須 加載vim自帶和插件相應的語法和文件類型相關腳本

" 忽視插件改變縮進,可使用如下替代:
"filetype plugin on

安裝須要的插件

  1. 將想要安裝的插件,按照地址填寫方法,將地址填寫在vundle#begin和vundle#end之間就能夠
  2. 保存以後,安裝插件。

運行 vim ,再運行 :PluginInstall

安裝完成以後,插件就可使用。

移除不須要的插件

  1. 編輯.vimrc文件移除的你要移除的插件所對應的plugin那一行。
  2. 保存退出當前的vim
  3. 從新打開vim,輸入命令BundleClean。

其餘經常使用命令

  1. 更新插件BundleUpdate
  2. 列出全部插件BundleList
  3. 查找插件BundleSearch

3 使用插件

3.1 NERDTree

打開 ~/.vimrc 增長配置

call vundle#begin()

"其餘一些插件
Plugin 'scrooloose/nerdtree'

call vundle#end()

運行 vim ,再運行 :PluginInstall

再次打開 ~/.vimrc 個性化配置

map <Leader>n  :NERDTreeToggle<CR>

這樣就能夠打開vim以後,先按;而後n,快捷打開NERDTree了

若是沒有定義leader的話請定義

let mapleader=";"

經常使用操做

ctrl + w + h    光標 focus 左側樹形目錄
ctrl + w + l    光標 focus 右側文件顯示窗口
ctrl + w + w    光標自動在左右側窗口切換 #!!!
ctrl + w + r    移動當前窗口的佈局位置
i       split 一個新窗口打開選中文件,並跳到該窗口
s       vsplit 一個新窗口打開選中文件,並跳到該窗口
m       顯示文件系統菜單,而後根據提示進行文件的操做如新建,重命名等

3.2 easymotion

Plugin 'Lokaltog/vim-easymotion'

經常使用操做

;;w 當前光標後的全部word,提供快捷鍵跳轉
;;b 當前光標前的全部word,提供快捷鍵跳轉
;;j 當前光標後的全部行,提供快捷鍵跳轉
;;k 當前光標後的全部行,提供快捷鍵跳轉

3.3 ctrlp

引入

Plugin 'ctrlpvim/ctrlp.vim'

其它配置

let g:ctrlp_map = '<leader>p'
let g:ctrlp_cmd = 'CtrlP'
map <leader>f :CtrlPMRU<CR>
let g:ctrlp_custom_ignore = {
    \ 'dir':  '\v[\/]\.(git|hg|svn|rvm)$',
    \ 'file': '\v\.(exe|so|dll|zip|tar|tar.gz|pyc)$',
    \ }
let g:ctrlp_working_path_mode=0
let g:ctrlp_match_window_bottom=1
let g:ctrlp_max_height=15
let g:ctrlp_match_window_reversed=0
let g:ctrlp_mruf_max=500
let g:ctrlp_follow_symlinks=1

經常使用操做

<leader>f   # 模糊搜索最近打開的文件(MRU)
<leader>p   # 模糊搜索當前目錄及其子目錄下的全部文件

//搜索框出來後,輸入關鍵詞,而後能夠作以下操做
ctrl + j/k  # 進行上下選擇
ctrl + x    # 在當前窗口水平分屏打開文件
ctrl + v    # 同上, 垂直分屏
ctrl + t    # 在tab中打開

//在搜索框狀態下,還能夠進行額外操做
F5          # 刷新可搜索文件
<c-d>       # 只能搜索全路徑文件
<c-r>       # 可使用正則搜索文件
相關文章
相關標籤/搜索