Vim 为什么';我的维姆不知道我的别名吗?
我使用了“alias ruby=ruby1.9.1”,因此我可以使用以下命令执行我的ruby: ruby 123.rb 或 ruby1.9.1 123.rb 但在我的vim中,我使用:!ruby和get /bin/bash:ruby:未找到命令 我必须使用:!ruby1.9.1Vim 为什么';我的维姆不知道我的别名吗?,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是如何工作的?为什么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
向您的路径添加一些变量。