vim-project

vim-project

 

软件版本:
  ubuntu10.04
  Linux version 2.6.32-42-generic
  VIM - Vi IMproved 7.2
  project-1.4.1

目录:

  1. 简介
  2. 使用
    2.1 首次启动
    2. 2 分析 .vimprojects

    2.3 一些操作
  3. 配置
  4. 不足
  5. 参考资料

1. 简介

名称: project
下载地址:

http://www.vim.org/scripts/script.php?script_id=69

安装:

将下载下来的 project.vim 拷贝到 $HOME/.vim/plugin ;
project.txt 拷贝到 $HOME/.vim/doc

帮助: :help project


  project 插件的作用就是帮助用户以项目的形式管理源码。启动并配置好 project 后,就会在 [g]vim 的左边生成一个项目列表,列出项目中所有指定类型的文件,在文件名上按 Enter 键即可打开文件。我们甚至可以通过修改 $PATH 环境变量对整个项目进行编译。见下图:

图 1

2. 使用

2.1 首次启动

  启动 vim 后输入 :Project ,就会看到左边出现项目列表,如果还没有项目,列表为空。

  在常规模式下输入 \C (斜杠+大写C)创建项目:

  Enter the Name of the Entry: ProjectName (项目名称)
  Enter the Absolute Directory to Load:  ProjectPath (项目路径)
  Enter the CD parameter: . (CD 指打开该项目(包括项目下的文件)后, vim 将进入的路径,“.” 指的是当前项目路径)
  Enter the File Filter:  (筛选源文件,只显示符合条件的)

  顺利的话,你会在项目列表中看到如图1的文件列表。光标移到项目窗口中输入 :w 保存后,该项目配置默认存储在 ~/.vimprojects 中。

2. 2 分析 .vimprojects

  插件 project 的默认项目文件就是 ~/.vimprojects ,里面存储了各个项目的配置。图1的项目配置如下所示:

 1 cbreak=~/test/project/cbreak CD=. filter="*.c *.h" {
 2  inc=inc {
 3   print.h
 4  }
 5  libs=libs {
 6  }
 7  out=out {
 8   TAR=TAR {
 9   }
10   obj=obj {
11   }
12  }
13  src=src {
14   cbreak.c
15   prj_test.c
16  }
17 }

  就这样看,理解起来可能有点困难。我们来看一下项目的入口格式:

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

  <Description>:项目名,与后面的“=”不能有空格;

  {projpath}:项目路径,可使用环境变量。如果路径有相对路径,插件会根据项目的父目录及其上层目录等层次建立路径,但最外层的项目入口必须是绝对路径。可以使用空格,但必须使用转意符 “\”;

  {options} :可以是下面的一项或者几项, 但必须放在同一行上.
    CD={path}
    in={filename}
    out={filename}
    filter="{pat}"
    flags={flag}
  CD:表示项目在选中一个文件时 Vim 将要进入的目录。
  in:进入文件缓冲时执行指定的 Vim 脚本。
  out:退出文件缓冲时执行指定的 Vim 脚本。
  filter:过滤符,过滤剩下指定类型的文件。如果子项目中没有指定过滤符,将承继夫项目的过滤符。
  flags:标志位,为某个折叠指定某些特性。详见 project.txt  。

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

  默认情况下,所有项目都存储在 .vimprojects 中,但是我们也可以指定自己的项目文件,启动命令为:

:Project prj_filename

2.3 一些操作

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

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

  其它操作参见 project.txt 。

3. 配置

  在 ~/.vimrc 文件中添加:

let g:proj_flags="icmsStg"

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

  其它标志详见 project.txt 。

4. 不足

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

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

5. 参考资料

[1]. VIM之Project 项目管理工具
[2]. VIM-Project Plugin

posted @ 2012-09-08 17:30  Eddy_He  阅读(6164)  评论(1编辑  收藏  举报