Vim:多文件编辑 - 在不同的分割中具有不同的品牌

时间:2010-03-11 19:48:46

标签: vim project-management makefile

我是最近的vim转换器(来自像eclipse这样的花哨IDE。)

我喜欢vim中的:make命令并广泛使用它;但是我也喜欢编辑多个项目(使用单独的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 个答案:

答案 0 :(得分:2)

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

(你也可以映射一个键/为lcdmake的组合创建一个自定义命令,可能会保存击键但在每次制作之前不必要地进行cd'ing。不是那么需要很长时间。)

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

答案 1 :(得分:1)

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

通过启动项目目录中的每个make进程,您可以间接设置该vim会话的当前目录,但当然可以更改正在运行的会话中的当前目录,例如:在vim开始时,您可以简单project1/cd并在project2/内使用

进行构建
vim

或者如果您只想更改当前窗口的目录,请执行Jefromi建议

:cd project2
:make

有些插件表示它们更容易使用(this似乎很受欢迎),但我从不需要使用它们。