Создать новый набор псевдонимов на основе текущего набора псевдонимов (, например. гст -> дст )?

Как предполагает https://unix.stackexchange.com/a/352377, вам придется изменить исходный код, чтобы сделать это. Текущие версии Bash (до недавно выпущенной версии 5.0 )включительно могут окрашивать только варианты завершения имени файла; i -search всегда выводит обычный текст.

2
23.05.2021, 01:11
1 ответ

Ассоциативный массивaliasesсодержит все определения псевдонимов.

for name in "${(@k)aliases}"; do
  if [[ $name == g* && $aliases[$name] == 'git '* ]]; then
    alias d${name#g}="dotfiles ${aliases[$name]#git }"
  fi
done

В качестве альтернативы вы можете изменить псевдоним dна функцию, которая ожидает следующую команду git, но сначала расширяет псевдонимы оболочки и удаляет все ведущие git.

alias d='d ' # expand aliases after d
function d {
  if [[ $1 == "git" ]]; then shift; fi
  dotfiles "$@"
}

Затем d gstвыполнит dotfiles status, d gc myfileвыполнит dotfiles commit myfile, d ls-treeвыполнит dotfiles ls-treeи т. д. Завершение выполнимо, но не так просто.

1
28.07.2021, 11:30

Теги

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