当我尝试使用:!
从vim调用别名shell命令时,它说
bash: l: command not found
shell returned 127
l
是
alias l=ls
(来自我的.bashrc)
答案 0 :(得分:1)
要解决此问题,您可以尝试命令vim :set shellcmdflag=-ic
,该命令告诉它使用-i键来启动Shell以执行:!
命令。 -i
键表示交互式(您在终端中通常使用的外壳),而解决问题的方法是-i
键强制bash使用您的别名读取.bashrc
(可能是{{1 }} 如果你有一个)。但这可能不是您想要的,因为此解决方案会导致vim进入前台(使用'fg'进行调用)之类的怪异行为。
更合适的解决方案是将此行添加到您的.bashrc(.bash_aiases)中:
.bash_alises
然后,即使在非交互式shell中,所有别名也将正确扩展。
也将此添加到您的.vimrc中,以便每次您在vim中运行shell命令时都可以实际读取别名文件:
let $ BASH_ENV =“〜/ .bash_aliases”
原始答案:https://stackoverflow.com/a/19819036/6152931
Bash手册(解释交互式和非交互式Shell之间的区别):https://linux.die.net/man/1/bash
我发布此问题是因为我花了很长时间才找到合适的解决方案。