псевдонимы суффиксов zsh - исключения

Я хотел бы использовать псевдонимы суффиксов для автоматического открытия .py файлов в vim. Для этого у меня есть alias -s py=vim в моем zshrc.

Однако у меня есть некоторые файлы python, которые являются исполняемыми на моем пути, для которых я хотел бы отключить завершение суффикса. Я мог бы просто вызвать файл напрямую с помощью python /path/to/executable.py, но каждый раз вводить путь обременительно (и в любом случае противоречить понятию PATH).

Есть ли способ исключить определенные файлы, предпочтительно те, которые не находятся в текущем рабочем каталоге, от псевдонима суффикса? Если нет, есть ли у кого-нибудь указатели, как реализовать такую ​​функциональность?


person Alice    schedule 04.12.2013    source источник


Ответы (1)


Невозможно выборочно отключить псевдонимы суффиксов для определенных файлов перед оценкой псевдонима.

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

Например, вы можете добавить это в свой .zshrc

vim_or_exec ()
{
    interps=($(whence -a "$1"))
    if [[ -z $interps[2] ]]; then
        vim "$1"
    else
        "$interps[2]" "${@:2}"
    fi
}

alias -s py=vim_or_exec

whence -a показывает список всех интерпретаций данного имени файла, упорядоченных по приоритету. При установленном псевдониме первой интерпретацией будет значение псевдонима, то есть vim_or_exec. Если файл не находится в $ PATH (или псевдониме, функции оболочки и т. Д.), Дальнейших интерпретаций не будет, и файл будет загружен в vim (vim "$1"). Если есть другие интерпретации, вторая ("$interps[2]") будет вызываться с любыми дополнительными параметрами командной строки (${@:2}).

person Adaephon    schedule 05.12.2013
comment
Работает как шарм, и я узнал про whence - Спасибо. - person Alice; 05.12.2013