он печатает только vim -O.
Вся правая часть находится внутри двойных кавычек;это означает, что подстановка команды ($(...)
) вычисляется немедленно, пока вы определяете переменную.Если (в этот момент) вы не находитесь в рабочей копии Git, вы получите ошибку;если измененных файлов просто нет, результат будет пустым, и он будет сохранен в вашей переменной.
Правильный псевдоним
Команда export
предназначена для переменных среды ;в Bash есть отдельная команда alias
:
alias vim_open='vim -O $(git stat -uno -s | awk '\''{print $2}'\'')'
Обратите внимание, как я использовал одинарные кавычки, чтобы избежать немедленного выполнения встроенной подстановки команд (а затем пришлось избегать других встроенных одинарных кавычек).В качестве альтернативы я мог бы сохранить двойные кавычки и избежать только символов $
для подстановки команд и ссылки на переменные:
alias vim_open="vim -O \$(git stat -uno -s | awk '{print \$2}')"
Суперсилы с функцией
Наконец, чтобы сохранить способностьпередать аргументы командной строки в Vim (они должны прийти перед списком файлов, но псевдонимы могут добавлять их только в конце), вместо этого вам нужно будет определить функцию оболочки:
vim_open()
{
# v--- arguments passed to vim_open are inserted here
vim "$@" -O $(git stat -uno -s | awk '{print $2}')
}