2

我想使用后缀别名.py在 vim 中自动打开文件。为此,我已经alias -s py=vim在我的 zshrc 中。

但是,我的路径中确实有一些可执行的 python 文件,我想禁用后缀补全。我可以简单地用 直接调用该文件python /path/to/executable.py,但是每次输入路径都很麻烦(并且与“PATH反正”的概念相反)。

有没有办法免除某些文件,最好是那些不驻留在当前工作目录中的文件免于后缀别名?如果没有,是否有人指示如何实现这样的功能?

4

1 回答 1

5

在评估别名之前,无法选择性地禁用特定文件的后缀别名。

但是您可以使用一个函数来检查文件名是否在您的路径中作为别名的目标。根据结果​​,此函数将启动程序或在 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 中(或别名、shell 函数等),则不会有进一步的解释,文件将在 vim ( vim "$1") 中加载。如果有进一步的解释,第二个 ( "$interps[2]") 将与任何进一步的命令行参数 ( ${@:2}) 一起调用。

于 2013-12-05T15:37:15.200 回答