我正在使用vim编辑Linux内核。我的环境使用了许多为此和其他目的定义的变量和函数,包括一个bash函数来编译内核。所以我通常做的是:
vim file.cfg我想用:make替换这个繁琐的过程,用:copen浏览错误。问题是要编译,我需要我的整个环境。我可以编写一个脚本,每次设置环境,然后调用编译函数,然后从:make调用这个脚本,但是这会增加几秒钟的开销:make调用来设置环境。
因此,我的问题是::make能否从生成它的shell继承环境变量/函数?
发布于 2014-01-09 12:15:54
流程关系如下所示:
bash → vim → bash → make如果希望让make从启动Vim的初始shell继承环境,则必须在初始shell中export所有这些变量(以及使用export -f funcname的函数)。要么将export添加到环境定义中,要么(如果不能修改这些定义)在调用Vim之前编写一个从Bash源(source scriptname)的shell脚本。
您可以检查变量是否已正确地从Vim内部导出
:echo $VARNAME发布于 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。
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打开错误的问题。
https://stackoverflow.com/questions/21011757
复制相似问题