zoukankan      html  css  js  c++  java
  • vim 常用插件功能跟配置

    在之前的公司,一直是使用别人配置好的vim 环境,他当时配置的功能很强大,查看源码的时候,非常的方便。至少我一直都是用它来看源码,从来没有使用过source insight。现在换了工作,但之前养成的习惯,目前也不大像改变,所以还是希望能够继续使用之前的vim环境。但是,当时使用的时候,从来没有研究过 他那个东西是怎么实现的,仅仅是会使用。现在想自己配置下,这几天结合网上的资料,稍微有了点进展。记录下来

    当时他的那个功能之所以强大,其实不是自己做了什么脚本上的功能,也是根据网上的资料,配备了比较齐全的vim插件。

    这次配置vim 环境,主要参考了 转载自易水博客 [ http://easwy.com/blog/ ]

    这篇博客感觉写的非常好,在这里对作者表示诚心谢意。我接下来的内容,只不过是自己记录下安装的过程,方便自己以后重复使用。其实,没有什么原创东西,大家如果想要配置vim 环境,可以参考上面的地址

    以下安装的插件顺序是自己随机的,并没有一个系统的步骤。

    1.netrw.vim

    netrw.vim是vim的标准插件,它已经伴随vim而发行,不需要安装。它的功能就是显示当前目录下的所有文件跟文件夹

    如,当我在~目录下,执行如下操作的时候

    ubuntu@ubuntu:~$ vim kern

    显示如下截图

    这个界面就是netrw的功能。当然,我们在这个界面可以进行一些操作,具体的可以通过

    :help netrw

    来查看相关命令

    当然,我们还可以通过在.vimrc中进行相关的配置来使用这个插件做些其它的事情,配置如下

    """"""""""""""""""""""""""""""
    " netrw setting
    """"""""""""""""""""""""""""""
    let g:netrw_winsize = 30
    nmap <silent> <leader>fe :Sexplore!<cr>

    如果你在vimrc中添加了上述的配置,那么当你在一个vim 界面下,使用,fe的时候,你会看到如下的结果

    这个功能感觉有点像是:svp filename 打开一个分割窗口

     2.安装 BufExplorer

    这个文件可以显示缓存区内容信息,也就是我们在不同文件间跳转的时候,会记录每次跳转的文件。我们可以通过命令重新打开缓存区的文件

    下载地址

    http://vim.sourceforge.net/scripts/script.php?script_id=42

    解压以后,把里面文件夹里的东西,转到.vim相应文件夹里面

    在vimrc的配置如下

    """"""""""""""""""""""""""""""
    " BufExplorer
    """"""""""""""""""""""""""""""
    let g:bufExplorerDefaultHelp=0       " Do not show default help.
    let g:bufExplorerShowRelativePath=1  " Show relative paths.
    let g:bufExplorerSortBy='mru'        " Sort by most recently used.
    let g:bufExplorerSplitRight=0        " Split left.
    let g:bufExplorerSplitVertical=1     " Split vertically.
    let g:bufExplorerSplitVertSize = 30  " Split width
    let g:bufExplorerUseCurrentWindow=1  " Open in new window.
    autocmd BufWinEnter [Buf List] setl nonumber 

    现在我们执行下,bv命令,就可以看到如下的效果

    左边窗口就是缓冲区里的内容。不过呢,这时候它的显示,跟taglist是有点冲突的,界面显示不美观。所以我们需要借助一个vim插件管理工具winmanager

    3.winmanager

    这个工具可以用来管理vim中的插件,其实主要是管理插件在界面上的显示布局

    Winmanager插件在这里下载:http://vim.sourceforge.net/scripts/script.php?script_id=95

    安装方法也是一样,解压以后放到相应的.vim目录下的文件夹里面

    在.vimrc中做如下的配置

    """"""""""""""""""""""""""""""
    " winManager setting
    """"""""""""""""""""""""""""""
    let g:winManagerWindowLayout = "BufExplorer|TagList"
    let g:winManagerWidth = 30
    let g:defaultExplorer = 0
    nmap <C-W><C-F> :FirstExplorerWindow<cr>
    nmap <C-W><C-B> :BottomExplorerWindow<cr>
    nmap <silent> <leader>wm :WMToggle<cr> 

    当我们再次打开vim,并开启winmanager 的时候,效果图如下

    如果我们想要切换缓存区,使用命令

    : buffer number

    4.taglist

    这个插件,可以实现代码以侧边栏的方式,显示一个类中的方法跟变量、宏等。

    要想使用它,前提是你的vim中已经安装了Exuberant ctags 插件。这个插件能够生成tags索引(后面会介绍),taglist需要这个索引

    现在我们到http://www.vim.org/scripts/script.php?script_id=273下载,然后在.vimrc进行如下配置

    nmap <silent> <leader>d :TlistToggle<cr>

    就可以打开或者关闭侧边栏了。效果如下

    5.cscope

    这个插件可以用来帮助我们查询一个方法或者变量被调用跟定义的地方

    这个插件可以直接使用如下命令来进行安装

    sudo apt-get install cscope

    然后我们可以在vimrc中进行如下的设置

    """"""""""""""""""""""""""""""
    "Cscope
    """"""""""""""""""""""""""""""
    if has("cscope")
            set csprg=/usr/bin/cscope
            set csto=0
            "set cst
            set nocsverb
            " add any database in current directory
            if filereadable("cscope.out")
                cs add cscope.out
            " else add database pointed to by environment
            elseif $CSCOPE_DB != ""
                cs add $CSCOPE_DB
            endif
            set csverb
    endif
    nmap <leader>cs :cs find s <C-R>=expand("<cword>")<CR><CR>
    nmap <leader>cg :cs find g <C-R>=expand("<cword>")<CR><CR>
    nmap <leader>cc :cs find c <C-R>=expand("<cword>")<CR><CR>
    nmap <leader>ct :cs find t <C-R>=expand("<cword>")<CR><CR>
    nmap <leader>ce :cs find e <C-R>=expand("<cword>")<CR><CR>
    nmap <leader>cf :cs find f <C-R>=expand("<cfile>")<CR><CR>
    nmap <leader>ci :cs find i <C-R>=expand("<cfile>")<CR><CR>
    nmap <leader>cd :cs find d <C-R>=expand("<cword>")<CR><CR>

    现在我们看下执行的效果

    6.Lookupfile

    这个插件可以帮助我们智能检索我们想要查找的类等文件

    Lookupfile插件可以在下面的链接下载:http://www.vim.org/scripts/script.php?script_id=1581

    仅仅有它还不够,它还要另外的一个插件的支持

    需要下载genutils:http://www.vim.org/scripts/script.php?script_id=197

    至于他们的安装方法,跟其他的插件的安装方法是一样的,不在赘述

    然后我们在.vimrc中进行如下的配置

    if filereadable("./filenametags")
            let g:LookupFile_TagExpr = '"./filenametags"'
    endif
    nmap <silent> <leader>lt :LUTags<cr>
    nmap <silent> <leader>lb :LUBufs<cr>
    nmap <silent> <leader>lw :LUWalk<cr>
    nmap <silent> <F2> :LUBufs<cr>
    nmap <silent> <F3> :exec "LUWalk" expand('%:p:h').'/'<cr>
    nmap <silent> <F4> :exec "LUTags" expand("<cword>")<cr>

    我们看下效果

    以上大概就是常用的几个插件了。以后用到了再补充。至于每个插件的详细使用方法,我们可以通过help来查看。这里就不多说了。

    最后,还有两点需要注意。

    就是里面很多插件都以来于tags标签。那我们怎么生成这个标签呢?这里贴上写的两个脚本

    1.BuildFilenameTags_app.sh 脚本

    #!/bin/sh
    # generate tag file for lookupfile plugin
    echo -e "!_TAG_FILE_SORTED	2	/2=foldcase/" > filenametags
    find . -not -regex '.*.(png|gif|a|o|la|so|class|jar|apt|patch|elf|jpg|ko|cmd|mid|mp3|lo|pcm|lai|svn-base|keep|contrib)' -type f -printf "%f	%p	1
    " | sort -f >> filenametags
    find . -regex '.*.(c|h|cpp|java|xml|inl)' -type f | sort -f >> cscope.files

    2.retag_app

     rm cscope.*
     rm filenametags
     rm tags
     BuildFilenameTags_app.sh
     cscope -bq 
     ctags -L cscope.files

    我们之需要在你想要操作的内容所在的目录,执行retag_app

    就可以自动生成需要的tags等文件了。当然,这两个命令需要赋予执行权限以及放置到/usr/bin目录下

  • 相关阅读:
    B-Tree索引的学习记录
    mysql NOW,CURRENT_TIMESTAMP,SYSDATE 之间的区别
    哈希索引
    MyISAM和InnoDB的区别
    负载均衡记录一
    哈希索引
    mysql ZEROFILL属性
    redis常用命令及使用场景
    js Function()构造函数
    书写闭包的时候需注意一下情况
  • 原文地址:https://www.cnblogs.com/zhangshuli-1989/p/hq_vimrc_151022161.html
Copyright © 2011-2022 走看看