Я использую bash на Mac, и один из псевдонимов похож на этот
alias gitlog='git --no-pager log -n 20 --pretty=format:%h%x09%an%x09%ad%x09%s --date=short --no-merges'
Однако когда я это сделаю
:! gitlog
я получил
/bin/bash: gitlog: command not found
Я знаю, что могу добавить подобные псевдонимы в свой .gitconfig
[alias]
co = checkout
st = status
ci = commit
br = branch
df = diff
Однако я не хочу добавлять все мои псевдонимы bash в .gitconfig. Это не СУХОЕ.
Есть ли лучшее решение?
Ответы:
Bash не загружает ваш .bashrc, если он не интерактивен. Использовать
чтобы
:!
оболочка Vim работала как ваша командная строка.источник
suspended (tty output)
когда я используюgit commit
~/.zshrc
для интерактивных оболочек, но он загружается~/.zshenv
для всех оболочек, поэтому я переместил туда свой псевдоним, и теперь он работает из Vim. См.man zsh
(Или справочные страницы вашей оболочки) для получения дополнительной информации.Я знаю, что на этот вопрос уже был дан ответ, но у меня проблема с ответом. Оболочку не нужно настраивать в Vim как интерактивную. См. Этот поток для альтернативного ответа без необходимости выходить из интерактивной оболочки.
Такое решение предложил «Якоб». См. Ссылку ниже на оригинал. Я тестировал это на Mac OS X 10.9, и он работал безупречно!
vim - не распознает псевдонимы в интерактивном режиме?
источник
$BASH_ENV
переменную в my.bashrc
(перед любой проверкой пользовательского интерактивного режима), поэтому я могу использовать все свои псевдонимы в приложениях.let $BASH_ENV="~/.vim/vim_bash"
, и это будет использоваться для всех:!
вызовов в Vim.Обратите внимание, что в зависимости от того, как настроены ваши точечные файлы bash, вы можете использовать параметр -l, а не -i. Это запустит оболочку как оболочку входа в систему.
источник
Я знаю, что это может быть старый вопрос, однако ни один из приведенных выше ответов не сработал для меня должным образом. Итак, для тех, кто пришел сюда из Google, и для пользователей (oh-my-) zsh:
Мое решение было таким же простым, как копирование .zshrc в .zshenv - согласно http://zsh.sourceforge.net/Intro/intro_3.html :
Так
$ cp ~/.zshrc ~/.zshenv
что сделаю вещь.источник
. $HOME/.aliases
Мне не слишком комфортно устанавливать параметр -i, так как он имеет некоторое влияние, и я часто использую оболочку из vim. Вместо этого я бы сделал что-то вроде
:!bash -c ". ~/.alias; gitlog"
источник