首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >让vim makeprg继承主机外壳的环境

让vim makeprg继承主机外壳的环境
EN

Stack Overflow用户
提问于 2014-01-09 04:45:24
回答 2查看 508关注 0票数 0

我正在使用vim编辑Linux内核。我的环境使用了许多为此和其他目的定义的变量和函数,包括一个bash函数来编译内核。所以我通常做的是:

  1. vim file.c
  2. 编辑
  3. ctrl+z
  4. 运行编译功能
  5. 通读错误
  6. fg
  7. 修正错误。

我想用:make替换这个繁琐的过程,用:copen浏览错误。问题是要编译,我需要我的整个环境。我可以编写一个脚本,每次设置环境,然后调用编译函数,然后从:make调用这个脚本,但是这会增加几秒钟的开销:make调用来设置环境。

因此,我的问题是::make能否从生成它的shell继承环境变量/函数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-09 12:15:54

流程关系如下所示:

代码语言:javascript
运行
复制
bash → vim → bash → make

如果希望让make从启动Vim的初始shell继承环境,则必须在初始shell中export所有这些变量(以及使用export -f funcname的函数)。要么将export添加到环境定义中,要么(如果不能修改这些定义)在调用Vim之前编写一个从Bash源(source scriptname)的shell脚本。

您可以检查变量是否已正确地从Vim内部导出

代码语言:javascript
运行
复制
:echo $VARNAME
票数 3
EN

Stack Overflow用户

发布于 2014-01-09 16:44:55

启动make的另一种方法是让另一个shell监视一组文件或目录,并在任何文件被更改时启动一个命令。每次您使用:w时,都会在另一个shell中启动make命令。

这个方法有很多种方法,如https://superuser.com/questions/181517/how-to-execute-a-command-whenever-a-file-changes中所概述的

为了在linux机器上保持简单,您可以使用inotifywait

代码语言:javascript
运行
复制
while true; do
    change=$(inotifywait -e close_write,moved_to,create /tmp/path/to/directory/)
    echo "something happened!"
    make
done

在OS上需要另一个命令,因为它不支持inotifywait。超级用户问题概述了OS X的一些可能方法。

尽管如此,这并不能解决使用:copen打开错误的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21011757

复制
相关文章

相似问题

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