はじめに
最近新たにTerminal環境を作り直した際に表題の現象に遭遇しました。当初は何らかの設定ミスが悪さをしているものだと思っていたのですが、至ってenhancdの想定内の挙動というオチでした。簡単にまとめておこうと思います。
環境
- macOS
- tmux
- fish shell
- fisher
- enhancd
- fzf
問題
下の動画のように、tmux環境下でenhancdを実行するとfzfが実行されるものの、パネルが分割されています。
原因
enhancdはデフォルトでは検索にfzfよりもfzf-tmuxコマンドが優先的に実行されるためです。fzf-tmuxは動画のようにfzfをtmuxの別パネルで実行するコマンドであり、macのhomebrewではfzfのインストールに同封されています。
enhancdではフィルタリングを行うコマンドに複数対応していますが、初期化スクリプト内に各コマンドの優先順位が記載されています。
https://github.com/b4b4r07/enhancd/blob/master/init.fish#L35
これによると確かにfzfよりもfzf-tmuxが先に記載されて優先度が高く指定されていることがわかります。
解決策
enhancdにはちゃんとフィルタリングコマンドを指定することが可能です。
- 公式Doc: https://github.com/b4b4r07/enhancd#configurations/ENHANCD_FILTER
- 開発者ブログ記事: https://qiita.com/b4b4r07/items/2cf90da00a4c2c7b7e60#enhancd_filter
次のように環境変数を指定する1行をfishの設定ファイルに追記することで、fzf-tmuxが実行されないようにしました。(デフォルトの検索コマンドリストからfzf-tmuxを消しただけ)
# 下行を追加
set -gx ENHANCD_FILTER "fzy:fzf:peco:percol:gof:pick:icepick:sentaku:selecta"
終わりに
tmuxのパネル分割のショートカットを別キーに設定した後だったこともあって、それが影響していると思い込んでいたのですが全くの勘違いでした。至って想定どおりの挙動。思い込みって怖い。