k_wisniewski
k_wisniewski

Reputation: 2519

How can I fix not working oh-my-zsh plugins

I've just discovered oh-my-zsh, but I can't get it to work. While themes work just perfectly, plugins do not. I have some plugins selected, eg. macports, but neither I get port command completion nor do appropriate aliases work. Here's my ~/.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 and osx plugins also do not seem to work. zsh complains about unknown command and stops. git and svn have some basic completion but I'm not sure whether it's done by plugin or just a normal zsh completion. Do I have to export something to use those plugins? Or if not, what to do to have that fixed?

Upvotes: 33

Views: 106928

Answers (16)

Chrisdigital
Chrisdigital

Reputation: 404

I got a curveball different than everybody else.

My bug was the folder name of the distributed plugin file vs. how it was listed in the .zshrc.

I guess depending on operating this matters a lot. I was having a problem with zsh-you-should-use folder in ~/.oh-my-zsh/custom/plugins vs it being listed as "you-should-use" in .zshrc. Once I matched the folder to how it was referenced in .zshrc it started working fine.

Upvotes: 0

Cyrus Villacampa
Cyrus Villacampa

Reputation: 31

Considering all the answers here, also make sure that you have defined the plugins correctly. I had it misconfigured like this,

plugins=(git)
.....
plugins=(git custom-plugin)

what you can do is,

plugins=(git custom-plugin)

Upvotes: 1

Karim Taha
Karim Taha

Reputation: 1

The plugin copydir was replaced ,the new one is called copy path.replace ment from the source

Upvotes: 0

Joshua Royalty
Joshua Royalty

Reputation: 617

Many of the plugins are dependent on certain binaries existing and will silently fail to install if that binary is not found on the $PATH.

Ex: the kubectl plugin requires kubectl to be installed - the plugin script just bails and doesn't even install the aliases if it can't find the command on the $PATH.

This check is at the start of many such plugins

if (( ! $+commands[kubectl] )); then
  return
fi

Note: This means you need to initialize brew before any plugins based on binaries that are installed via brew will work.

I found that putting the brew plugin at the start of the list seems to work as well as oh-my-zsh seems to initialize the plugins in order. Your results may vary.

This works (kubectl aliases are installed):

plugins=(brew kubectl)

source $ZSH/oh-my-zsh.sh

This does not work (kubectl aliases are not installed):

plugins=(kubectl brew)

source $ZSH/oh-my-zsh.sh

Upvotes: 0

estambuleno
estambuleno

Reputation: 1

Make sure that cli tools/commands referred by plugins are already installed. For example, it will fail if you include kubectl plugin while you didn't install kubectl beforehand

Upvotes: 0

herzorf
herzorf

Reputation: 129

i have the same problem,when i writen:

plugins=(git node)

it didn't work

so i installed node again and add path to PATH

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

Upvotes: 0

ullas_jain
ullas_jain

Reputation: 13

After installing the custom plugins manually, moving them to the $ZSH_CUSTOM/plugins/ location solved the issue.

Upvotes: 0

Satya
Satya

Reputation: 1789

In my case, in ~/.zshrc I had repeated plugins variable

plugins=(git)
.
.
.
plugins=(git autojump zsh-syntax-highlighting zsh-autosuggestions)

Check to see if this is the case with you because with this only your git plugin will be used.

Remove the first plugins variable and it should work.

Upvotes: 4

Junior Tour
Junior Tour

Reputation: 638

Try manually source your plugins like this:

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

Full .zshrc example:

# 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

Upvotes: 1

lacostenycoder
lacostenycoder

Reputation: 11226

If your .zshrc has this at the top

export ZSH="~/.oh-my-zsh"

try to changing it to:

export ZSH="$HOME/.oh-my-zsh"

Upvotes: 0

Nature
Nature

Reputation: 149

make sure the folders of the plugins are located in the ~/.oh-my-zsh/custom/plugins folder. I will advise you are on this directory when you git clone the plugins.
Secondly ensure that you seperate the list of plugins in the ~/.zshrc file with a single space NOT comma.

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

.
.
.

So in the above example, two plugins are added there: git and zsh-syntax-highlighting.

Upvotes: 0

docwhat
docwhat

Reputation: 11704

I got bitten by this.

What happened is you did a manual install and the instructions for the manual install don't mention that you need to set the PATH yourself.

So you end up with the default PATH. The source for the automatic setup code copies your current path and appends it to the .zshrc, which isn't enough if you depend on non-standard PATH entries (e.g. you run Homebrew on a Mac).

So the fix is simple:

Fire up your old shell and its configuration file and then copy and paste the value of $PATH into the top of your ~/.zshrc file.

Ciao!

Upvotes: 17

yongjie zou
yongjie zou

Reputation: 21

In my case,I forgot to add custom plugin name to .zshrc file:

plugins=(customPluginName)

And reload .zshrc:

source ~/.zshrc

Upvotes: 0

Nikash
Nikash

Reputation: 38

I was running into this with the kubectl plugin.

Looking at the contents of ~/.oh-my-zsh/plugins/kubectl/kubectl.plugin.zsh I realized I didn't have the same content as what was on the github repo. Manually updating the file with the contents from the oh-my-zsh repo helped and the plugin started to work. Guess I had to update my oh-my-zsh installation to get the latest plugin content but this worked for me.

Upvotes: 0

T. Arboreus
T. Arboreus

Reputation: 1059

Make sure that you define your plugins variable before you initialize zsh:

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

Upvotes: 68

Fabio Montefuscolo
Fabio Montefuscolo

Reputation: 2548

I had the same problem just now! There was a package called grml-zsh-config installed in my Archlinux. I removed this package and oh-my-zsh themes started to work.

Upvotes: 4

Related Questions