set -Ux(ユニバーサル変数のエクスポート)が働かない?

既に同じ名前のグローバル変数が設定されています.

EDITORTZといった環境変数はset -Uxによってユニバーサルに設定できます. しかし, fishが起動する前に既に環境変数が設定されている場合(ログインスクリプトやシステムの管理者によって), それはグローバル変数として設定されます. [変数スコープ]は"inside out"の検索方式をとっていて, ローカル変数, グローバル変数それからユニバーサル変数の順に変数を確認していきます.

これはグローバル変数の方がユニバーサール変数よりも優先順位が高いことを意味しています.

この問題を避けるために, fishの継承の設定を変えることが考えられます. これが不可能なら, 次のような設定を[設定ファイル] (大抵の場合, ~/.config/fish/config.fish)に記述してください.

set -gx EDITOR vim