Ich benutze Bash auf Mac und einer der Aliase ist so
alias gitlog='git --no-pager log -n 20 --pretty=format:%h%x09%an%x09%ad%x09%s --date=short --no-merges'
Aber wenn ich es tue
:! gitlog
Ich bekomme
/bin/bash: gitlog: command not found
Ich weiß, dass ich in meiner .gitconfig Aliase wie diese hinzufügen kann
[alias]
co = checkout
st = status
ci = commit
br = branch
df = diff
Ich möchte jedoch nicht alle meine Bash-Aliase zu .gitconfig hinzufügen. Das ist nicht trocken.
Gibt es eine bessere Lösung?
Antworten:
Bash lädt Ihre .bashrc nur, wenn sie interaktiv ist. Verwenden
Damit sich Vims
:!
Shell wie Ihre Eingabeaufforderung verhält.quelle
suspended (tty output)
Wenn ich benutzegit commit
~/.zshrc
für interaktive Shells geladen , aber~/.zshenv
für alle Shells. Daher habe ich mein Alias-Setup dorthin verschoben und es funktioniert jetzt in Vim. Weitere Informationen finden Sie unterman zsh
(oder auf den Manpages Ihrer Shell).Ich weiß, dass diese Frage bereits zuvor "beantwortet" wurde, aber ich habe ein Problem mit der Antwort. Die Schale nicht brauchen , um auf interaktive in Vim eingestellt werden. In diesem Thread finden Sie eine alternative Antwort, ohne eine interaktive Shell beenden zu müssen.
Diese Lösung wurde von "Jakob" vorgeschlagen. Das Original finden Sie unter dem folgenden Link. Ich habe dies unter Mac OS X 10.9 getestet und es hat einwandfrei funktioniert!
vim - Aliase im interaktiven Modus nicht erkennen?
quelle
$BASH_ENV
Variable in meinem.bashrc
(vor jeder benutzerdefinierten Überprüfung des interaktiven Modus), damit ich alle meine Aliase für Anwendungen verwenden kann.let $BASH_ENV="~/.vim/vim_bash"
und dies würde für alle:!
Aufrufe innerhalb von Vim verwendet werden.Beachten Sie, dass Sie je nach Konfiguration Ihrer Bash-Punktedateien möglicherweise die Option -l anstelle der Option -i verwenden möchten. Dadurch wird die Shell als Login-Shell gestartet.
quelle
Ich weiß, dass es eine alte Frage sein kann, aber keine der oben genannten Antworten hat für mich wie gewünscht funktioniert. Also für diejenigen, die vom Googeln hierher gekommen sind und für (oh-my-) zsh-Benutzer:
Meine Lösung dafür war so einfach wie das Kopieren von .zshrc nach .zshenv - gemäß http://zsh.sourceforge.net/Intro/intro_3.html :
Also
$ cp ~/.zshrc ~/.zshenv
werde ich das Ding machen.quelle
. $HOME/.aliases
Ich fühle mich nicht wohl mit der Einstellung der Option -i, da sie einige Auswirkungen hat und ich die Shell oft von vim aus benutze. Was ich stattdessen tun würde, ist so etwas wie
:!bash -c ". ~/.alias; gitlog"
quelle