vim的项目管理工具:project插件

vim 是 inux 中经常用到的文本编辑工具,无论是在编写代码还是在阅读代码的时候都会经常用到。

但是在进行项目代码管理的时候,vim 没有 IDE 集成开发工具方便(这也是很多人不习惯使用 vim 的原因吧)。本篇文章就是要解决这个问题:使用 vim 的插件 project,对项目代码进行简单的集中管理。

我们先来看看实现效果:

这里写图片描述

一、下载安装

1、 在 Vim 网站上下载最新版本 project.tar.gz 或直接下载 project-1.4.1.tar.gz

2、解压缩下载下来的 project-1.4.1.tar.gz:

tar -zxvf project-1.4.1.tar.gz

完成后会得到两个文件夹:

这里写图片描述

其中 plugin/project.vim 是插件 ,doc/project.txt 是帮助文件

3、将 plugin 和 doc 到 ~/.vim 目录(没有~/.vim则自己创建),步骤如下:

mkdir ~/.vim
mv  doc ~/.vim
mv plugin ~/.vim

在这一步中不一定要放到 ~/.vim 目录(这样的话该配置只对你现在的帐号生效),还可以这样做:

查找vim

whereis vim

我们打算放到 /usr/share/vim 下。

拷贝插件

cp ~/Downloads/plugin/project.vim /usr/share/vim/vim74/plugin/

拷贝帮助文件

cp ~/Downloads/doc/project.txt /usr/share/vim/vim74/doc/

到了这里我们就完成了 project 插件的安装了。

二、使用介绍:

1、首次使用:

首次使用的含义并不是第一次使用 vim 的 project 插件,而是某个项目代码首次被 vim 管理的意思。因为要使用 vim 管理项目代码,先得初始化该项目。

比如现在我有个项目是 /home/www/thinkphp:

a、 直接在命令行输入

vim

b、命令模式下输入

:Project

我们可以看到这样界面:

这里写图片描述

现在项目列表为空(左边列),下一步就是初始化我们的项目。

c、直接输入 \C (反斜杠 + 大写C,PS:这是个快捷键,看不到)

会依次出现以下信息:

Enter the Name of the Entry: ProjectName (项目名称)
Enter the Absolute Directory to Load: ProjectPath (项目路径目录)
Enter the CD parameter: . (CD 指打开该项目(包括项目下的文件)后, vim 将进入的路径,“.” 指的是当前项目路径)
Enter the File Filter: (筛选符合条件的源文件,一般为空,表示显示全部文件。你也可以直接填入 .csv .php .js .sh .sql .conf .xslt .xml .avatar .tpl .dev .prd crontab.* .cfg. .html .htm .intftest .vim .plx .txt)

看看我们的配置:

Enter the Name of the Entry: myThinkphp
Enter the Absolute Directory to Load: /home/www/thinkphp
Enter the CD parameter: /home/www/thinkphp
Enter the File Filter:

回车之后 vim 就开始加载项目文件,完成之后再看看界面:

这里写图片描述

可以发现,/home/www/thinkphp 项目已经被加载进来了。

其实 a、b 两步我们可以直接使用 vim +Project 一步到位的。

退出我们可以直接使用 :wq 退出即可(后面会说到为什么要使用 :wq)

2、再次使用:

直接运行vim +Project

这里写图片描述

现在左边列表中已经有了刚才我们创建的目录了。将光标移动到上面,回车即可展开项目。

3、列表显示格式:

<Description>={projpath} [{options}] {
 [ filename ]
 [ project_entry ]
 }

描述

{options}配置参数项
CD={path}
in={filename}
out={filename}
filter="{pat}"
flags={flag}

CD:表示项目在选中一个文件时 Vim 将要进入的目录。
in:进入文件缓冲时执行指定的 Vim 脚本。
out:退出文件缓冲时执行指定的 Vim 脚本。
filter:过滤符,过滤剩下指定类型的文件。如果子项目中没有指定过滤符,将承继夫项目的过滤符。
flags:标志位,为某个折叠指定某些特性。详见 project.txt 。

注意,项目之间支持层叠关系。项目下的各个目录,其实都是一个子项目。

4、打开列表文件:

:Project 默认列表文件
:Project {file}
列表文件默认存储地址:~/.vimprojects

我们查看一下 ~/.vimproject 文件:

这里写图片描述

如图所示,其实所有的项目列表都是保存在该文件中的。

左边的项目列表是保存在列表文件中的,如果你修改了某个项目列表,必须使用 :wq 退出 vim ,否则修改就不会生效。

5、常用命令:

启动 project 插件后,相对应的就会支持一些命令。在常规模式下输入(注意区分大小写):

  \r 根据项目过滤符更新折叠处的文件(刷新列表)。
  \R 递归执行 \r 。
  \c 创建一个项目。但不包括指定目录下的子目录。
  \C 递归执行 \c,包括指定目录下的所有子目录。
   打开文件;打开或关闭折叠。
   Shift+Return
  \s 同 打开文件,打开文件时水平分割窗口。
  \S 加载所有文件到当前窗口,当前窗口会被水平分割显示所有文件。
   Ctrl+Return
  \o 打开指定文件到一个窗口中,并且关闭所有其它窗口,
   Alt+Return
  \v 仅仅打开文件,光标仍然保留在项目列表中。
  
  \ 移动文本或者折叠到当前光标的上一行(移出或移入目录)。
  
  \ 移动文本或者折叠到当前光标的下一行。
  \i 在状态栏中显示光标所在折叠的完整参数以及继承参数。
  \I 在状态栏中显示文件的完整路径。
  \l 加载当前项目层的所有文件到到当前 vim 中。在加载的过程中,任何按键都导致停止。
  \L 加载当前项目以及子项目中的文件到当前 vim 中。谨慎使用。
  \g 在当前项目层执行 grep 。
  \G 在当前项目层及子项目执行 grep 。
   当在变量 g:proj_flags 中使用了标志位 ‘g’ 时, 该键用来切换打开和关闭项目窗口.
  Ctrl+w+方向 切换光标(直接使用 Ctrl+w+w也行)

  其它操作参见 project.txt 。

6. 配置:

  在 ~/.vimrc 文件中添加:

let g:proj_flags="imsStg"

  i 设置后,当选择打开一个文件时会在命令行显示文件名和当前工作路径。
  m 在常规模式下开启 |CTRL-W_o| 和 |CTRL-W_CTRL_O| 映射,使得当前缓冲区成为唯一可见的缓冲区,但是项目窗口仍然可见。
  s 设置后将在项目窗口中使用语法高亮。
  S 设置后将在更新和创建项目时启用排序。
  g 设置后会将切换打开和关闭项目窗口映射到 上。
  t 设置后将在按空格 或鼠标右击 时候进行原窗口和加宽窗口之间的切换。

  其它标志详见 project.txt 。

7. 不足

  我尝试过大部分的功能之后,发现有这几个问题:

  1. 如果项目中有新建目录,就需要在对应的项目中手动添加子项目, \r 和 \R 都不支持目录的自动更新。
  2. 如果存在路径 path/out/obj ,在我选择打开该目录下的文件时会报错,说没有 path/out/out 这个目录,但仍然成功打开指定文件。
  3. 如果一次性递归生成一个比较大的项目,需要的时间非常长。

三、总结:

1、感觉 vim 使用起来更加方便了。但是有些快捷键还是不太记得,还是熟能生巧啊。
2、本篇博客参考了网上的很多文章,因此这里就不给出参考链接了。

猜你喜欢

转载自blog.csdn.net/baidu_30000217/article/details/70945965