使用vim执行外部命令时别名不生效,例如:
:! ll
我希望它像普通 shell 一样支持别名。
不存在“普通外壳”这样的东西。您有“交互式 shell”和“非交互式 shell”,它们的不同之处在于它们在启动时获取的
*rc
文件以及 别名是否扩展 。甚至还有其他类型。
默认情况下,Vim 对 :!
和
$ man bash
使用 非交互式 shell,如下所示,以说明非交互式 shell 中的别名:
当 shell 不具有交互性时,别名不会展开,除非使用 shopt 设置 Expand_aliases shell 选项(请参阅下面的 SHELL BUILTIN COMMANDS 下的 shopt 描述)。
现在,你可以尝试使用
shopt
或尝试说服Vim使用带有:help 'shellcmdflag'
的交互式shell,但这些对我来说听起来不像是解决方案。
IMO,唯一正确的解决方案是将别名转换为实际的 shell 脚本,位于
$PATH
中的某个位置,所有类型的 shell 都可以访问它们。