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、本篇博客参考了网上的很多文章,因此这里就不给出参考链接了。