我正在使用vim编辑Linux内核。我的环境使用了许多为此和其他目的定义的变量和函数,包括一个bash函数来编译内核。所以我通常做的是:
vim file.c
fg
我想用: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
复制相似问题