如何修复不工作的oh-my-zsh插件

29

我刚刚发现了oh-my-zsh,但是我无法让它工作。虽然主题可以完美地工作,但插件却不能。我已经选择了一些插件,例如macports,但是我既没有得到端口命令的自动补全,也没有适当的别名工作。这是我的~/.zshrc文件内容:

# Path to your oh-my-zsh configuration.
export ZSH=$HOME/.oh-my-zsh

# Set name of the theme to load.
# Look in ~/.oh-my-zsh/themes/
# Optionally, if you set this to "random", it'll load a random theme each
# time that oh-my-zsh is loaded.
export ZSH_THEME="steeef"

# Set to this to use case-sensitive completion
# export CASE_SENSITIVE="true"

# Comment this out to disable weekly auto-update checks
# export DISABLE_AUTO_UPDATE="true"

# Uncomment following line if you want to disable colors in ls
# export DISABLE_LS_COLORS="true"

# Uncomment following line if you want to disable autosetting terminal title.
# export DISABLE_AUTO_TITLE="true"

# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Example format: plugins=(rails git textmate ruby lighthouse)
plugins=(git osx github macports textmate svn)

source $ZSH/oh-my-zsh.sh

# Customize to your needs...
export
PATH=/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/local/sbin/:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/local/sbin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/usr/local/cuda/bin:/usr/local/cuda/bin:/opt/local/bin:/opt/local/sbin

似乎TextMate和OSX插件也无法使用。 zsh 抱怨未知命令并停止。Git和SVN有一些基本的完成功能,但我不确定是通过插件完成还是普通的zsh完成。我需要导出某些内容才能使用这些插件吗?如果不需要,该怎么做才能解决这个问题?


你是怎么得出它们不起作用的结论的?能否在这里粘贴zsh错误信息? - NARKOZ
错误只是正常输出,例如在输入应该可用的命令时出现“命令未找到”。 - k_wisniewski
你能复制粘贴一下你最终使用的路径吗?我也遇到了同样的问题,这会非常有帮助。 - bsiddiqui
抱歉,那是2年前的事了,我已经更换了我的系统,并且不再使用oh-my-zsh,因为与正确配置的bash相比性能较差。 - k_wisniewski
12个回答

61

确保在初始化zsh之前定义您的插件变量:

plugins=(git wd)
export ZSH=/home/<user>/.oh-my-zsh
source $ZSH/oh-my-zsh.sh

1
我的问题是:在ZSH lin之后,我有插件栏。 - Jesus CMD
6
对我来说,解决方案是将 source $ZSH/oh-my-zsh.sh 移动到 .zshrc 文件的末尾,放在我的所有用户配置之后。 - Wis
经进一步调查,问题似乎是在使用bindkey -v设置vi模式和重新映射一些zsh快捷键和vi模式下的某些按键之前,先执行了source $ZSH/oh-my-zsh.sh。否则插件可以正常工作。 问题在于如果在之后执行源代码,则vi模式将停止工作。涉及到的OMZ插件是fzf。 - Wis
我在“插件”前面加上了:D - simPod
在我的情况下,是 export ZSH=$HOME/.oh-my-zsh 解决了这个问题,感谢! - lacostenycoder

13

我被这个问题咬了一口。

问题出在你进行手动安装的时候,并且手动安装的说明没有提到你需要自己设置PATH

所以你最终得到的是默认的PATH。自动设置代码的源代码会复制您当前的路径并将其附加到.zshrc,但如果您依赖非标准的PATH条目(例如,在Mac上运行Homebrew),则这还不够。

所以解决方法很简单:

启动旧的shell和其配置文件,然后将$PATH的值复制并粘贴到~/.zshrc文件的顶部。

Ciao!


3
你知道这为什么会导致你的插件不起作用吗(zsh在路径上需要什么东西)?我似乎无法让我的插件在Arch Linux上工作。 - Mike McFarland

4

我刚刚也遇到了同样的问题!在我的 Archlinux 上安装了一个名为 grml-zsh-config 的软件包。我删除了这个软件包,然后 oh-my-zsh 主题就开始正常工作了。


4
在我的情况中,在~/.zshrc文件中,我有重复的插件变量。
plugins=(git)
.
.
.
plugins=(git autojump zsh-syntax-highlighting zsh-autosuggestions)

请检查您的情况,因为这样只有您的GIT插件才会被使用。

删除第一个插件变量,然后它应该可以正常工作。


0
如果你的.zshrc文件顶部有这个内容
export ZSH="~/.oh-my-zsh"

尝试将其更改为:
export ZSH="$HOME/.oh-my-zsh"

0

请确保插件文件夹位于~/.oh-my-zsh/custom/plugins文件夹中。当您git clone插件时,我建议您在此目录下操作。
其次,请确保在~/.zshrc文件中使用单个空格而不是逗号来分隔插件列表。

.
.
.
plugin = (git zsh-syntax-highlighting)

.
.
.

所以在上面的例子中,添加了两个插件:git和zsh-syntax-highlighting。


0
确保已经安装了插件所引用的cli工具/命令。例如,如果你在之前没有安装kubectl的情况下包含了kubectl插件,那么它将会失败。

0

我在使用 kubectl 插件时遇到了问题。

查看 ~/.oh-my-zsh/plugins/kubectl/kubectl.plugin.zsh 的内容后,我意识到我的内容与 Github 存储库上的不同。手动更新文件并使用 oh-my-zsh 存储库中的内容解决了问题,插件开始正常工作。我想我需要更新 oh-my-zsh 安装程序以获取最新的插件内容,但这对我有用。


0

尝试手动引入插件,像这样:

source ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh

完整的.zshrc示例:

# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Example format: plugins=(rails git textmate ruby lighthouse)

plugins=(zsh-autosuggestions)

source ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh

0

我遇到了相同的问题,当我写下:

plugins=(git node)

它没起作用

所以我又安装了 Node,并将路径添加到 PATH

export PATH="/opt/homebrew/opt/node@18/bin:$PATH"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接