在之前的公司,一直是使用别人配置好的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 =
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= " Do not show default help.
let g:bufExplorerShowRelativePath= " Show relative paths.
let g:bufExplorerSortBy='mru' " Sort by most recently used.
let g:bufExplorerSplitRight= " Split left.
let g:bufExplorerSplitVertical= " Split vertically.
let g:bufExplorerSplitVertSize = " Split width
let g:bufExplorerUseCurrentWindow= " 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 =
let g:defaultExplorer =
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=
"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\t2\t/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\t%p\t1\n" | 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目录下

vim 常用插件功能跟配置的更多相关文章

  1. Vim常用插件安装及配置方法

    Vundle 安装 git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim 配置 vimrc首部添 ...

  2. Linux常用命令及vim的使用、vim常用插件(推荐)

    看了3篇文章,很好 vim中的区域拷贝 剪切,粘贴: 正常模式,移动光标到剪切的区域开始处,按v,进入可视模式,然后选择区域.按x键,剪切.到指定位置按p粘贴. 撤销按u 恢复按ctrl-r  简明 ...

  3. Vim常用插件——前端开发工具系列

    作为一名开发者,应该对编辑器之神Vim与神之编辑器Emacs有所耳闻吧.编辑器之战的具体细节有兴趣的童鞋可以google之. Vim最大的特点是打开速度快,功能强大,一旦掌握了其中的命令,编程过程双手 ...

  4. vim常用操作技巧与配置

    vi是linux与unix下的常用文本编辑器,其运行稳定,使用方便,本文将分两部分对其常用操作技巧和配置进行阐述,其中参考了网上的一些文章,对作者表示感谢 PART1 操作技巧 说明: 以下的例子中  ...

  5. vim的插件管理与配置

    vim作为我做喜欢的编辑器,可扩展性几乎是没有尽头的,前阵子一直在配置这.vimrc文件,原来搞过配色文件,现在主要就自动补全来设置下,同时作为自己配置的记录文档.……………………………………………… ...

  6. maven常用插件功能

    maven-dependency-plugin http://maven.apache.org/plugins/maven-dependency-plugin/ maven-dependency-pl ...

  7. vim常用插件使用方法整理【持续更】

    nerdtree 和编辑文件一样,通过h j k l移动光标定位切换工作台和目录 ctr+w+h 光标focus左侧树形目录,ctrl+w+l 光标focus右侧文件显示窗口. ctrl+w+w,光标 ...

  8. Vim常用插件命令手册

    此文章记录了,笔者使用的插件中的主要命令. junegunn/vim-plug :PlugInstall 安装插件 :PlugClean 清理插件 :PlugUpgrade 升级插件管理器 :Plug ...

  9. Vim常用的功能命令

    一.编辑 查看行号     :set nu 删除一整行   dd 删除1到10行     :1,10d 删除所有内容     dG 当前行下插入一空行   o 撤销改动    u 查看当前行信息    ...

随机推荐

  1. 熟悉了下HTTP协议

    HTML是一种用来定义网页的文本,会HTML,就可以编写网页: HTTP是在网络上传输HTML的协议,用于浏览器和服务器的通信.200表示一个成功的响应,后面的OK是说明.失败的响应有404 Not ...

  2. Spring Boot AutoConfiguration注解@ConditionalXXXX之前生今世

    1.注解@Conditional的定义 @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE, ElementType.METHO ...

  3. 基于jquery 的find()函数和children()函数的区别

    element.find(selector)  返回匹配element集合中每个元素的后代,参数selector是必须的,可以通过选择器对元素进行过滤,筛选出符合条件的元素.如果想选中所有的后代元素, ...

  4. 请教如何用 peewee 实现类似 django ORM 的这种查询效果。

    本人新入坑的小白,如有不对的地方请包涵~~~! 在 django 中代码如下:模型定义: class Friends(models.Model): first_id = models.IntegerF ...

  5. CF 965 B. Battleship

    Arkady is playing Battleship. The rules of this game aren't really important.There is a field of n×n ...

  6. IBM小机的开机步骤

    IBM小机的开机步骤 以下以 IBM P570 小机包含静态逻辑分区(LPAR) 的 Oracle9i RAC环境为例进行讨论 1. 设备(小机.存储.光交......)加电 2. 启动存储 3. 启 ...

  7. caffe(9) caffe例子

    为了程序的简洁,在caffe中是不带练习数据的,因此需要自己去下载.但在caffe根目录下的data文件夹里,作者已经为我们编写好了下载数据的脚本文件,我们只需要联网,运行这些脚本文件就行了. 注意: ...

  8. 关于git及其github的使用

    一:序言(就是瞎扯) 人们都说不会使用git和github的程序员都不是好程序员,是的,当我第一次听到的时候有点失望.因为我也不会...但是这句话激起了我学习使用git的动力(其实也没怎么深入的学习) ...

  9. 零基础学python-3.3 标识符

    1.标识符的组成 1)有数字.下划线.英文字母组成 2)第一个字符仅仅能是字母或者下划线 3)大写和小写敏感 标识符通常是变量名称.方法名.类名等 2.keyword python里面有一系列的关键字 ...

  10. 【Hibernate步步为营】--(一对多映射)之单向关联

    上篇文章讨论了双向关联的一对一映射,用了两个章节,主要是从主键和外键两种关联映射展开具体讨论.双向关联的映射须要在两个映射文件里分别加入相互的相应关系.斌刚在相应的类中加入相应的关联类的属性.这样在一 ...