Vim 为什么';我的维姆不知道我的别名吗?

Vim 为什么';我的维姆不知道我的别名吗?,vim,alias,Vim,Alias,我使用了“alias ruby=ruby1.9.1”,因此我可以使用以下命令执行我的ruby: ruby 123.rb 或 ruby1.9.1 123.rb 但在我的vim中,我使用:!ruby和get /bin/bash:ruby:未找到命令 我必须使用:!ruby1.9.1 alias是如何工作的?为什么vim不知道?当vim启动一个进程时,它会进行系统调用。只有从shell启动时,它才从shell继承了环境变量。但它不会知道你的bash别名 在bashshell中输入命令行时,Bash别名

我使用了“alias ruby=ruby1.9.1”,因此我可以使用以下命令执行我的ruby:

ruby 123.rb

ruby1.9.1 123.rb

但在我的vim中,我使用:!ruby和get /bin/bash:ruby:未找到命令

我必须使用:!ruby1.9.1


alias是如何工作的?为什么vim不知道?

当vim启动一个进程时,它会进行系统调用。只有从shell启动时,它才从shell继承了环境变量。但它不会知道你的bash别名

在bashshell中输入命令行时,Bash别名只是一种方便。它们仅通过Bash扩展


如果需要真实别名,请将符号链接放在私人隐藏文件夹中,并将该文件夹添加到您的路径中,或者使用该工具。

别名(与环境变量不同)不会由子shell继承。因此,如果希望别名始终可用,则需要在.bashrc文件中设置别名,以便shell的每个实例在启动时都能获得别名

:set shellcmdflag+=i

将bass称为“交互式”,尽管这确实会给执行的每个shell命令带来恼人的消息。

这并不能回答问题,因为Vim不是子shell。@Benoit:Vim
命令调用子shell。将
别名
放入.bashrc中意味着vim使用
调用子shell
将获取别名,命令将正常工作。它仅在以交互模式启动bash时获取别名。您应该
:为此将shellcmdflag
设置为至少
-i
。而且
'shell'
也可能必须设置为
/bin/bash
。@Benoit:不可否认,这取决于您使用的shell--对于
csh
您需要将内容放入
.cshrc
中,对于
bash
您需要设置
bash_ENV=.bashrc
并将其放入
.bashrc
(或者您可以使用其他文件名,如果您愿意)可能重复的“如果您想要真正的别名,请将符号链接放入一个私人隐藏文件夹,并将该文件夹添加到您的路径中。”如果我想要全局别名,我应该将它们放在哪里?/usr/local/bin?@user590083:或者,或者使用
/etc/bash.bashrc
向您的路径添加一些变量。