26

I installed oh-my-zsh to make terminal use a bit easier. One thing that bugs me though is the prolific aliases added by it, like "ga", "gap", "gcmsg", "_", which are harder to remember than the original command, and pollutes the command hash table.

So is there a way to disable aliases altogether? Or a way to clear all aliases so that I can put it in my .zshrc?

5 Answers 5

14

If you don't want any of oh-my-zsh's aliases, but you want to keep other aliases, you can save the aliases before loading oh-my-zsh

save_aliases=$(alias -L)

and restore them afterwards.

eval $save_aliases; unset save_aliases

If you want to remove all aliases at some point, you can use unalias -m '*' (remove all aliases matching *, i.e. all of them).

If you absolutely hate aliases and don't want to ever see one, you can make the alias builtin inoperative: unalias -m '*'; alias () { : }. Or you can simply turn off alias expansion with setopt no_aliases.

1
  • Thanks! I like this solution because it will still work after updates to oh-my-zsh and its git plugin.
    – rangfu
    Commented Apr 4, 2022 at 15:23
10

You can use unalias with -m option:

unalias -m '*'

to delete all defined aliases

10
  • When I append this line to .zshrc, there is still one alias globurl='noglob urlglobber ' left. Any idea why?
    – Siyuan Ren
    Commented Oct 14, 2014 at 8:46
  • Maybe it's loaded after unalias ran. ,Maybe you should put the unalias command at the end of your .zshrc
    – cuonglm
    Commented Oct 14, 2014 at 8:47
  • I did put it at the end. That is why it is so confusing.
    – Siyuan Ren
    Commented Oct 14, 2014 at 8:55
  • What is output of zstyle?
    – cuonglm
    Commented Oct 14, 2014 at 9:09
  • 1
    @SiyuanRen This alias is defined when the function url-quote-magic is loaded (see /usr/share/zsh/functions/Zle/url-quote-magic or wherever it is on your system). Oh-my-zsh binds self-insert to url-quote-magic. Commented Oct 14, 2014 at 22:44
9

If you only want to remove the git aliases, I recommend one of the following two choices:

  1. Change ~/.oh-my-zsh/plugins/git/git.plugin.zsh by removing all the aliases at the bottom

  2. Make a copy of that plugin (recommended location: ~/.oh-my-zsh/custom/plugins/git-noalias/git-noalias.plugin.zsh), edit that copy to not have the aliases, and then change your ~/.zshrc to do plugins=(git-noalias) instead of plugins=(git).

This will give you all the benefits of the plugin (I'm not sure what they are but they may be related to the automatic Git status/branch information displayed within Git folders) without the aliases.

1
  • The advantage of not having aliases but keep the git plugin of oh-my-zsh is the functions.
    – Timo
    Commented Nov 16, 2020 at 12:27
1

It is possible to skip loading aliases in ohmyzsh via zstyle settings.

The "alias skip" filtering is quite granular, after changes merged in April 2023 (issue, pull request). It is possible to, for example, skip all aliases, or only git aliases.

Skip aliases

If you want to skip default Oh My Zsh aliases (those defined in lib/* files) or plugin aliases, you can use the settings below in your ~/.zshrc file, before Oh My Zsh is loaded. Note that there are many different ways to skip aliases, depending on your needs.

# Skip all aliases, in lib files and enabled plugins
zstyle ':omz:*' aliases no

# ...other filtering variants...

# Skip only the aliases from the git plugin
zstyle ':omz:plugins:git' aliases no

Other suggestions:

-1

Simple method: If the problem is the multiple lines of git aliases comment out the aliases you want to disable

nano ~/.oh-my-zsh/plugins/git/git.plugin.zsh

comment out the unwanted lines #, to go faster using nano make use of the Replace function

alias g='git'
#alias ga='git add'
#alias gaa='git add --all'
...

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .