使用Vim的:CompileRun命令时出现zsh文件或目录不存在错误
问题分析与解决
你的错误根源是CompileRun命令的路径拼接错误:./是相对路径前缀,而%:p:r会输出文件的完整绝对路径,两者拼接后形成了.//mnt/Storage/C++/EX/test.out这种无效路径,系统自然找不到文件。
修正方案
直接修改.vimrc中的CompileRun命令,去掉多余的./,并且补充编译步骤(你原来的命令只尝试运行,没有先编译):
command! CompileRun execute '!g++ % -o %:p:r.out && %:p:r.out'
命令解释
g++ %:用g++编译当前打开的文件(%代表当前文件名)-o %:p:r.out:将编译生成的可执行文件命名为原文件名去掉后缀后加.out(%:p:r是当前文件的绝对路径且不含后缀)&& %:p:r.out:只有编译成功时才运行生成的可执行文件
如果不需要编译,只是单纯运行已有的可执行文件,简化为:
command! CompileRun execute '!%:p:r.out'
额外优化(可选)
如果需要指定C标准(比如C17),可以在编译命令中添加参数:
command! CompileRun execute '!g++ -std=c++17 % -o %:p:r.out && %:p:r.out'
内容的提问来源于stack exchange,提问作者elenntar
相关产品推荐
相关产品推荐

