我最近一直在使用 vim 用 C 编程。我已经创建了用于从 vim 内部编译和运行程序的快捷方式,但最近 vim 的进程在执行程序后一直停止。
foo.c:
#include <stdio.h>
int main() {
printf("Hello World!\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
.vimrc:
set shellcmdflag=-ic
syntax on
autocmd FileType c map <F6> :!gcc -o "%:p:r.out" "%:." <bar> more<CR>
autocmd FileType c map <F7> :!%:p:r.out<CR>
Run Code Online (Sandbox Code Playgroud)
如果我点击F6,程序编译正常。但是如果我点击F7,我会得到以下信息:
Hello World!
[1]+ Stopped vim test.c
Run Code Online (Sandbox Code Playgroud)
我可以fg
用来启动该过程备份,但这样做有点烦人。有谁知道如何解决这一问题?
不要使用交互式 shell 来执行命令。(这是i
在-ic
。)
默认的 shellcmdflag ( -c
) 应该可以正常工作。
如果您指定-i
是为了让 bash 读取您的.bashrc
文件(这是启动交互式 shell 的副作用),那么您最好只告诉 bash 读取启动环境脚本。引用 bash 联机帮助页:
例如,当 bash 以非交互方式启动时,要运行一个 shell 脚本,它会
BASH_ENV
在环境中查找变量,如果它出现在那里,就展开它的值,并使用展开的值作为文件名来读取和执行。Bash 的行为就像执行了以下命令:
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
Run Code Online (Sandbox Code Playgroud)
但
PATH
变量的值不用于搜索文件名。
您可以在 vim 中设置环境变量 :let
归档时间: |
|
查看次数: |
1347 次 |
最近记录: |