Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos zsh:如何在python脚本名之后自动完成文件名?_Macos_Autocomplete_Zsh_Oh My Zsh - Fatal编程技术网

Macos zsh:如何在python脚本名之后自动完成文件名?

Macos zsh:如何在python脚本名之后自动完成文件名?,macos,autocomplete,zsh,oh-my-zsh,Macos,Autocomplete,Zsh,Oh My Zsh,我刚从bash搬到了。这是一个很棒的终端shell,但我缺少一个属性——非标准可执行文件的文件名补全 例如,如果ls给出线程池\u示例和线程池: 然后键入du,空格和制表符将自动完成公共前缀thread\u pool,然后再次单击将遍历选项: 单击Enter将拾取高亮显示的项目 问题是,这不适用于我的自定义脚本。例如,如果我运行路径中的Python可执行文件rmf,然后单击tab,则不会出现自动完成选项 你知道如何让zsh自动完成每个可执行文件的文件名吗?老实说,在你的shell配置中有些

我刚从bash搬到了。这是一个很棒的终端shell,但我缺少一个属性——非标准可执行文件的文件名补全

例如,如果ls给出
线程池\u示例
线程池

然后键入
du
,空格和制表符将自动完成公共前缀
thread\u pool
,然后再次单击将遍历选项:

单击Enter将拾取高亮显示的项目

问题是,这不适用于我的自定义脚本。例如,如果我运行路径中的Python可执行文件
rmf
,然后单击tab,则不会出现自动完成选项


你知道如何让zsh自动完成每个可执行文件的文件名吗?

老实说,在你的shell配置中有些东西正在破坏它。尝试执行以下操作以验证它:

zsh -f # starts a new shell ignoring your configuration
autoload compinit
compinit
./my-shell-script [TAB]
它以文件完成。这是默认值

FWIW,如果您想将特定的完成符绑定到命令/别名等,您可以这样做

compdef _jstack jstack

# simple _files completion
compdef _files my-local-python-script

# restrict to some file extensions
compdef '_files -g "*.(eps|ps|pdf)"' okular 

老实说,在您的shell配置中,有些东西正在破坏它。尝试执行以下操作以验证它:

zsh -f # starts a new shell ignoring your configuration
autoload compinit
compinit
./my-shell-script [TAB]
它以文件完成。这是默认值

FWIW,如果您想将特定的完成符绑定到命令/别名等,您可以这样做

compdef _jstack jstack

# simple _files completion
compdef _files my-local-python-script

# restrict to some file extensions
compdef '_files -g "*.(eps|ps|pdf)"' okular 

不起作用。当我键入
~/bin/rm
时,它会自动完成到
~/bin/rmf
,但它不会自动完成参数。我可以向您保证一件事:所有这些命令都在普通的zsh中工作。您是否使用
zsh-f
进行了测试?这样行吗?如果这样做有效,您需要检查您的配置。“zsh不做它默认做的事情”最常见的原因是“噢,我的zsh变得有趣了”。您也可以尝试删除完成缓存,通常位于
$ZDOTDIR/.zcompcache
和任何
~/.zcompdump
(另一个有趣的完成问题源)。不起作用。当我键入
~/bin/rm
时,它会自动完成到
~/bin/rmf
,但它不会自动完成参数。我可以向您保证一件事:所有这些命令都在普通的zsh中工作。您是否使用
zsh-f
进行了测试?这样行吗?如果这样做有效,您需要检查您的配置。“zsh不做它默认做的事情”最常见的原因是“噢,我的zsh变得有趣了”。您还可以尝试删除完成缓存,通常位于
$ZDOTDIR/.zcompcache
和任何
~/.zcompdump
(另一个有趣的完成问题来源)。