Używam basha na Macu i jeden z aliasów jest taki
alias gitlog='git --no-pager log -n 20 --pretty=format:%h%x09%an%x09%ad%x09%s --date=short --no-merges'
Jednak kiedy to zrobię
:! gitlog
dostaję
/bin/bash: gitlog: command not found
Wiem, że mogę dodawać takie aliasy do mojego pliku .gitconfig
[alias]
co = checkout
st = status
ci = commit
br = branch
df = diff
Jednak nie chcę dodawać wszystkich moich aliasów bash do .gitconfig. To nie jest SUCHE.
Czy jest lepsze rozwiązanie?
Odpowiedzi:
Bash nie ładuje twojego .bashrc, chyba że jest interaktywny. Posługiwać się
aby
:!
powłoka Vima zachowywała się jak wiersz poleceń.źródło
suspended (tty output)
Kiedy używamgit commit
~/.zshrc
dla powłok interaktywnych, ale ładuje się~/.zshenv
dla wszystkich powłok, więc przeniosłem tam konfigurację aliasu i teraz działa z poziomu Vima. Zobaczman zsh
(lub strony podręcznika Twojej powłoki) po więcej.Wiem, że na to pytanie już wcześniej "udzielono odpowiedzi", ale mam problem z odpowiedzią. Powłoka nie musi być ustawiona na interaktywną w Vimie. Zobacz ten wątek, aby uzyskać alternatywną odpowiedź bez konieczności wychodzenia z interaktywnej powłoki.
Takie rozwiązanie zaproponował „Jakob”. Zobacz link poniżej, aby zobaczyć oryginał. Przetestowałem to na Mac OS X 10.9 i działało bezbłędnie!
vim - nie rozpoznaje aliasów w trybie interaktywnym?
źródło
$BASH_ENV
zmienną w moim.bashrc
(przed jakimkolwiek niestandardowym sprawdzeniem trybu interaktywnego), więc mogę używać wszystkich moich aliasów w aplikacjach.let $BASH_ENV="~/.vim/vim_bash"
to byłoby używane do wszystkich:!
wywołań w Vimie.Zauważ, że w zależności od tego, jak skonfigurowane są twoje bash dotfiles, możesz chcieć użyć opcji -l zamiast opcji -i. Spowoduje to uruchomienie powłoki jako powłoki logowania.
źródło
Wiem, że może to być stare pytanie, jednak żadna z powyższych odpowiedzi nie zadziałała w moim przypadku. Więc dla tych, którzy przyjechali tutaj z Google i dla użytkowników (oh-my-) zsh:
Moje rozwiązanie było tak proste, jak skopiowanie .zshrc do .zshenv - jak na http://zsh.sourceforge.net/Intro/intro_3.html :
Więc
$ cp ~/.zshrc ~/.zshenv
zrobię to.źródło
. $HOME/.aliases
Nie czuję się zbyt komfortowo z ustawieniem opcji -i, ponieważ ma to spory wpływ i często używam powłoki z vima. Zamiast tego zrobiłbym coś w stylu
:!bash -c ". ~/.alias; gitlog"
źródło