我在mac上使用bash,其中一个别名是这样的
alias gitlog='git --no-pager log -n 20 --pretty=format:%h%x09%an%x09%ad%x09%s --date=short --no-merges'
但是当我做的时候
:! gitlog
我得到了
/bin/bash: gitlog: command not found
我知道我可以在我的.gitconfig中添加这样的别名
[alias]
co = checkout
st = status
ci = commit
br = branch
df = diff
但是,我不想将所有bash别名添加到.gitconfig中。这可不是干的。
有没有更好的解决办法?
发布于 2011-01-09 16:48:58
Bash不会加载您的.bashrc
,除非它是交互式的。
运行:set shellcmdflag=-ic
将其设置为当前会话的交互式。
要使设置永久化,请将set set shellcmdflag=-ic
添加到.vimrc
文件的末尾。
在向shell发送命令之前,请使用!
。例如::! cd folder/
。
发布于 2013-11-06 09:44:39
我知道这个问题以前已经“回答”了,但我对答案有问题。shell不需要设置为Vim中的交互式。请参阅此线程,以获得另一个答案,而不必退出交互式shell。
如果您想要非交互式shell (默认情况下)但是要扩展bash别名,请将别名定义放入文件中,例如.bash_aliases,并显式地启用此文件中的别名扩展:
shopt -s expand_aliases别名la='ls -la‘
然后将其添加到您的.vimrc中,这样每次在vim中运行shell命令时都会读取别名文件:
设$BASH_ENV =“~/..bash_aliases”
这一解决办法是"Jakob“提出的。有关原件,请参阅下面的链接。我在MacOSX10.9上测试了这个,它运行得完美无缺!
发布于 2017-07-03 03:55:00
我知道这可能是个老生常谈的问题,但上面的答案对我来说都不像我所期望的那样有效。因此,对于那些从googling到这里来的用户和(噢,我的-)zsh用户:
我对此的解决方案就像将.zshrc复制到.zshenv一样简单,就像按照http://zsh.sourceforge.net/Intro/intro_3.html那样。
.zshenv' is sourced on all invocations of the shell, unless the -f option is set. It should contain commands to set the command search path, plus other important environment variables.
.zshenv‘不应包含生成输出或假定shell附加到tty的命令。
所以$ cp ~/.zshrc ~/.zshenv
会做这件事。
https://stackoverflow.com/questions/4642822
复制相似问题