Open10
WindowsのShellを試す
CMD.exe
Pros
- 履歴が残らない(残さなくても良い場合)
Cons
- 履歴が見れない
- .batの記法やコマンドが分かりづらい
PowerShell(pwsh)
Pros
- クロスプラットフォーム
- 履歴が残る
- .ps1の記法やコマンドがCMDより分かりやすい
Cons
- 履歴をpecoでフィルタリングする場合の描画の挙動が微妙
- コマンドが長い
- 文字化けすることがある
上記のため、Windowsで使えるShellを試してみる。
環境
- Windows 11
- Windows Terminal
用途
- 開発用リポジトリへの移動(ghq+peco)
- ビルドなどのコマンド実行(go get、go build、mage)
- ツールのインストール(winget、ghg、go install)
Shellを使って複雑なことはしない想定。
fish
- Rust製
- Windowsをネイティブサポートしていない(クロスプラットフォーム)
Elvish
- Go製
- Windowsもサポート(クロスプラットフォーム)
Pros
- 履歴のフィルタリングを標準でサポート
Cons
- wingetが使えない(PATHの設定?)
- インストールがやや面倒
- バイナリを自分でダウンロードしてPATHの通った場所に置く
- configファイルは自動で作成されない(自分で作る)
- Windows Terminalのプロファイルも自分で作る
ghq+pecoでリポジトリを移動。
動いたけどこれでいいのか謎。
rc.elv
fn pr {
var selected_dir = (ghq list -p | peco --query "")
if (not-eq $selected_dir "") {
$selected_dir
}
}
Nushell
- Rust製
- Windowsもサポート(クロスプラットフォーム)
Pros
- 履歴のフィルタリングを標準でサポート
- wingetも使える
- インストールが簡単
winget install nushell
- 初回起動時にconfigを自動作成できる
- Windows Terminalのプロファイルも自動で作られる(アイコンも付く!)
- ドキュメントが充実
- lsやpsなどの内臓コマンドが見やすい
Cons
- 履歴の重複排除や削除ができない
- txtなので自分でやればできる
ghq+pecoでリポジトリを移動。
config.nu
keybindings: [
...
{
name: fuzzy_ghq
modifier: control
keycode: char_g
mode: emacs
event: {
send: executehostcommand,
cmd: "cd (ghq list -p | peco)"
}
}
]
Starshipの設定
Nushellのドキュメントにあるすべて手動で構成する方法と
Starshipのドキュメントにある半自動で構成する方法がある。
Starshipの方法で実施した。
env.nuとconfig.nuに記述する。
VSCodeの拡張機能