Vim:多文件编辑-在不同的分割中具有不同的品牌
我是最近的vim转换(来自像eclipse这样的奇特IDE) 我喜欢vim中的Vim:多文件编辑-在不同的分割中具有不同的品牌,vim,project-management,makefile,Vim,Project Management,Makefile,我是最近的vim转换(来自像eclipse这样的奇特IDE) 我喜欢vim中的:make命令并广泛使用它;但是,我也喜欢编辑多个项目(使用单独的makefile) 所以通常我会编辑多个项目 pushd project1 vim project1.cpp [suspend signal] pushd ../project2 vim project2.cpp 现在我可以使用ctrl+z在两个项目之间切换,即suspend signal和fg 当我想在另一个项目的上下文中打开一个项目,以便可以进行复
:make
命令并广泛使用它;但是,我也喜欢编辑多个项目(使用单独的makefile)
所以通常我会编辑多个项目
pushd project1
vim project1.cpp
[suspend signal]
pushd ../project2
vim project2.cpp
现在我可以使用ctrl+z
在两个项目之间切换,即suspend signal和fg
当我想在另一个项目的上下文中打开一个项目,以便可以进行复制/粘贴时,这会成为一个问题。因此,如果在上述情况下,我会这样做
pushd project1
vim project1.cpp
:vsp ../project2/project2.cpp
我可以在同一个vim进程中同时编辑这两个项目,但是我无法使用:make
命令有效地构建其中一个,它将只构建项目1
是否有人有某种方案可以让他们两全其美:能够同时编辑,同时仍然能够使用
:make
命令从同一个vim进程构建多个项目?vim
的:make
命令实际上只是执行配置为makeprg
的程序在当前目录中(make
默认设置)
通过启动项目目录中的每个vim
进程,您可以间接地为该vim
会话设置当前目录,但您当然可以在正在运行的会话中更改当前目录,例如,当您在project1/
中启动时,您可以将cd
简化为project2/
并在vim
中使用
:cd project2
:make
或者,如果您只想更改当前窗口的目录,请按照Jefromi的建议执行
:lcd project2
:make
有一些插件说它们使这变得更容易(其中一个似乎很流行),但我从来不需要使用它们。
vim
的:make
命令实际上只是执行当前目录中配置为makeprg
的程序(make
)
通过启动项目目录中的每个vim
进程,您可以间接地为该vim
会话设置当前目录,但您当然可以在正在运行的会话中更改当前目录,例如,当您在project1/
中启动时,您可以将cd
简化为project2/
并在vim
中使用
:cd project2
:make
或者,如果您只想更改当前窗口的目录,请按照Jefromi的建议执行
:lcd project2
:make
有一些插件说它们使这变得更容易(其中一个似乎很流行),但我从来都不需要使用它们。您希望对每个插件执行相同的make命令吗?那么问题只是当前目录?您可以使用
:lcd
仅更改当前窗口的目录,以便它将在每个窗口的相应目录中运行。为了使此操作更加自动化,您可以设置一个自动命令(我认为是在bufwinter
上),以便在创建拆分窗口时运行:lcd expand('%:h')
,或者如果不想总是这样做,只需将一个键映射到该窗口即可
(您还可以映射一个键/为lcd
和make
组合创建一个自定义命令,可能会保存击键,但在每个make之前不必要地进行cd'ing。这并不需要很长时间。)
另外,我询问make命令是否相同的原因是,您实际上可以在本地设置
makeprg
和其他相关选项(使用:setlocal
而不是:set
)。您希望对每个命令执行相同的make命令吗?那么问题只是当前目录?您可以使用:lcd
仅更改当前窗口的目录,以便它将在每个窗口的相应目录中运行。为了使此操作更加自动化,您可以设置一个自动命令(我认为是在bufwinter
上),以便在创建拆分窗口时运行:lcd expand('%:h')
,或者如果不想总是这样做,只需将一个键映射到该窗口即可
(您还可以映射一个键/为lcd
和make
组合创建一个自定义命令,可能会保存击键,但在每个make之前不必要地进行cd'ing。这并不需要很长时间。)
另外,我之所以问make命令是否相同,是因为您可以在本地设置
makeprg
和其他相关选项(使用:setlocal
而不是:set
)。这就是我要找的!太棒了,这就是我要找的!