zoukankan      html  css  js  c++  java
  • 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>       # 可以使用正则搜索文件
    
    
  • 相关阅读:
    演示一个简单的Redis队列
    Quartz.net 基于配置的调度程序实践
    阿里云OSS分片上传DEMO
    java基础 -- 关键字static的用法
    java基础 -- 关键字final的用法
    Linux中安装软件和各种常用命令
    python获取网页信息的三种方法
    jquery中获取ajax请求返回数据的方法
    Jquery为动态添加的元素添加事件
    js中时间戳转换成xxxx-xx-xx xx:xx:xx类型日期格式的做法
  • 原文地址:https://www.cnblogs.com/redirect/p/7797282.html
Copyright © 2011-2022 走看看