Jak zrobić.aliasy bashrc dostępne w Komendzie vim shell? (:!…)
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że kiedy robię
:! gitlog
I get
/bin/bash: gitlog: command not found
Wiem, że mogę dodać takie aliasy w moim .gitconfig
[alias]
co = checkout
st = status
ci = commit
br = branch
df = diff
Jednak nie chcę dodawać wszystkich aliasów Basha do .gitconfig. To nie jest suche.
Czy jest lepsze rozwiązanie?5 answers
Bash nie ładuje twojego .bashrc
, chyba że jest interaktywny.
Uruchom :set shellcmdflag=-ic
, aby ustawić ją na interaktywną dla bieżącej sesji.
Aby ustawić ustawienie na stałe, dodaj set set shellcmdflag=-ic
na końcu pliku .vimrc
.
Użyj bang (!
) przed wysłaniem polecenia do powłoki. Na przykład: :! cd folder/
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-10-08 04:58:16
Wiem, że to pytanie było już wcześniej "odpowiedział" , Ale mam problem z odpowiedzią. Powłoka nie musi być ustawiona na interactive w Vimie. Zobacz ten wątek, aby uzyskać alternatywną odpowiedź bez konieczności opuszczania interaktywnej powłoki.
Rozwiązanie to zasugerował "Jakob". Zobacz poniższy link do oryginału. Testowałem to na Mac OS X 10.9 i działało bez zarzutu!Jeśli chcesz nieinteraktywną powłokę (domyślnie), ale rozszerzenie aliasów Basha, umieść definicje aliasów w pliku, np.bash_aliases i jawnie włączają rozszerzenie aliasów w tym pliku:
shopt -s expand_aliases alias la='ls -la'
Następnie dodaj to do Twoje .vimrc więc plik aliasów jest faktycznie odczytywany za każdym razem, gdy uruchamiasz polecenie powłoki z Vima:
let $BASH_ENV = "~/.bash_aliases"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:33
Zauważ, że w zależności od konfiguracji plików dotfiles bash możesz użyć opcji-l zamiast-i. Spowoduje to uruchomienie powłoki jako powłoki logowania.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-05 02:50:25
Wiem, że może to być stare pytanie, jednak żadna z powyższych odpowiedzi nie zadziałała dla mnie zgodnie z życzeniem. Więc dla tych, którzy przybyli tu z googlowania i dla (O-my -) użytkowników zsh:
Moje rozwiązanie było tak proste jak kopiowanie .zshrc do .zshenv-jak na http://zsh.sourceforge.net/Intro/intro_3.html :`.zshenv ' jest pozyskiwane dla wszystkich wywołań powłoki, chyba że jest ustawiona opcja-f. Powinien zawierać polecenia do ustawiania ścieżki wyszukiwania poleceń oraz inne ważne zmienne środowiskowe. `.zshenv ' nie powinien zawierać poleceń, które wytwarzają wyjście lub zakładają, że powłoka jest dołączona do tty.
Więc $ cp ~/.zshrc ~/.zshenv
zrobi to.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-03 11:55:00
Nie czuję się zbyt komfortowo z ustawieniem opcji-i, ponieważ ma to dość duży wpływ i często używam powłoki z Vima. To co bym zamiast tego zrobił to coś w stylu :!bash -c ". ~/.alias; gitlog"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-03 12:50:54