当我使用vim执行外部命令时,别名不生效,例如:!会

问题描述 投票:0回答:1

使用vim执行外部命令时别名不生效,例如:

:! ll

我希望它像普通 shell 一样支持别名。

shell vim
1个回答
0
投票

不存在“普通外壳”这样的东西。您有“交互式 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 都可以访问它们。

© www.soinside.com 2019 - 2024. All rights reserved.