如何在启动终端时加载并调用zsh插件的__enhancd::cd函数?
解决方法
1. 确保enhancd插件已被zsh正确加载
首先确认你的.zshrc里已经配置了zplug加载enhancd,添加以下内容(如果还没加):
zplug "babarot/enhancd" zplug load
保存后重启zsh,执行type __enhancd::cd验证函数是否存在——如果输出类似__enhancd::cd is a shell function,说明加载成功。
2. 正确在Wezterm中调用zsh函数
__enhancd::cd是zsh专属函数,不是系统可执行命令,所以不能直接用wezterm -e __enhancd::cd调用。你需要让Wezterm启动zsh进程,先加载插件配置,再执行函数:
临时测试命令
直接在终端运行:
wezterm -e zsh -ic '__enhancd::cd'
-i参数让zsh以交互式模式启动,会自动加载.zshrc里的zplug配置,确保__enhancd::cd函数被定义;-c参数指定要执行的命令。
设置为Wezterm默认启动行为
如果想让Wezterm每次启动都自动运行这个函数,编辑Wezterm的配置文件(通常是~/.config/wezterm/wezterm.lua),添加或修改default_prog配置:
local config = {} config.default_prog = { "zsh", "-ic", "__enhancd::cd" } return config
保存配置后重启Wezterm即可生效。
注意事项
- 如果你的
.zshrc里有针对非交互式shell的插件加载逻辑(比如用[[ -o interactive ]]判断),zsh -ic会触发交互式模式,确保插件被加载; - 若遇到函数仍未找到的情况,检查zplug是否正确克隆了enhancd仓库到
$HOME/.zplug/repos/babarot/enhancd,可以手动运行zplug install babarot/enhancd重新安装。
内容的提问来源于stack exchange,提问作者Kiara Grouwstra
相关产品推荐
相关产品推荐

