🦉
Oh-My-ZshのAliasを無視する
zshの設定で、Oh-My-Zshのテーマを使っているのですが、Aliasが勝手に追加されていたことに気づいたので削除するようにしました。
TL;DR
$ZSH/lib/directories.zsh
が犯人なので消す。
Oh-My-Zshで追加されていたalias
-='cd -'
.='cd ../'
..='cd ../../'
...='cd ../../../'
....=../../..
.....=../../../..
......=../../../../..
1='cd -1'
2='cd -2'
3='cd -3'
4='cd -4'
5='cd -5'
6='cd -6'
7='cd -7'
8='cd -8'
9='cd -9'
...
alias lsa='ls -lah'
alias l='ls -lah'
alias ll='ls -lh'
alias la='ls -lAh'
Oh-My-Zshのエントリーポイントファイル
私のdotconfigでOh-My-Zshを呼び出している部分を探したところ、エントリーポイント $ZSH/oh-my-zsh.sh
が見つかりました。
# Path to your oh-my-zsh installation.
export ZSH="$HOME/.oh-my-zsh"
# THEME
ZSH_THEME="kennethreitz"
...
source $ZSH/oh-my-zsh.sh
Oh-My-Zshが読み込んでいそうなファイルを探す
先ほどのファイルを読むと、lib
配下のデータを読んでいそうです。
cat $ZSH/oh-my-zsh.sh
...
# Load all of the lib files in ~/oh-my-zsh/lib that end in .zsh
# TIP: Add files you don't want in git to .gitignore
for lib_file ("$ZSH"/lib/*.zsh); do
_omz_source "lib/${lib_file:t}"
done
unset lib_file
...
補足:
- pluginを使っている場合、
~/oh-my-zsh/plugin
も見る必要がある - 自分の場合、pluginを使っていないので、今回は無視した
directory.shがaliasを貼っている
libの中でaliasという単語を使っているファイルを探すと、$ZSH/lib/directories.zsh
が見つかります。
# Changing/making/removing directory
setopt auto_cd
setopt auto_pushd
setopt pushd_ignore_dups
setopt pushdminus
alias -g ...='../..'
alias -g ....='../../..'
alias -g .....='../../../..'
alias -g ......='../../../../..'
alias -- -='cd -'
alias 1='cd -1'
alias 2='cd -2'
alias 3='cd -3'
alias 4='cd -4'
alias 5='cd -5'
alias 6='cd -6'
alias 7='cd -7'
alias 8='cd -8'
alias 9='cd -9'
alias md='mkdir -p'
alias rd=rmdir
function d () {
if [[ -n $1 ]]; then
dirs "$@"
else
dirs -v | head -n 10
fi
}
compdef _dirs d
# List directory contents
alias lsa='ls -lah'
alias l='ls -lah'
alias ll='ls -lh'
alias la='ls -lAh'
(おまけ) 更新用ファイルに削除設定を追加
幸い directory.sh
に欲しい設定がなかったので、ファイルを削除することにしました。
「Oh-My-Zshの更新」の際にファイルが取り込まれる可能性があるので、「自分のzshの設定更新」の際に、自動検知・削除するように変更します。私は更新用の作業をTaskfileで、コマンド化しています。
update-zsh:
dir: worker
cmds:
- '[ -f "$ZSH/lib/directories.zsh" ] && rm "$ZSH/lib/directories.zsh" || echo "$ZSH/lib/directories.zsh does not exist"'
- ./bin/darwin/zsh
実行してみます。
$ task update-zsh
task: [update-zsh] [ -f "$ZSH/lib/directories.zsh" ] && rm "$ZSH/lib/directories.zsh" || echo "$ZSH/lib/directories.zsh does not exist"
task: [update-zsh] ./bin/darwin/zsh
2024/12/15 21:46:55 🚀 Start updating ../configs/zsh/config ...
source $HOME/.zshrc
をしたところ消えたことが確認できました。
実際に作業したリポジトリ
Discussion