我想使用后缀别名在vim中自动打开.py
个文件。为此,我的zshrc中有alias -s py=vim
。
但是,我确实有一些python文件是我的路径中的可执行文件,我想要禁用后缀完成。我可以直接使用python /path/to/executable.py
调用该文件,但每次输入路径都很麻烦(并反对PATH
的概念)。
有没有办法豁免某些文件,最好只是那些不存在于后缀别名的当前工作目录中的文件?如果没有,是否有人指出如何实现这样的功能?
答案 0 :(得分:3)
在评估别名之前,无法选择性地禁用特定文件的后缀别名。
但您可以使用函数检查路径中的文件名是否作为别名的目标。根据结果,此函数将启动程序或在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}
)。