vim插件管理利器:pathogen

news/2024/7/21 14:00:46 标签: vim, autoload, git, nested, 数据结构, 文档

来源:http://www.cnblogs.com/taskiller/archive/2012/08/14/2637689.html

一、pathogen简介

通常情况下安装vim插件,通常是将所有的插件和相关的doc文件都安装在中一文件夹中,如将插件全部安装在/usr/share/vim/vim73/plugin/目录下,将帮助文档全部安装在/usr/share/vim/vim73/doc/目录下。这样做带来的后果是修改和卸载插件很麻烦,很难弄清楚哪个文件属于哪个插件。


如果用pathogen来管理插件的话,就会变得方便很多了。pathogen让每个插件占有一个单独的目录,解决了文件分散的问题。安装完pathogen之后,只需要在~/.vim/目录下新建一个目录~/.vim/bundle/,并将要安装的所有插件放在~/.vim/bundle/目录下即可以使用。如果要删除某个插件,只需要将~/.vim/bundle/目录下对应的插件目录删除即可。如果想保持某个插件为最新版本,直接从插件的仓库checkout一份代码到bundle目录即可。


二、安装pathogen

pathogen的下载地址为:https://github.com/tpope/vim-pathogen

下载后可以直接解压。pathogen插件只有一个单独的脚本,所谓安装就是把它放在当前用户的 ~/.vim/autoload 目录下即可。

即,将解压后的autoload目录连同里面的pathogen.vim插件拷贝到~/.vim/目录下。

三、启用pathogen

要启用pathogen,还需要在~/.vimrc 文件里, filetype plugin indent on 之前的任何地方,加入下面这句:

call pathogen#infect()

注:这里需要说明一下,该插件不能放到/usr/share/vim/vim73/目录下,而只能放到~/.vim/目录下。要启用pathogen也只能修改~/.vimrc,而不能修改/etc/vimrc (Ubuntu下一般只需要修改~/.vimrc即可。如果使用Fedora,当以root用户打开vim时,如果要使插件或对VIM的配置生效,则需要修改/etc/vimrc文件)。

如果没有~/.vimrc文件,创建该文件并将以下内容拷贝到该文件中:

call pathogen#infect()
syntax on
filetype plugin indent on


要生成帮助文档的话,就在vim下输入:call pathogen#helptags()即可。

四、安装新插件

到目前为止,pathogen已经启用,要安装新插件,只需要下载该插件,并将其放到~/.vim/bundle/目录下即可。

1、安装NERDTree

例如,要下载安装NERDTree插件,只需要进入到~/.vim/bundle/目录,然后执行以下命令:

git clone http://github.com/scrooloose/nerdtree.git

 

下载完成后,会看到~/.vim/bundle/目录下会多出一个新的目录:nerdtree

OK!NERDTree插件已经安装完成了!可以看到这种方式比传统的vim插件安装方式简单多了!

而要卸载该插件也非常简单,只需要在~/.vim/bundle/目录下删除nerdtree目录即可,干净利落!

要更新该插件到最新版本,只需要进入到该目录~/.vim/bundle/nerdtree/,并执行以下命令:

git pull origin

 

当然这种安装和更新插件的方法只适用于代码仓库支持git的方法。

对于无法用git下载的插件,就更新bundle里的那个以插件名为名的目录就好。

2、安装tagbar

tagbar可以做为taglist的替代者,在~/.vim/bundle/目录执行安装命令如下:

git clone https://github.com/majutsushi/tagbar.git


之后同样可以在vimrc文件中设置快捷键:

nmap <F4> :TagbarToggle<CR>   "设置快捷键
let g:tagbar_width = 40       "设置宽度,默认为40
autocmd VimEnter * nested :call tagbar#autoopen(1)    "打开vim时自动打开
tagbarlet g:tagbar_left = 1         "在左侧"
let g:tagbar_right = 1        "在右侧

 

列举几点比taglist优化了的地方:

(1)支持头文件的函数列表显示

tagbar对函数的可见级别也是做了区分的,分别用+ - # 并配合着色来做了区分。

(2)对面向对象的支持更好

taglist虽然也会列出类列表,但是整体还是很不直观。

(3)自动根据文件修改时间来重建

taglist在这一点上体验就很不好,其实明明可以通过这种时间戳的方式来实现。

(据说tagbar最好配置ctags使用,效果会更好)

3、安装supertab插件

SuperTab插件的作用是使键盘上的Tab键具有更快捷的自动补齐和上下文提示功能。在~/.vim/bundle/目录下下载并安装该插件:

git clone https://github.com/ervandew/supertab.git

 

安装好之后,就可以在vim中直接使用自动补齐功能了。比如,用vim打开一个.c文件,要声明一个unsigned int 类型的变量,只需要输入unsi,之后按Tab键,就会将该关键字自动补齐了,非常好用。

五、利用pathogen,配置vim语法高亮

vim自身可以设置关键字高亮,却无法设置函数名和自定义的数据结构高亮,可以通过taghighlight插件解决这一问题。

首先安装taghighlight插件,在~/.vim/bundle/目录运行以下命令:

hg clone https://bitbucket.org/abudden/taghighlight


等一小段时间,等待taghighlight下载完毕后,就可以使用了。


http://www.niftyadmin.cn/n/1870155.html

相关文章

Android基础入门教程

本教程于2015年7月开始撰写&#xff0c;耗时半年&#xff0c;总共148节&#xff0c;涵盖了Android基础入门的大部分知识&#xff0c;由于当时能力局限&#xff0c;虽已竭尽全力&#xff0c;但对于一些问题的分析难免有所纰漏&#xff0c;敬请读者海涵&#xff01;IT技术更新换代…

DBus学习资料

转自&#xff1a;http://blog.csdn.net/zyz511919766/article/details/7700498 网上搜集的一些关于dbus学习的资料。尤其是“一个完整的DBus学习教程”这份资料非常有借鉴意义。另外DBus官方网站中dbus-tutorial这篇文章也非常值得学习。还有“Training material for Glib wrap…

spring注解事务@Transactional详解

事务注解方式: Transactional 当标于类前时, 标示类中所有方法都进行事物处理 , 例子: 1 Transactional public class TestServiceBean implements TestService {} 当类中某些方法不需要事物时: 1 Transactional 2 public class TestServiceBean implements TestService { 3 …

linux shell--read命令详解

概述&#xff1a;read命令 -d[输入结束字符&#xff0c;默认结束符是换行] -p("提示语句") -n[字符个数] -t(等待时间) -s(不回显) -a [数组名] 1、基本读取 read命令接收标准输入&#xff08;键盘&#xff09;的输入&#xff0c;或其他文件描述符的输入&#xff08;…

JavaSE 拾遗(0)——JavaSE 主线

写 javase 拾遗的主要目的是总结最近一小段时间对 javase 的学习。 先回顾一下我学习 java 的历史。第一次是大学的时候&#xff0c;那时只能算作对面向对象的3大特性有了入门级的了解&#xff0c;对java基本语法有过了解&#xff0c;学完后就基本没有用过。第二次是打算自学 …

gcc attribute weak alias应用

1 gcc attribute weak & alias应用 alias ("target") The alias attribute causesthe declaration to be emitted as an alias for another symbol, which must bespecified. For instance, void __f () { /* Do something. */; } void f () __attribu…

JAVA wait(), notify(),sleep详解

在CSDN开了博客后&#xff0c;一直也没在上面发布过文章&#xff0c;直到前一段时间与一位前辈的对话&#xff0c;才发现技术博客的重要&#xff0c;立志要把CSDN的博客建好。但一直没有找到好的开篇的主题&#xff0c;今天再看JAVA线程互斥、同步的时候又有了新的体会&#xf…

CPU Ring Privilege

CPU Ring Privilege现代操作系统&#xff0c;比如Windows UNIX家族&#xff0c;都支持多任务&#xff08;多进程&#xff09;。每个任务都拥有相同的地址空间&#xff0c;比如在32位系统上&#xff0c;都具有4G的地址空间。并且任务之间彼此互不干涉&#xff0c;彼此可以安全的…