我在mac上使用bash,其中一个别名是这样的
alias gitlog='git --no-pager log -n 20 --pretty=format:%h%x09%an%x09%ad%x09%s --date=short --no-merges'
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做
:! gitlog
Run Code Online (Sandbox Code Playgroud)
我明白了
/bin/bash: gitlog: command not found
Run Code Online (Sandbox Code Playgroud)
我知道我可以在我的.gitconfig中添加这样的别名
[alias]
co = checkout
st = status
ci = commit
br = branch
df = diff
Run Code Online (Sandbox Code Playgroud)
但是,我不想将所有bash别名添加到.gitconfig.那不是干.
有更好的解决方案吗?
与从vim执行的命令相同的问题是没有识别bash命令别名,但是那里的解决方案不起作用.
我在〜/ .vimrc中设置了这些变量:
set shellcmdflag=-ic
set shell=/bin/bash\ -i
Run Code Online (Sandbox Code Playgroud)
我的〜/ .bash_aliases中有别名:
rgr() { if [ ! -z "$2" ]; then grep -rI --exclude=\*.svn\* "$1" * --include=$2 ; else grep -rI --exclude=*svn* "$1" * ; fi ; }
Run Code Online (Sandbox Code Playgroud)
从命令行执行时,它工作,但当我尝试从vim(:!rgr test)调用它时,我收到一条错误消息,vim退出:
bash: rgr: command not found
[4]+ Stopped vi ~/somefile
Run Code Online (Sandbox Code Playgroud)
如果我禁用交互模式,我只是得到"命令未找到"消息,并且vim不会退出.
如何让vim识别我的别名?我在OS X和Ubuntu上都重现了这种行为.