整えるというか、普段仕事で使っている macOS / Ubuntu に合わせるって言うのが近いけども。
Windows の環境をいろいろいじっていくメモ。
前提環境:
- Windows 10 Pro
- WSL2 じゃないよ!
- Windows Terminal 1.1.2021.0
- PowerShell Core 7.0.3 (x64)
- Rust 1.44.1 (
rustc -V
)
ということでやっていきます。
基本的には、極力どの環境でも動く、かつデフォルトに近い設定で運用していくのをポリシーとしています。
ということで、まずは Starship を導入します。
シェル叩いてもいいのですが、私は Rust の環境を持っているので、 crates.io 経由で入れます。
$ cargo install starship
ビルド&インストールが完了したら、プロフィールに Starship の初期化スクリプトを追記します。
基本は %USERPROFILE%\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
にあります。
// 下記を一番下に追記 Invoke-Expression (&starship init powershell)
そして再読み込み
. $PROFILE
何もしなくても良い感じですね。
あとはお好みの starship.toml
を突っ込んであげましょう。
場所は %USERPROFILE%/.config/starship.toml
です。
$ curl https://raw.githubusercontent.com/mika-f/dotfiles/master/.config/starship.toml -o ~/.config/starship.toml
次はコマンド類を入れていきます。
この辺は好みのものを入れておけばいいと思います。
$ cargo install fd-find $ cargo install lsd $ cargo install ripgrep
そして alias を貼っておきます。
Set-Alias ls lsd
このままだと lsd の表示が悲しいままなので、 Nerd Fonts 対応フォントをいれます。
私はお試しで白源フォントを入れてみました。
ただ、このままだと一部コマンドが PowerShell の Alias になっていて、使い勝手が違っていて面倒なので、
Rust でのクロスプラットフォーム実装である uutils/coreutils
のものと置き換えます。
ただし、そのままインストールすると Multicall-Binary になっていて面倒なので、個別で入れます。
uutils/coreutils
の各パッケージは uu_command
の名前でレジストリに登録されているので、
必要なものを入れていきます。多いですね。
$ cargo install uu_cat $ cargo install uu_cut $ cargo install uu_cp $ cargo install uu_date $ cargo install uu_echo $ cargo install uu_false $ cargo install uu_head $ cargo install uu_mkdir $ cargo install uu_mv $ cargo install uu_printenv $ cargo install uu_pwd $ cargo install uu_rm $ cargo install uu_tail $ cargo install uu_touch $ cargo install uu_true $ cargo install uu_uniq $ cargo install uu_wc $ cargo install uu_yes
ただ、このままだと PowerShell の alias だったり、 Windows のものだったりが呼ばれるので、
上記のもので置き換えるようにします。
# Replaced by Unix CoreUtils function Replace-Alias($cmd) { Get-Alias $cmd *>1 && Remove-Alias $cmd } Replace-Alias cat Replace-Alias cp Replace-Alias echo Replace-Alias mv Replace-Alias pwd Replace-Alias rm # Call CoreUtils CLI instead of Windows System Commands function Call-CoreUtils($cmd) { Set-Variable -name "CoreUtils_$cmd" -value "function $cmd() { $cmd.exe `$args }" -scope global Get-Variable "CoreUtils_$cmd" -ValueOnly | Invoke-Expression } Call-CoreUtils mkdir
あと、 PowerShell の where
が気に入らないので、 where.exe
を which
で呼ぶようにします。
Set-Alias which where.exe
あとは便利ツールをいくつか
私は Golang の開発環境は持っていないので、おとなしく Scoop 経由で入れます。
$ scoop install gh $ scoop install ghq $ scoop install hub
こんな感じで、ある程度の動作は macOS / Ubuntu に合わせられました。
ということで今回は終わり。