Определите псевдонимы git на основе gitconfig в zsh

Используйте xcursorgen из пакета xorg-x11-apps или x11-apps для создания файла Xcursor из коллекции изображений PNG.

xcursorgen config-file output-file

где в config-файле есть строка с именем вашего курсора

size xhot yhot filename
2
04.06.2019, 23:54
1 ответ

На самом деле, вызов _gitиз вашего .zshrcдействительно работает, поскольку он определяет _gitи связанные с ним функции, включая __git_aliases, и пытается выполнить некоторое завершение, но терпит неудачу (даже без сообщения об ошибке. в данном конкретном случае ). Это работает с большинством функций завершения . Сделать это нужно после compinit, чтобы _gitи его вспомогательные функции были помечены для автозагрузки.

% zsh -f
darkstar% autoload compinit          
darkstar% compinit
darkstar% _git 
darkstar% __git_aliases 
_tags:comptags:36: can only be called from completion function
_tags:comptry:55: can only be called from completion function
_tags:comptags:60: can only be called from completion function
_tags:comptags:67: can only be called from completion function

Проблема в том, что когда вы запускаете __git_aliases, он вызывает встроенные функции, которые можно использовать только во время завершения. Вы можете обойти это, временно определив функции с тем же именем, что и эти встроенные функции, которые делают только ту часть, которую вы хотите сделать, что часто ничего не значит, но это очень неуклюже. Я не собираюсь показывать, как это сделать, потому что в этом конкретном случае есть гораздо более простой способ.

Так как вы все равно углубляетесь в файл завершения _git, вызовите __git_extract_aliasesвместо __git_aliases. __git_extract_aliasesвставляет информацию в переменную aliasesтаким образом, чтобы ее было легко извлечь. (Примечание. :Я написал этот ответ для zsh 5.4.2, версии для Ubuntu 18.04. Другие версии zsh могут иметь другую структуру в _git.)

_git 2>/dev/null
define_git_aliases () {
  local -a aliases; local al
  __git_extract_aliases
  for al in ${aliases%%:*}; do
    alias g$al="git $al"
  done
}
define_git_aliases

Это все еще намного больше усилий, чем необходимо, и, возможно, дополнительные усилия по переносу, чтобы справиться с различными версиями zsh. __git_extract_aliases— это, по сути, одна строка кода.

for al in ${${${(0)"$(git config -z --get-regexp '^alias.')"}%%$'\n'*}#alias.}; do
  alias g$al="git $al"
done
2
27.01.2020, 22:08

Теги

Похожие вопросы