Fork me on GitHub

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

配置过程

1.配置vim,只需在Home目录创建一个~/.vimrc文件即可以配置vim了

2.按照下面给出的vimrc配置内容修改~/.vimrc文件

3.安装ctags

yum install ctags

4.安装Vundel并安装插件

  • 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 插件管理器.

安装vundle

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

默认安装在/.vim/bundle/vundle下;

配置vundle插件:

可以在终端通过vim打开~/.vimrc文件,

$vim ~/.vimrc

将以下加在.vimrc文件中,加入之后保存之后就可以使用vundle了。
添加的配置信息(样例)
注:以后安装新插件就直接编辑vimrc,添加plugin就行了,在这里我们添加的plugin只是例子,你可以不安装这些插件,换上自己需要安装的插件。

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>       # 可以使用正则搜索文件

posted @ 2017-11-07 08:55  archer-wong  阅读(959)  评论(0编辑  收藏  举报