首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vim quickfix和远程编译

Vim quickfix和远程编译
EN

Stack Overflow用户
提问于 2013-10-08 07:08:42
回答 2查看 712关注 0票数 5

我有一台linux机器,用于构建我的项目(c++/make)。我已经将项目目录安装在我的mac机器上,在其中我使用macvim进行编辑。

我成功地设置了makeprg设置,以便:make能够在我的linux机器上发出远程编译。然而,我也想使用vim的quickfix特性。我唯一的问题是这些文件不匹配。

例如,在远程计算机上,源和makefile驻留在~/repos/myproject中,在我的mac中它被安装到/net/mylinuxmachine/home/myuser/repos/myproject中。这会导致vim在编译错误时不正确地打开受影响的文件。

我把我的makeprg设置成这样:

代码语言:javascript
复制
:set makeprg=ssh\ mylinuxmachine\ \"make\ -C\ repos/myproject\"

我能做些什么让这件事成功吗?

提前谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-08 10:01:14

明白了。英戈把我推向了正确的方向。

在实验中,我厌倦了所有的逃避,所以我创建了下面的小so脚本:

代码语言:javascript
复制
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设置为使用要构建的项目执行脚本:

代码语言:javascript
复制
:set makeprg=./makeprg.sh\ myproject

现在很有魅力!

谢谢

票数 2
EN

Stack Overflow用户

发布于 2013-10-08 08:03:21

由于您正在操作'makeprg'选项,所以我将添加一个自定义过滤器(例如,使用sed)将远程文件转换为本地挂载点,如下所示:

代码语言:javascript
复制
:set makeprg=ssh\ mylinuxmachine\ \"make\ -C\ repos/myproject\"\|sed\ \"s#/home/myuser#/net/mylinuxmachine/home/myuser#g\"
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19241291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档