CUIでのディレクトリ移動を便利にするzコマンドをPowerShell
で利用できるようにしたZLocationのインストールついて、以前、下記記事で紹介しました。
PowerShellモジュールのPSFzfとZLocationをつかってみる
今回、zコマンドと同様の機能を提供するRust製のコマンドzoxideをみかけたので、こちらを利用してPowerShell
のディレクトリ移動をいい感じにしてみます。
なおzoxide
コマンドはfzf
コマンドとの連携も提供しているため本記事ではfzf
のインストールも行います。
ドキュメント
今回の環境
- Windows 10 21H2
- PowerShell 7.3.0-preview.5
- zoxide v0.8.2
- fzf 0.30.0
zoxideのインストール(webinstall.dev)
#2023/03/11追記
本記事執筆時点ではWindowsへのインストール方法として公式ドキュメントにwebinstall.devを使ったインストール方法が記載されていましたが、今現在、readmeの内容はwingetに切り替わっていました。
> The recommended way to install zoxide is via winget
とあるので これからインストールする場合は、wingetを利用すればよいかと思います。
#以上、追記おわり
Add Winget installation in the README
zoxide installationにWindows
へのインストール方法の記載があります。
コマンド(webinstall.dev)からインストール もしくは scoopなどの各種パッケージ管理でのインストール方法が記載されています
ここではコマンド(webinstall.dev
)でのインストールを実施してみます。
なおwebinstall.dev
でインストールすると~/.local/bin
にzoxide
がインストールされました。
# webinstallでzoideをインストール
# Windows PowerShellを呼んでいるが、本記事でのWindows PowerShellのバージョンはv5.1
curl.exe -A "MS" https://webinstall.dev/zoxide | powershell
実行結果のIMPORTANT -- READ ME
をみるとインストール処理の中でPATHの変更も実施しているようです。
カレントセッションにはPATHが反映されないので、カレントセッションのPATHを更新するかセッションを再起動しまて環境変数PATHを読み込み直します。
(今回はWindows Terminal
上で動かしていたので、Windows Terminal
を再起動しました)
PowerShellの起動Profileにzoxideを追加する
Step 2: Add zoxide to your shell
今回インストールしたzoxide
はv0.8.2
のため下記を起動プロファイルに追加しました。
# For zoxide v0.8.0+
Invoke-Expression (& {
$hook = if ($PSVersionTable.PSVersion.Major -lt 6) { 'prompt' } else { 'pwd' }
(zoxide init --hook $hook powershell | Out-String)
})
上記コマンドが起動処理で何をやっているかといえば、function __zoxide_z
と __zoxide_zi
を定義して、それぞれのfunctionにalias z
, zi
を設定していました。
fzfのインストール
起動処理で登録されるalias zi
はfzf
と連携するaliasとなるためfzf
コマンドをインストールします。
ここではWindows用のバイナリをダウンロードしてPATHを通しておきます。
バイナリをダウンロードしてPATHを通してバージョン確認した図。
なおNote: zoxide only supports fzf v0.21.0 and above.
と記載があるのでインストールするバージョンは最新をいれておきます。
z と zi を実行してみる。
今回は 事前にc:\temp\foo\bar
というディレクトリを用意してz
とzi
で移動してみます。
# 事前に用意したディレクトリc:\temp\fooに移動
cd c:\temp\foo
# 事前に用意したディレクトリc:\temp\foo\barに移動
cd c:\temp\foo\bar
# ~に移動
z
# zコマンドでc:\temp\foo\barがマッチ、移動する
z foo bar
# ziでfzfで移動先ディレクトリの選択が表示
zi
z
コマンドでc:\temp\foo\barに移動し、zi
コマンドでc:\temp\fooに移動してみました。
履歴を表示・編集する
zoxide
では移動した事のあるディレクトリの情報を管理していますが、下記で履歴を表示・編集できます。
# 一覧表示
zoxide query -ls
# 指定したPATHを削除
zoxide remove <<PATH>>
# 一覧表示してremoveしたPATHが消えている事を確認
zoxide query -ls
総評
z
コマンドをPowerShell
で利用できるようになる、zoxide
コマンドを見かけたので今回使用してみました。