OhMy Zsh: переопределить Git псевдонимы плагинов с настраиваемыми многострочными псевдонимами / функциями - PullRequest
0 голосов
/ 08 апреля 2020

tl; dr - я хочу переопределить OhMy Zsh 's Git псевдонимов с многострочными псевдонимами / функциями.

Я пытаюсь переключиться от bash до zsh и перенести мои псевдонимы. Я могу переопределить Git псевдонимы из OhMy Zsh через этот (пример):

alias grs="git restore --staged ."

Однако, когда я пытаюсь использовать функции zsh (для псевдонимов, которые уже существуют в OhMy Zsh):

grs() {
  if [ $# -eq 0 ]
  then
    git restore --staged .
  else
    git restore --staged "$@"
  fi
}

это приводит к этой ошибке:

/Users/StevenChoi/.aliases/.zsh_aliases/.g_aliases.zsh:102: defining function based on alias `grs'
/Users/StevenChoi/.aliases/.zsh_aliases/.g_aliases.zsh:102: parse error near `()'

Когда я пытаюсь использовать функции bash в стиле:

function grs() {

Они просто получают игнорируется.


Вещи, которые я пробовал

  • Я перемещался, когда экспортировал или искал OhMy Zsh и мои псевдонимы в .zshrc ( цитата здесь ), но без разницы.

  • Я попытался использовать ZSH_CUSTOM=/Users/StevenChoi/.aliases/.zsh_aliases и создать папку plugins (кажется, я следовал этим направления правильно), но результат тот же.

  • Я добавил #!/bin/zsh вверху каждого файла и .zsh в конце каждого имени файла, просто чтобы быть тщательно (не то чтобы я ожидал многого).

  • ПРИМЕЧАНИЕ : я также хочу не касаться .oh-my-zsh/plugins/git/git.plugin.zsh и каталога .oh-my-zsh, если только это не единственный способ .

  • РЕДАКТИРОВАТЬ : Co объединение команд в одну строку жертвует обработкой параметров. Я использовал решение, которое предоставил для себя сейчас, но оно не может обрабатывать параметры, возвращая их только в виде пустой строки. Для лучшего решения это должен быть многострочный псевдоним / функция, который заменяет псевдоним в OhMy Zsh, а также принимает и обрабатывает параметры.

1 Ответ

0 голосов
/ 08 апреля 2020

ЗАКЛЮЧИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ: @simont предоставляет реальное решение в виде ссылки на этот вопрос . Пожалуйста, игнорируйте все, что ниже правила горизонтали, которое я оставляю для записи.

Просто удалите псевдоним и установите его сразу после.

unalias grs

grs() {
  if [ $# -eq 0 ]
  then
    git restore --staged .
  else
    git restore --staged "$@"
  fi
}

РЕДАКТИРОВАТЬ: Это решение НЕ обрабатывает параметры правильно! Хотя это решение достаточно для того, чтобы разблокировать меня, сейчас вопрос в том, чтобы найти решение, которое может заменить псевдоним в OhMy Zsh, а также принять и обработать параметры.

Нашел решение от здесь при подробном описании моего вопроса.

Я просто преобразовал все свои многострочные функции в однострочные псевдонимы (пример):

alias grs="if [ $# -eq 0 ];then;git restore --staged .;else;git restore --staged \"$@\";fi;"

Это один из более ужасные вещи, которые я видел после перехода на zsh (что обычно выглядит лучше), но я думаю, что оно того стоит. Если у кого-нибудь есть более элегантное решение, я буду рад его услышать.

...