我是最近的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进程构建多个项目?
答案 0 :(得分:2)
您想要为每个命令执行相同的make命令吗?所以问题只是当前目录?您可以使用:lcd
仅更改当前窗口的目录,以便它在每个目录的相应目录中运行。为了使这更加自动化,您可以设置一个自动命令(我认为在BufWinEnter
上),当您创建分割窗口以运行:lcd expand('%:h')
时,或者只是将密钥映射到那个我想永远这样做。
(你也可以映射一个键/为lcd
和make
的组合创建一个自定义命令,可能会保存击键但在每次制作之前不必要地进行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似乎很受欢迎),但我从不需要使用它们。