J'utilise bash sur mac et l'un des alias est comme ça
alias gitlog='git --no-pager log -n 20 --pretty=format:%h%x09%an%x09%ad%x09%s --date=short --no-merges'
Cependant quand je fais
:! gitlog
Je reçois
/bin/bash: gitlog: command not found
Je sais que je peux ajouter des alias comme celui-ci dans mon .gitconfig
[alias]
co = checkout
st = status
ci = commit
br = branch
df = diff
Cependant, je ne veux pas ajouter tous mes alias bash à .gitconfig. Ce n'est pas SEC.
Y a-t-il une meilleure solution?
Réponses:
Bash ne charge pas votre .bashrc sauf s'il est interactif. Utilisation
pour que le
:!
shell de Vim se comporte comme votre invite de commande.la source
suspended (tty output)
Quand j'utilisegit commit
~/.zshrc
pour les shells interactifs, mais il se charge~/.zshenv
pour tous les shells, j'ai donc déplacé ma configuration d'alias là-bas et cela fonctionne maintenant depuis Vim. Voirman zsh
(ou les pages de manuel de votre shell) pour en savoir plus.Je sais que cette question a déjà été "répondue", mais j'ai un problème avec la réponse. Le shell n'a pas besoin d'être défini sur interactif dans Vim. Voir ce fil pour une réponse alternative sans avoir à quitter un shell interactif.
Cette solution a été suggérée par "Jakob". Voir le lien ci-dessous pour l'original. J'ai testé cela sur Mac OS X 10.9 et cela a fonctionné parfaitement!
vim - ne reconnaît pas les alias en mode interactif?
la source
$BASH_ENV
var dans my.bashrc
(avant toute vérification du mode interactif personnalisé), afin de pouvoir utiliser tous mes alias dans les applications.let $BASH_ENV="~/.vim/vim_bash"
, et cela serait utilisé pour toutes les:!
invocations dans Vim.Notez que selon la façon dont vos fichiers dotfiles sont configurés, vous pouvez utiliser l'option -l plutôt que l'option -i. Cela lancera le shell comme shell de connexion.
la source
Je sais que c'est peut-être une vieille question, mais aucune des réponses ci-dessus n'a fonctionné pour moi comme souhaité. Donc, pour ceux qui sont venus ici de googler et pour les utilisateurs de (oh-my-) zsh:
Ma solution à cela était aussi simple que de copier .zshrc vers .zshenv - selon http://zsh.sourceforge.net/Intro/intro_3.html :
Alors
$ cp ~/.zshrc ~/.zshenv
fera la chose.la source
. $HOME/.aliases
Je ne me sens pas trop à l'aise avec la définition de l'option -i, car elle a un certain impact et j'utilise souvent le shell de vim. Ce que je ferais à la place, c'est quelque chose comme
:!bash -c ". ~/.alias; gitlog"
la source