我正在使用vim来编辑Linux内核。我的环境使用了许多为此定义的变量和函数以及其他用途,包括用于编译内核的bash函数。所以我通常做的是:
vim file.c
fg
我想用:make
替换这个繁琐的过程,并使用:copen
浏览错误。问题是要编译,我需要我的整个环境......我可以编写一个脚本,每次都设置环境,然后调用编译函数,并调用以下脚本:make,但是这会给每个人增加几秒的开销:打电话来设置环境。
所以我的问题是::make
能否从它产生的shell继承环境变量/函数?
答案 0 :(得分:3)
流程关系如下:
bash → vim → bash → make
如果您希望make
从初始shell(启动Vim)继承环境,则必须export
所有这些变量(以及export -f funcname
的函数)在初始shell 中。将export
添加到环境定义中,或者(如果您无法修改它们)在调用Vim之前从Bash编写一个 source (source scriptname
)的shell脚本。
您可以通过
检查变量是否已在Vim中正确导出:echo $VARNAME
答案 1 :(得分:1)
另一种启动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 X上使用另一个命令,因为它不支持inotifywait
。超级用户问题概述了OS X的一些可能方法。
但是,这无法解决使用:copen
打开错误的问题。