Eu uso o bash no mac e um dos aliases é assim
alias gitlog='git --no-pager log -n 20 --pretty=format:%h%x09%an%x09%ad%x09%s --date=short --no-merges'
Porém quando eu faço
:! gitlog
eu recebo
/bin/bash: gitlog: command not found
Eu sei que posso adicionar aliases como este no meu .gitconfig
[alias]
co = checkout
st = status
ci = commit
br = branch
df = diff
No entanto, não quero adicionar todos os meus aliases de bash a .gitconfig. Isso não é SECO.
Existe uma solução melhor?
Respostas:
O Bash não carrega seu .bashrc a menos que seja interativo. Usar
para fazer o
:!
shell do Vim se comportar como seu prompt de comando.fonte
suspended (tty output)
When i usegit commit
~/.zshrc
para shells interativos, mas carrega~/.zshenv
para todos os shells, então movi minha configuração de alias para lá e agora funciona a partir do Vim. Vejaman zsh
(ou as páginas de manual do seu shell) para mais.Sei que esta pergunta já foi "respondida" anteriormente, mas tenho um problema com a resposta. O shell não precisa ser definido como interativo no Vim. Consulte este tópico para obter uma resposta alternativa sem precisar sair de um shell interativo.
Esta solução foi sugerida por "Jakob". Veja o link abaixo para o original. Eu testei isso no Mac OS X 10.9 e funcionou perfeitamente!
vim - não reconhece aliases no modo interativo?
fonte
$BASH_ENV
var no meu.bashrc
(antes de qualquer verificação de modo interativo personalizado), para que possa usar todos os meus apelidos em aplicativos.let $BASH_ENV="~/.vim/vim_bash"
, isso seria usado para todas as:!
invocações dentro do Vim.Observe que dependendo de como seus arquivos dot bash estão configurados, você pode querer usar a opção -l em vez da opção -i. Isso iniciará o shell como shell de login.
fonte
Eu sei que pode ser uma pergunta antiga, porém nenhuma das respostas acima funcionou para mim como desejado. Então, para aqueles que vieram aqui do Google e para usuários (oh-my-) zsh:
Minha solução para isso foi simplesmente copiar .zshrc para .zshenv - de acordo com http://zsh.sourceforge.net/Intro/intro_3.html :
Então
$ cp ~/.zshrc ~/.zshenv
vai fazer a coisa.fonte
. $HOME/.aliases
Não me sinto muito confortável em definir a opção -i, pois ela tem algum impacto e estou usando o shell frequentemente do vim. O que eu faria em vez disso é algo como
:!bash -c ". ~/.alias; gitlog"
fonte