📁

zsh:オススメのcd周りの設定

2022/12/14に公開約1,100字

結論

~/.zshrc

# auto_ls
function chpwd(){
    if [[ $(pwd) != $HOME ]]; then;
        ls
    fi
}
autoload chpwd

# ディレクトリ名だけでcdする
setopt AUTO_CD
# cd したら自動的にpushdする
setopt AUTO_PUSHD
# 重複したディレクトリをスタックに追加しない
setopt PUSHD_IGNORE_DUPS

alias cdd='cd ..' #親ディレクトリに移動
alias cds='dirs -v; echo -n "select number: "; read newdir; cd +"$newdir"'

はじめに

ターミナル上でカレントディレクトリを移動する作業は頻発するため、同一の作業は自動化したいand楽に行いたい。

上記の~/.zshrcは筆者が使用しているものであり、少なからず作業を自動化できている。

以下で説明が必要な部分について解説する。

function chpwd()

function chpwd()はディレクトリが変更された時に呼ばれるhook関数である。(chpwdは予約語)

記述した内容の関数function chpwd()は、カレントディレクトリが$HOMEでない時に自動でlsをする関数である。

ディレクトリ移動(cd)+中身を見る(ls)作業は頻発するので便利である。

alias=cds

このaliasは、過去に移動したディレクトリのスタックをスタックされた番号付きで表示し(dirs -v)、その番号を入力すると、その番号のディレクトリに移動できるものである。

このaliasは過去に遡ってcdすることができ、便利である。

cdsの意味は(cd+select)から取っている。

またこちらのaliasを使うには、setopt AUTO_PUSHDでディレクトリをスタックしておく必要がある。

以下実行例である。

[~][%] cd tmp  #[~]はカレントディレクトリが~であることを意味する                     
[~][%] cd
[~][%] cds
0	~
1	~/tmp
select number: 

上記で1を入力すると

[~][%] cds
0	~
1	~/tmp
select number: `
[~/tmp][%]  #tmpに移動できる

Discussion

ログインするとコメントできます