首页 > 解决方案 > vim 可以在运行前检查:使当前目录是当前文件的父目录吗?

问题描述

如果我在同一个 vim 会话中编辑两个项目(例如一个工具和一个外部库),我将:cd根据需要在更改源文件之后和运行:make.

我正在寻找一种方法来在调用 make 之前检查 vim 是否在正确的目录中。我可以更改其行为以检查当前目录是否是当前选项卡中打开的至少一个文件的父目录?

标签: vimmakefilebuildeditorvim-plugin

解决方案


我想说这完全取决于您如何设置环境。您描述问题的方式让我认为您没有在本地定义您&makeprg以匹配您当前的项目(并且您没有在本地更改当前工作目录以匹配当前缓冲区)

我经常同时处理多个项目(lib0、依赖于lib0的lib1和依赖于lib1的finalproduct)。关键是在每个项目的根目录下我都有一个本地vimrc,我在本地设置&makeprg为编译当前项目。如果我跳到另一个窗口(当前)显示属于另一个项目的缓冲区,当我键入时,:make我会编译当前缓冲区所属的项目。

IOW,我的本地&makeprg包含类似的东西'cd '.b:current_project_compilation_directory. ' && make $*'- 间接地这允许我进行源外编译并模拟不同的编译模式(发布,调试......)

请注意,我在后台有另一个插件,它会自动将当前本地目录更改为当前项目的根目录(而不是当前缓冲区的目录)。


推荐阅读