2010-03-11 42 views
0

我最近VIM转换不同的品牌Vim的:多文件编辑 - 具有不同的份

我在vim爱:make命令,并广泛使用它(从花哨的IDE像Eclipse)。不过我也喜欢编辑多个项目(具有独立的makefile。)

所以平时要编辑多个项目,我会做

pushd project1 
vim project1.cpp 
[suspend signal] 
pushd ../project2 
vim project2.cpp 

,现在我可以ctrl+z即中止信号两个项目之间切换,和fg

当这成为一个问题是当我想在另一个环境中打开一个项目,所以我可以复制/粘贴。所以,如果不是在上面我

pushd project1 
vim project1.cpp 
:vsp ../project2/project2.cpp 

我可以在同一Vim进程同时编辑两个,但我不能有效地建立一个或另一个与:make命令,它只会建立项目1.

有没有人有某种方案可以让他们两全其美:能够同时进行编辑,同时仍然可以使用:make命令通过同一个vim进程构建多个项目?

回答

2

你想为每个执行相同的make命令吗?所以问题只是当前目录?您可以使用:lcd更改仅用于当前窗口的目录,以便它可以在每个目录的相应目录中运行。为了使它更加自动化,你可以设置一个自动命令(我认为在BufWinEnter上),当你创建分割窗口来运行:lcd expand('%:h')时,或者如果你不想总是这样做,就只需要映射一个键。

(你也可以映射一个键/为lcdmake的组合创建自定义命令,可能节省的击键但随后不必要cd'ing各占了。倒不是说需要长时间。)

附:我询问make命令是否相同的原因是,您实际上可以在本地设置makeprg和其他关联的选项(使用:setlocal而不是:set)。

+0

真棒这就是我一直在寻找! – ldog 2010-03-11 20:25:59

1

vim:make命令实际上只是执行当前目录中配置为makeprg的程序(默认为make)。

通过在项目目录中每开始一个vim进程,您都会间接地为该vim会话设置当前目录,但当然您可以更改正在运行的会话中的当前目录。当你在project1/开始,你可以简单cdproject2/

:cd project2 
:make 

构建它里面vim还是一样,如果你只是要改变什么的目录为当前窗口,做什么Jefromi表明

:lcd project2 
:make 

有插件说,他们更容易(this似乎很受欢迎),但我从来没有需要使用它们。