先月は Windows でターミナルを使うことが多くて、macOS に比べると pwsh に慣れてないというのを差し引いても上手く使えてないって感じがすごかったので fzf を真面目に設定した。
fzf のバイナリは scoop を使ってインストールした後に PSFzf という pwsh 用の fzf プラグインを入れた。
https://github.com/kelleyma49/PSFzf
上の README.md だけだと何をやればいいのか分かりにくいのだが、まずは PSGallary から以下のコマンドでインストールする。
Install-Module -Name PSFzf -RequiredVersion 2.6.7
その後に以下の内容を自分の Documents などの下にある pwsh のプロファイルに書く。
Set-PsFzfOption -PSReadlineChordProvider 'Ctrl+t' -PSReadlineChordReverseHistory 'Ctrl+r'
Set-PSReadLineKeyHandler -Key Tab -ScriptBlock { Invoke-FzfTabCompletion }
これで Ctrl-r
とか tab tab tab! とかで fzf が起動する。
世界で僕くらいしか困ってないと思うのだが使っている Ruby に同梱されている default gems かつ C 拡張なライブラリ、例えば stringio とか openssl などと同じバージョンの gem を別途 gem install なり、bundle install で入れていると gem pristine を実行しても rebuild されないという問題がある。
https://github.com/rubygems/rubygems/issues/8746
前からこの事象は知っていて、めんどいなあと思いつつ gem uninstall
して default gems のやつを使うようにしていたんだけど、真面目に調べてみた。pristine で実行する対象の gemspec を取り出すときに Gem::Specification
の name, version しかみてないので、default gems の方を使ってしまい、gem install したほうがスキップされるのでいつまで経っても rebuild されない。
この話、gem pristine なんてしないよ、って人が世界の 99.9% なんで問題はないと思うけど、ruby-dev
暮らしをしていると https://github.com/ruby/ruby/commit/ea8b53a53954c2f34b1093ae2547951ae0e1fe8c みたいに ABI_VERSION が上がると、使っている C 拡張が全滅するので gem pristine --only-missing-extension
を実行して rebuild しなくてはいけない、しかし openssl などは rebuild されない、ということでだるいのだった。
RubyGems の方はパッチはあるので雑に直せるが、C 拡張かつ default gems ということもあってテストをどう書いたものかアイデアがないのだよなあ。うーん。