我有一台linux机器,用于构建我的项目(c++/make)。我已经将项目目录安装在我的mac机器上,在其中我使用macvim进行编辑。
我成功地设置了makeprg设置,以便:make能够在我的linux机器上发出远程编译。然而,我也想使用vim的quickfix特性。我唯一的问题是这些文件不匹配。
例如,在远程计算机上,源和makefile驻留在~/repos/myproject中,在我的mac中它被安装到/net/mylinuxmachine/home/myuser/repos/myproject中。这会导致vim在编译错误时不正确地打开受影响的文件。
我把我的makeprg设置成这样:
:set makeprg=ssh\ mylinuxmachine\ \"make\ -C\ repos/myproject\"我能做些什么让这件事成功吗?
提前谢谢!
发布于 2013-10-08 10:01:14
明白了。英戈把我推向了正确的方向。
在实验中,我厌倦了所有的逃避,所以我创建了下面的小so脚本:
project=$1
ssh mylinuxmachine "make -C repos/$myproject" 2>&1 | sed "s#/home/myuser/repos/$project/##g"这将调用给定项目目录上的make -C,合并stdout和stderr (因为错误消息是通过stderr发出的)并将其输送到sed中,这将简单地删除错误消息中的绝对路径(这只会导致项目基根目录中受影响文件的相对路径--我的pwd通常在vim中)。
然后,我将makeprg设置为使用要构建的项目执行脚本:
:set makeprg=./makeprg.sh\ myproject现在很有魅力!
谢谢
发布于 2013-10-08 08:03:21
由于您正在操作'makeprg'选项,所以我将添加一个自定义过滤器(例如,使用sed)将远程文件转换为本地挂载点,如下所示:
:set makeprg=ssh\ mylinuxmachine\ \"make\ -C\ repos/myproject\"\|sed\ \"s#/home/myuser#/net/mylinuxmachine/home/myuser#g\"https://stackoverflow.com/questions/19241291
复制相似问题