为什么我的 vim 不知道我的别名?
我使用了“alias ruby=ruby1.9.1”,所以我可以用这个执行我的 ruby:
红宝石123.rb
或
ruby1.9.1 123.rb
但是在我的 vim 中,我使用 :!ruby 并得到 /bin/bash:ruby:找不到命令。
我必须使用 :!ruby1.9.1
别名如何工作?为什么vim不知道呢?
I have used "alias ruby=ruby1.9.1", so I can execute my ruby with this:
ruby 123.rb
or
ruby1.9.1 123.rb
But in my vim, I use :!ruby and get
/bin/bash: ruby: command not found.
I must use :!ruby1.9.1
How does alias work? Why vim doesn't know it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
当 Vim 启动一个进程时,它会进行系统调用。如果您从 shell 启动它,它只会从您的 shell 继承环境变量。但它不会知道你的 bash 别名。
Bash 别名仅在您在 Bash shell 中输入命令行时提供便利。它们仅由 Bash 扩展。
如果您想要真正的别名,请将符号链接放入私有隐藏文件夹中,并将该文件夹添加到您的路径中,或使用 替代品设施。
When Vim starts a process it makes a system call. It has only inherited the environment variables from your shell if you started it from the shell. But it won't know your bash aliases.
Bash aliases are only a convenience when you enter a command line in the Bash shell. They are expanded by Bash only.
If you want real aliases put symlinks in a private hidden folder, and add that folder to your PATH, or use the alternatives facility.
您可以尝试
将 bass 称为“交互式”,尽管这确实会为执行的每个 shell 命令提供烦人的消息。
You can try
to call bass as "interactive" although that does give an annoying message for every shell command executed.
别名(与环境变量不同)不会被子 shell 继承。因此,如果您希望别名始终可用,则需要在 .bashrc 文件中设置它,这样 shell 的每个实例都会在启动时获取它
Aliases (unlike environment variables) are not inherited by subshells. So if you want an alias always available, you need to set it in your .bashrc file, so every instance of the shell will get it on startup