108 votes

Les commandes exécutées à partir de vim ne reconnaissent pas les alias de commande bash

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 le 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?

90voto

Zahnon Points 301

Je sais que cette question a déjà été "répondu", mais j'ai un problème avec la réponse. La coque n'a pas besoin d'être interactif dans Vim. Voir ce fil de discussion pour une alternative la réponse sans avoir à sortir un shell interactif.

Si vous voulez non-shell interactif (par défaut), mais l'expansion de bash alias, mettez votre pseudo de définitions dans un fichier, par exemple .bash_aliases et explicitement activer l'alias de l'extension de ce fichier:

shopt -s expand_aliases  
alias la='ls -la'

Ensuite, ajoutez ceci à votre .vimrc de sorte que le fichier d'alias est lu à chaque fois que vous exécutez une commande shell à partir de vim:

let $BASH_ENV = "~/.bash_aliases"

Cette solution a été suggérée par "Jakob". Voir le lien ci-dessous pour l'original. J'ai testé sur Mac OS X 10.9 et cela a fonctionné parfaitement!

vim -- ne pas reconnaître les alias en mode interactif?

8voto

user836003 Points 96

Notez que selon la configuration de vos fichiers de points bash, vous pouvez utiliser l'option -l plutôt que l'option -i. Cela lancera le shell en tant que shell de connexion.

2voto

pfnuesel Points 3011

Je ne me sens pas très à l'aise avec l'option -i, car elle a un impact important et j'utilise souvent la coque de vim. Ce que je ferais plutôt est quelque chose comme :!bash -c ". ~/.alias; gitlog"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X