fish 3.1 変更点

# 訳者前書き

1年ぶりのリリースですね！

正確なところは[原文](https://github.com/fish-shell/fish-shell/blob/master/CHANGELOG.md)とイシューを見てください。


# fish 3.1.0 (released February 12, 2020)

fish 3.1b1から正式リリースまでの差分:
- ブレース展開されない場合でもブレース直後のスペースが削除される不具合を修正 ([#6564](https://github.com/fish-shell/fish-shell/issues/6564))
- Cygwin環境で存在したいくつかのコンパイル、テストの問題を修正 ([#6549](https://github.com/fish-shell/fish-shell/issues/6549)) IllumosなどSolaris系OSでも修正 ([#6553](https://github.com/fish-shell/fish-shell/issues/6553), [#6554](https://github.com/fish-shell/fish-shell/issues/6554), [#6555](https://github.com/fish-shell/fish-shell/issues/6555), [#6556](https://github.com/fish-shell/fish-shell/issues/6556),  [#6558](https://github.com/fish-shell/fish-shell/issues/6558));
- macOS パッケージのビルドプロセスを修正;
- Unicodeが許容されないロケールでエラーメッセージが表示されていた不具合を修正 ([#6584](https://github.com/fish-shell/fish-shell/issues/6584)) ;
- コマンド補完及びドキュメントの軽微な修正.

バージョン 3.0.0 以降からアップグレードするときは、3.1b1の変更履歴を確認してください（それ以前のものも必要に応じて確認してください）

---


# fish 3.1b1 (released January 26, 2020)

## 主な改善と修正点
- 新しい `$pipestatus` 変数にはリストとしてパイプラインのコマンドの終了ステータスを保持します ([#5632](https://github.com/fish-shell/fish-shell/issues/5632)).
- 最後の関数のパイプラインをバッファしないようになりました。これによりパイプがブロックされたり停止されたりするケースの多くが改善されます ([#1396](https://github.com/fish-shell/fish-shell/issues/1396)).
- ビルトインコマンドのエラーメッセージを見直しました。コマンドの使用例の表示削除、スタックトレースの可読性向上 ([#3404](https://github.com/fish-shell/fish-shell/issues/3404), [#5434](https://github.com/fish-shell/fish-shell/issues/5434)), testコマンド（[コマンド）のスタックトレース変更を含みます ([#5771](https://github.com/fish-shell/fish-shell/issues/5771)).
- fishのデバッグ引数が大幅に改善されました。 `--debug-level` オプションは削除され、新しく `--debug` オプションに置き換わりました. このオプションは複数のカテゴリを受け付けます。`fish --print-debug-categories` コマンドで一覧を表示できます ([#5879](https://github.com/fish-shell/fish-shell/issues/5879)). 新しい `--debug-output` オプションはデバッグ出力をリダイレクトすることが可能です.
- `string` に新しく `collect` サブコマンドが追加されました。コマンド置換に使用できます, 改行コードで分割された文字列を単一の出力にできます (他のシェルの `"$(cmd)"` と同様) ([#159](https://github.com/fish-shell/fish-shell/issues/159)).
- fishのマニュアル、チュートリアル、FAQがそれぞれ `man` 書式の `fish-doc`, `fish-tutorial` and `fish-faq` として提供されます ([#5521](https://github.com/fish-shell/fish-shell/issues/5521)).
- 他のシェルのように, CDPATHに "." やカレントディレクトリが含まれなくても、`cd` コマンドは常にカレントディレクトリを確認するようになりました ([#4484](https://github.com/fish-shell/fish-shell/issues/4484)).
- `CDPATH` に `..` で始まる文字列や ([#6220](https://github.com/fish-shell/fish-shell/issues/6220)) `./`を含む文字列が ([#5887](https://github.com/fish-shell/fish-shell/issues/5887)) 登録されていても正しく扱えるようになりました.
- `fish_trace` 変数でトレース実行を設定できます ([#3427](https://github.com/fish-shell/fish-shell/issues/3427)). 他のシェルでいう `set -x` のようなものです.
- 一時ディレクトリとして `/tmp` ではなくシステムで決定されたディレクトリを使用します ([#3845](https://github.com/fish-shell/fish-shell/issues/3845)).
- fishのブラウザ設定ツール (`fish_config`) 動作の理解とデバッグのため実行されたコマンドを出力します ([#5584](https://github.com/fish-shell/fish-shell/issues/5584)).
- パース時 ([#5866](https://github.com/fish-shell/fish-shell/issues/5866)), 多数のコマンドを実行するとき ([#5905](https://github.com/fish-shell/fish-shell/issues/5905)), Bashのコマンド履歴のインポート時 ([#6295](https://github.com/fish-shell/fish-shell/issues/6295)), 変数の補完が `$history` と一致する場合 ([#6288](https://github.com/fish-shell/fish-shell/issues/6288)) のパフォーマンスが大幅に改善されました.

### 文法の変更及び新しいコマンド
- `time` 組み込み関数が追加されました, fishの関数と組み込みコマンドの時間計測が改善されます ([#117](https://github.com/fish-shell/fish-shell/issues/117)).
- ブレース展開はその中に "," が含まれるか変数展開の場合のみ動作します,  これにより `git reset HEAD@{0}` をエスケープせず記述できます ([#5869](https://github.com/fish-shell/fish-shell/issues/5869)).
- 新しいリダイレクト記法として `&>` と `&|` が追加されます。標準エラー出力と標準出力を一緒にパイプ、リダイレクトするときに使います ([#6192](https://github.com/fish-shell/fish-shell/issues/6192)).
- `switch` コマンドは、空の変数のように、何にも展開されない引数を許容します ([#5677](https://github.com/fish-shell/fish-shell/issues/5677)).
- 一時的に環境変数を変更してコマンドを実行する`VAR=val cmd` 文法が使えるようになりました ([#6287](https://github.com/fish-shell/fish-shell/issues/6287)).
- `and` はコマンドとして認められなくなりました。 `and and and` のような無意味な記述が文法エラーになります ([#6089](https://github.com/fish-shell/fish-shell/issues/6089)).
- `math` の指数演算子, '`^`', は左結合でしたがより自然な右結合として振る舞います ([#6280](https://github.com/fish-shell/fish-shell/issues/6280)). `math '3^0.5^2'` は '(3^0.5)^2' として計算されていましたが, '3^(0.5^2)' として計算されるようになります.
- fish 3.0 ではコマンド置換中の `for` ループで使用される変数が変数スコープより外に漏れていました; これは想定していないふるまいの変更だったので修正されました ([#6480](https://github.com/fish-shell/fish-shell/issues/6480)).

### スクリプト向けの改善
- `string split0` は文字列を分割できたとき0を返します ([#5701](https://github.com/fish-shell/fish-shell/issues/5701)).
- `function` コマンドとの一貫性を保つため, `builtin -q` と `command -q` でビルトインコマンドとコマンドが存在するかどうか確認できるようになりました ([#5631](https://github.com/fish-shell/fish-shell/issues/5631)).
- `math` が利用可能な最大の桁数を使える `--scale=max` を受け入れるようになりました ([#5579](https://github.com/fish-shell/fish-shell/issues/5579)).
- `builtin $var` は組み込み変数でも動作するようになりました ([#5639](https://github.com/fish-shell/fish-shell/issues/5639)).
- `cd` はハイフンで始まるディレクトリ名のため `--` を使用できるようになりました ([#6071](https://github.com/fish-shell/fish-shell/issues/6071)).
- `complete --do-complete` はファジー検索するようになりました ([#5467](https://github.com/fish-shell/fish-shell/issues/5467)).
- `complete --do-complete` はコマンド補完の中で使えるようになりました。再帰呼び出しは制限されます ([#3474](https://github.com/fish-shell/fish-shell/issues/3474)).
- `count` は標準入力の行数もカウントするようになりました ([#5744](https://github.com/fish-shell/fish-shell/issues/5744)).
- `eval` は他のシェルのように、引数なしで実行されたとき終了ステータス0を返すようになりました ([#5692](https://github.com/fish-shell/fish-shell/issues/5692)).
- `printf` は数字を完全に変換できなかったとき、エラーメッセージとともにどのように変換されたかを表示します ([#5532](https://github.com/fish-shell/fish-shell/issues/5532)).
- `complete -C foo` が `complete -Cfoo` と同様に動作します.
- `complete` にファイル補完を再度有効化する `--force-files` オプションが追加されました. これにより `sudo -E` と `pacman -Qo` が正しく補完されるようになります ([#5646](https://github.com/fish-shell/fish-shell/issues/5646)).
- `argparse` はエラーの際(`argparse` という文字列ではなく)`--name` オプションをつけなくても現在の関数名を表示するようになりました ([#5835](https://github.com/fish-shell/fish-shell/issues/5835)).
- `argparse` で多段でパースできるようにするため、新しい `--ignore-unknown` オプションで不明なオプションをそのままにするようになりました ([#5367](https://github.com/fish-shell/fish-shell/issues/5367)).
- `argparse` は短縮形だけのオプションの値のバリデーションを正しく扱えるようになりました ([#5864](https://github.com/fish-shell/fish-shell/issues/5864)).
- `read -S` (`--shell`オプションの短縮形) が使用できるようになりました（ドキュメントには記述されていました） ([#5660](https://github.com/fish-shell/fish-shell/issues/5660)).
- `read` は `--array`のように動作するすべての引数を一つの変数にリストとして読み込むより良い名前のオプションとして `--list` を使えるようになりました ([#5846](https://github.com/fish-shell/fish-shell/issues/5846)).
- `read` の新しいオプションとして `--tokenize` が追加されました。シェルの軸解析ルールにより文字列のクォートやエスケープ諸々を考慮して文字列を分割し変数に格納します ([#3823](https://github.com/fish-shell/fish-shell/issues/3823)).
- `read` は非推奨となった `$ISF` 変数に対してもっと正しく振る舞うようになります。 他のシェル同様、入力を変数のリストに展開するとき連続した区切り文字が除去されるようになります ([#6406](https://github.com/fish-shell/fish-shell/issues/6406)).
- `fish_indent` はセミコロンをよりうまく扱えるようになりました, `; and` や `; or` でセミコロンを残すのではなく改行するようになりました ([#5859](https://github.com/fish-shell/fish-shell/issues/5859)).
- `fish_indent --write` は引数として複数のファイルを受け取りインデントできるようになりました.
- 引数の最大長が 100MiB に引き上げられました ([#5267](https://github.com/fish-shell/fish-shell/issues/5267)).
- `math` はホワイトスペースでかこまれた `x` を掛け算として扱うようになりました ([#5906](https://github.com/fish-shell/fish-shell/issues/5906)).
- `math` カッコ内の不正なシンタックスを正しくエラーとし ([#6063](https://github.com/fish-shell/fish-shell/issues/6063)) 、利用できない論理演算子は警告を出力するようになりました ([#6096](https://github.com/fish-shell/fish-shell/issues/6096)) .
- `functions --erase` をオートロード関数がロードされるまでに実行すると、オートロード関数がロードされるのを抑制するようになりました ([#5951](https://github.com/fish-shell/fish-shell/issues/5951)).
- `jobs --last` はジョブが見つかったときに成功を表す終了ステータスとして 0 を返します ([#6104](https://github.com/fish-shell/fish-shell/issues/6104)).
- `commandline -p` と `commandline -j` は `&&` と `||` の分割結果として `;` と `&` を返します ([#6214](https://github.com/fish-shell/fish-shell/issues/6214)).
- 出力が空文字のとき `string split` が空文字を捨ててしまうバグが修正されました ([#5987](https://github.com/fish-shell/fish-shell/issues/5987)).
- `eval` はローカルの変数スコープを作成しませんが、ローカル変数を変更することはできます ([#4443](https://github.com/fish-shell/fish-shell/issues/4443)). `source` は引き続きローカルの変数スコープを作成します.
- `abbr` に省略形の有無をチェックする `--query` オプションが追加されました.
- ローカル変数の `fish_complete_path` と `fish_function_path` は無視されるようになました; グローバル変数のみが利用されるようになります.
- シンタックスエラー時に正しいマーカーが報告されるようになりました ([#5812](https://github.com/fish-shell/fish-shell/issues/5812)).
- 空のユニバーサル変数はエクスポートされないようになりました ([#5992](https://github.com/fish-shell/fish-shell/issues/5992)).
- エクスポートされたユニバーサル変数はグローバルスコープにコピーされなくなり, シャドーイングが発生しなくなりました. これにより、容易にすべてのfishセッションの変数を変更でき、複数の要素のリストである場合に、破損を避けられます ([#5258](https://github.com/fish-shell/fish-shell/issues/5258)).
- `for` で不正な変数名が使用できるバグを修正しました ([#5800](https://github.com/fish-shell/fish-shell/issues/5800)).
- ローカル変数が関数にエクスポートされないバグが修正されました ([#6153](https://github.com/fish-shell/fish-shell/issues/6153)).
- 何もしないコマンド (`:`) は、直前の終了ステータスを返すのではなく、常に成功を返すようになりました ([#6022](https://github.com/fish-shell/fish-shell/issues/6022)).
- `functions FUNCTION` の出力は、コメントや空白行を含む関数の宣言と一致し ([#5285](https://github.com/fish-shell/fish-shell/issues/5285))  ([#5285](https://github.com/fish-shell/fish-shell/issues/5285)), `--wraps` フラグを正しく含むようになりました ([#1625](https://github.com/fish-shell/fish-shell/issues/1625)).
- 新しく `type` に関数についての出力を短縮する `--short` オプションが追加されました ([#6403](https://github.com/fish-shell/fish-shell/issues/6403)).
- `type --path` は引数が関数である場合に、そのファイルが存在したら、関数が含まれるファイル名を出力します.
- `type --force-path` はドキュメント通りに引数に指定した対象が見つからない場合何も出力しません ([#6411](https://github.com/fish-shell/fish-shell/issues/6411)).
- `$hostname` 変数は32文字に切り詰められなくなりました ([#5758](https://github.com/fish-shell/fish-shell/issues/5758)).
- 関数のバックトレースの行数が正しく計算されるようになりました ([#6350](https://github.com/fish-shell/fish-shell/issues/6350)).
- 新しく追加された `fish_cancel` イベントはコマンドラインがキャンセルされたことを通知します。ターミナルの実装に使用できます ([#5973](https://github.com/fish-shell/fish-shell/issues/5973)).

### インタラクティブ環境の改善
- 新しいBase16カラースキームはブラウザベースで設定可能です([#6504](https://github.com/fish-shell/fish-shell/issues/6504)).
- fish はBashの実装にあわせて([#5637](https://github.com/fish-shell/fish-shell/issues/5637))macOSのログインでのみ `/etc/paths` を参照し, 子シェルのPATHの順序入れ替えを無視します ([#5456](https://github.com/fish-shell/fish-shell/issues/5456)). Bash実装のように空行を無視します ([#5809](https://github.com/fish-shell/fish-shell/issues/5809)).
- `LOCPATH` 変数が変更されたらロケールファイルを再読み込みします ([#5815](https://github.com/fish-shell/fish-shell/issues/5815)).
- `read` は入力内容を履歴に保存しなくなり、パスワード入力のような、終了してはいけない操作に利用しやすくなりました ([#5904](https://github.com/fish-shell/fish-shell/issues/5904)).
- `dirh` はスタックを正しい順番で出力するようになりました ([#5477](https://github.com/fish-shell/fish-shell/issues/5477)), そしてドキュメント通りユニバーサル変数を利用するようになりました ([#5797](https://github.com/fish-shell/fish-shell/issues/5797)).
- `funced` と edit-commandline-in-buffer バインディングは fish 3.0 で `$EDITOR` 変数にスペースが入っていると正しく動かなくなっていましたが、修正されました ([#5625](https://github.com/fish-shell/fish-shell/issues/5625)).
- 組み込み関数は自動的にページャーに出力するようになりました ([#6227](https://github.com/fish-shell/fish-shell/issues/6227)).
- `set_color` は `--print-colors` の色をターミナルに合わせて出力するようになりました.
- fish は最後のパスだけでなく、有効なすべてのパスに下線を引きます ([#5872](https://github.com/fish-shell/fish-shell/issues/5872)).
- 閉じていないクォートのシンタックスハイライトは, 引数全体ではなくそのクォートだけにエラー表示されます.
- シンタックスハイライティングはコマンドを表す変数と ([#5658](https://github.com/fish-shell/fish-shell/issues/5658)) ファイル奇術師を閉じるリダイレクトに対して ([#6092](https://github.com/fish-shell/fish-shell/issues/6092)) 正しく動作するようになりました.
- `help` は Windows Subsytem for Linux ([#5759](https://github.com/fish-shell/fish-shell/issues/5759), [#6338](https://github.com/fish-shell/fish-shell/issues/6338)) で正しく動作するようになりました.
- シェルをクラッシュさせる `disown` のバグは修正されました ([#5720](https://github.com/fish-shell/fish-shell/issues/5720)).
- fish は一般的にバックアップとして作成される `~` で終了するファイルを補完候補に表示しなくなりました ([#985](https://github.com/fish-shell/fish-shell/issues/985)).
- ページャーでのエスケープが正しく動作するようになりました ([#5818](https://github.com/fish-shell/fish-shell/issues/5818)).
- `fg` を呼び出すキーバインディングはターミナルを破壊しなくなりました ([#2114](https://github.com/fish-shell/fish-shell/issues/2114)).
- 括弧 ([#5831](https://github.com/fish-shell/fish-shell/issues/5831)) と `$` ([#6060](https://github.com/fish-shell/fish-shell/issues/6060)) を含むファイル名は適切にエスケープされるようになりました.
- `complete` と `functions` の出力はインタラクティブなターミナルでは色がつくようになりました.
- ウェブベースの設定画面でシングルクォートを含むエイリアスを正しく扱えるようになり ([#6120](https://github.com/fish-shell/fish-shell/issues/6120)), Termux ([#6248](https://github.com/fish-shell/fish-shell/issues/6248)) と OpenBSD ([#6522](https://github.com/fish-shell/fish-shell/issues/6522)) で正しく起動するようになりました.
- `function` は `--argument-names` のパラメータを有効な変数名として正しく検証し ([#6147](https://github.com/fish-shell/fish-shell/issues/6147))   "`--argument-names foo --description bar`" のように `--argument-names` に続くパラメータを正しく解析します ([#6186](https://github.com/fish-shell/fish-shell/issues/6186)).
- bash から新たにインポートされた履歴には `&&`、 `||` を使用したコマンドラインが含まれます.
- manページからの補完の自動生成はジョブとプロセスのリストで管理されるようになり, fishの終了時に警告されないようになりました ([#6269](https://github.com/fish-shell/fish-shell/issues/6269)).
- プライベートモードでは、プライベート セッションを開始する前に `$fish_greeting` を空にすると、保存されていない履歴に関する警告が表示されなくなります ([#6299](https://github.com/fish-shell/fish-shell/issues/6299)).
- インタラクティブエディタでは、閉じられていない角括弧内の改行 (Enter) は、コマンドを実行してエラーを生成するのではなく、改行を挿入します。([#6316](https://github.com/fish-shell/fish-shell/issues/6316)).
- Ctrl-C は常にプロンプトを再描画します ([#6394](https://github.com/fish-shell/fish-shell/issues/6394)).
- 別のプログラム (Pythonなど) から対話的に実行すると、他のシェルと同様に、fish は新しいプロセスグループを正しく開始します ([#5909](https://github.com/fish-shell/fish-shell/issues/5909)).
- ジョブID (例えばバックグラウンドジョブ) はより論理的に割り当てられます ([#6053](https://github.com/fish-shell/fish-shell/issues/6053)).
- 空のコマンドが実行された場合に履歴が切り捨てられて表示されるバグが修正されました ([#6032](https://github.com/fish-shell/fish-shell/issues/6032)).

#### 新しいキーバインド、またはキーバインドの改善
- 貼り付けされたコマンドが履歴から省略されるのを防ぐため、貼り付け時に先頭のスペースを除去します ([#4327](https://github.com/fish-shell/fish-shell/issues/4327)).
- Shift-Left と Shift-Right はデフォルトで単語単位での移動に割り当てられます (単語はスペース区切り) ([#1505](https://github.com/fish-shell/fish-shell/issues/1505)).
- エスケープのウェイトは30msに短縮されました (エスケープキーと、Altキーの組み合わせを区別するため)。以前のデフォルトは 300ms、Viモードでは 100ms でした ([#3904](https://github.com/fish-shell/fish-shell/issues/3904)).
- `forward-bigword` バインディングは正しく自動補完を表示するようになりました ([#5336](https://github.com/fish-shell/fish-shell/issues/5336)).
- `fish_clipboard_*` 機能は [`wl-clipboard`](https://github.com/bugaevc/wl-clipboard) を使用して Wayland をサポートします ([#5450](https://github.com/fish-shell/fish-shell/issues/5450)).
- `nextd` と `prevd` 関数はベルの代わりに "Hit end of history" を表示しなくなりました. シンボリックリンクを含む作業ディレクトリを正しく格納します ([#6395](https://github.com/fish-shell/fish-shell/issues/6395)).
- `fish_mode_prompt` 関数が定義されているとき, Viモードは常時ではなくモード切替時に実行します. これにより遅いプロンプトの応答性が大幅に向上します ([#5783](https://github.com/fish-shell/fish-shell/issues/5783)).
- パスコンポーネントバインディング (たとえばCtrl-w) は `ssh` などでホスト名とユーザー名の区切り文字として使われるため ":" と "@" で停止します ([#5841](https://github.com/fish-shell/fish-shell/issues/5841)).
- `bind -k nul` でヌル文字にバインドできます. 端末は多くの場合 control-space デコの文字を生成します. ([#3189](https://github.com/fish-shell/fish-shell/issues/3189)).
- 新しい readline コマンド `expand-abbr` を使用して、省略名の展開を実行できます ([#5762](https://github.com/fish-shell/fish-shell/issues/5762)).
- 新しい readline コマンド `delete-or-exit` はカーソルの右側の文字を削除するか、コマンド 行が空の場合はシェルを終了します (この機能を `delete-or-exit` 関数から移動します).
- `self-insert` readline コマンドは、空でない場合、バインディング シーケンスを挿入します.
- 新しいキーバインド Alt-S は `sudo` を先頭に追加します ([#6140](https://github.com/fish-shell/fish-shell/issues/6140)).
- コマンドを説明する Alt-W バインディングは複数行のプロンプトでも動作するはずです ([#6110](https://github.com/fish-shell/fish-shell/issues/6110))
- コマンドの man ページを開く Alt-H バインディングは `sudo` を無視します ([#6122](https://github.com/fish-shell/fish-shell/issues/6122)).
- 新しいキーバインドのペア `history-prefix-search-backward` (と `forward`) が追加されました ([#6143](https://github.com/fish-shell/fish-shell/issues/6143)).
- ViモードはRで置換モードに入れるようになりました ([#6342](https://github.com/fish-shell/fish-shell/issues/6342)), `d0` で現在の行を削除できるようになりました ([#6292](https://github.com/fish-shell/fish-shell/issues/6292)).
- Viモードで置換モードでエンターを押したときプロンプトが消去されなくなりました ([#6298](https://github.com/fish-shell/fish-shell/issues/6298)).
- Viモードで選択操作に含まれる範囲は Vi と同様に振る舞うようになりました ([#5770](https://github.com/fish-shell/fish-shell/issues/5770)).

#### プロンプトの改善
- informativeモードのGitプロンプトにスタッシュの数が表示されるようになりました.
- Gitプロンプトに、informativeモードを有効にしなくても（より近代的な）有意な記号を表示できるオプション (`$__fish_git_prompt_use_informative_chars`) が追加されました.
- 標準プロンプトにVCS統合機能が追加され、SSH経由で実行している場合はホストをカラー表示するようになりました ([#6375](https://github.com/fish-shell/fish-shell/issues/6375)).
- 標準プロンプトとサンプルのプロンプトでは直前のコマンドが失敗したときパイプのステータスを表示するようになりました.
- 標準プロンプトとサンプルのプロンプトは、必要に応じて、シグナル名に対する終了ステータスの解決を試みます.

#### ターミナル出力の改善
- ページャーのカラー出力をさらに多くの要素について設定できる `fish_pager_color_` オプションが追加されました ([#5524](https://github.com/fish-shell/fish-shell/issues/5524)).
- 様々なシステムコンソールで検出とサポートが追加され、色と特殊文字がサポートされました ([#5552](https://github.com/fish-shell/fish-shell/issues/5552)).
- システムがUnicode9をサポートしているか（と絵文字の表示幅を）推測するようになったので、ほとんどの場合 `$fish_emoji_width` を設定する必要がありません ([#5722](https://github.com/fish-shell/fish-shell/issues/5722)).
- ワイド文字、特に韓国語の文字や絵文字の表示が改善されました ([#5583](https://github.com/fish-shell/fish-shell/issues/5583), [#5729](https://github.com/fish-shell/fish-shell/issues/5729)).
- Viモードのカーソルはフォーカス移動を報告するターミナルでフォーカスが与えられたとき正しく再描画されるようになりました (例えばtmux) ([#4788](https://github.com/fish-shell/fish-shell/issues/4788)).
- 背景色を設定する変数で (例えば `fish_pager_color_search_match`) `--reverse` が使えるようになりました.

#### コマンド補完
- 追加されたもの
  - `aws`
  - `bat` ([#6052](https://github.com/fish-shell/fish-shell/issues/6052))
  - `bosh` ([#5700](https://github.com/fish-shell/fish-shell/issues/5700))
  - `btrfs`
  - `camcontrol`
  - `cf` ([#5700](https://github.com/fish-shell/fish-shell/issues/5700))
  - `chronyc` ([#6496](https://github.com/fish-shell/fish-shell/issues/6496))
  - `code` ([#6205](https://github.com/fish-shell/fish-shell/issues/6205))
  - `cryptsetup` ([#6488](https://github.com/fish-shell/fish-shell/issues/6488))
  - `csc`, `csi` ([#6016](https://github.com/fish-shell/fish-shell/issues/6016))
  - `cwebp` ([#6034](https://github.com/fish-shell/fish-shell/issues/6034))
  - `cygpath`, `cygstart` ([#6239](https://github.com/fish-shell/fish-shell/issues/6239))
  - `epkginfo` ([#5829](https://github.com/fish-shell/fish-shell/issues/5829))
  - `ffmpeg`, `ffplay`, `ffprobe` ([#5922](https://github.com/fish-shell/fish-shell/issues/5922))
  - `fsharpc`, `fsharpi` ([#6016](https://github.com/fish-shell/fish-shell/issues/6016))
  - `fzf` ([#6178](https://github.com/fish-shell/fish-shell/issues/6178))
  - `g++` ([#6217](https://github.com/fish-shell/fish-shell/issues/6217))
  - `gpg1` ([#6139](https://github.com/fish-shell/fish-shell/issues/6139))
  - `gpg2` ([#6062](https://github.com/fish-shell/fish-shell/issues/6062))
  - `grub-mkrescue` ([#6182](https://github.com/fish-shell/fish-shell/issues/6182))
  - `hledger` ([#6043](https://github.com/fish-shell/fish-shell/issues/6043))
  - `hwinfo` ([#6496](https://github.com/fish-shell/fish-shell/issues/6496))
  - `irb` ([#6260](https://github.com/fish-shell/fish-shell/issues/6260))
  - `iw` ([#6232](https://github.com/fish-shell/fish-shell/issues/6232))
  - `kak`
  - `keepassxc-cli` ([#6505](https://github.com/fish-shell/fish-shell/issues/6505))
  - `keybase` ([#6410](https://github.com/fish-shell/fish-shell/issues/6410))
  - `loginctl` ([#6501](https://github.com/fish-shell/fish-shell/issues/6501))
  - `lz4`, `lz4c`, `lz4cat` ([#6364](https://github.com/fish-shell/fish-shell/issues/6364))
  - `mariner` ([#5718](https://github.com/fish-shell/fish-shell/issues/5718))
  - `nethack` ([#6240](https://github.com/fish-shell/fish-shell/issues/6240))
  - `patool` ([#6083](https://github.com/fish-shell/fish-shell/issues/6083))
  - `phpunit` ([#6197](https://github.com/fish-shell/fish-shell/issues/6197))
  - `plutil` ([#6301](https://github.com/fish-shell/fish-shell/issues/6301))
  - `pzstd` ([#6364](https://github.com/fish-shell/fish-shell/issues/6364))
  - `qubes-gpg-client` ([#6067](https://github.com/fish-shell/fish-shell/issues/6067))
  - `resolvectl` ([#6501](https://github.com/fish-shell/fish-shell/issues/6501))
  - `rg`
  - `rustup`
  - `sfdx` ([#6149](https://github.com/fish-shell/fish-shell/issues/6149))
  - `speedtest`, `speedtest-cli` ([#5840](https://github.com/fish-shell/fish-shell/issues/5840))
  - `src` ([#6026](https://github.com/fish-shell/fish-shell/issues/6026))
  - `tokei` ([#6085](https://github.com/fish-shell/fish-shell/issues/6085))
  - `tsc` ([#6016](https://github.com/fish-shell/fish-shell/issues/6016))
  - `unlz4` ([#6364](https://github.com/fish-shell/fish-shell/issues/6364))
  - `unzstd` ([#6364](https://github.com/fish-shell/fish-shell/issues/6364))
  - `vbc` ([#6016](https://github.com/fish-shell/fish-shell/issues/6016))
  - `zpaq` ([#6245](https://github.com/fish-shell/fish-shell/issues/6245))
  - `zstd`, `zstdcat`, `zstdgrep`, `zstdless`, `zstdmt` ([#6364](https://github.com/fish-shell/fish-shell/issues/6364))
- たくさんのコマンド補完が改善されました.
- コマンド補完のページャーで短縮名を持つロングネームオプションが選択できるようになりました ([#5634](https://github.com/fish-shell/fish-shell/issues/5634)).
- 末尾スペースが存在する場合、タブ補完でスペースが新たに追加されなくなりました ([#6107](https://github.com/fish-shell/fish-shell/issues/6107)).
-  `and`、 `not` など補完対象がサブコマンドとして現れる組み込み関数のコマンド補完が正常に動くようになりました ([#6249](https://github.com/fish-shell/fish-shell/issues/6249)).
- オプションの短縮形を組み合わせて記述したときのコマンド補完が正常に動くようになりました ([#332](https://github.com/fish-shell/fish-shell/issues/332)).
- 不正なコマンド補完中にコマンド補完を有効にしてもカーソルが移動しなくなり、ミスを修正しやすくなりました ([#4124](https://github.com/fish-shell/fish-shell/issues/4124)).
- 空のコマンドラインでコマンド補完したとき使用可能なすべてのコマンドが一覧表示されるようになりました.
- 関数以外のコマンド補完の前に関数の一覧を保管すると関数の一部がリークするバグが修正されました.

### 廃止および削除された機能
- vcs-prompt関数は、二重アンダースコアなしの名前が推奨されているので, \_\_fish_git_prompt は fish_git_prompt に, \_\_fish_vcs_prompt は fish_vcs_prompt に, \_\_fish_hg_prompt は fish_hg_prompt に、\_\_fish_svn_prompt は fish_svn_prompt に変更されました. 古い名前の参照が追加されたので、古い名前もまだ使用可能です ([#5586](https://github.com/fish-shell/fish-shell/issues/5586)).
- `string replace` の置換式は追加のラウンドがあるので, バックスラッシュのエスケープには多くのバックスラッシュが必要です (例えば `string replace -ra '([ab])' '\\\\\\\$1' a`). 新しい機能フラグ `regex-easyesc` はこれを無効にし、 `string replace -ra '([ab])' '\\\\$1' a` のように記述できるようになります ([#5556](https://github.com/fish-shell/fish-shell/issues/5556)). この機能フラグは将来的にデフォルトになるのでスクリプトの修正が必要になります.
- `fish_vi_mode` 機能は fish 2.3 で廃止になり, このたび削除されました. `fish_vi_key_bindings` を代わりに使用してください ([#6372](https://github.com/fish-shell/fish-shell/issues/6372)).

###  配布者と開発者へ
- fish 3.0 では CMake ベースのビルドシステムが導入されました。fish 3.1 では、Autotools ベースのビルドと従来の Xcode ビルドシステムの両方が削除され、CMake ビルドシステムのみが残されています。すべての配布者と開発者は、CMake をインストールする必要があります.
- fish の `psub` プロセス置換機能は外部コマンド `tee` に依存しています.
- ドキュメントは Sphinx で記述されます. 以前の Doxygen ベースのドキュメントシステムは削除されました. 開発者と配布者は、ドキュメントをビルドしたい場合 Sphinx をインストールしなければなりません.
- `INTERNAL_WCWIDTH` ビルドオプションは削除され, 常に `wcwidth` 内部関数を使用します. 一般的な使用に適した構成オプションが多数あります ([#5777](https://github.com/fish-shell/fish-shell/issues/5777)).
- `nroff` がインストールされていない場合、`mandoc` を使用して `--help` の出力を処理できるようになったので, `mandoc` がインストールされている場合システムの外部依存を減らします ([#5489](https://github.com/fish-shell/fish-shell/issues/5489)).
- Illumos など Solaris ベースのシステムに存在したビルドに関連するいくつかのバグが修正されました ([#5458](https://github.com/fish-shell/fish-shell/issues/5458), [#5461](https://github.com/fish-shell/fish-shell/issues/5461), [#5611](https://github.com/fish-shell/fish-shell/issues/5611)).
- `npm`, `bower`, `yarn` のコマンド補完の完全な動作に `jq` コマンドは不要になり, Python が存在する場合はそれを使用します.
- 補完、関数、および設定スニペットのパスが拡張されました。. `XDG_DATA_DIRS`が定義されているシステムでは,  `fish/vendor_completions.d`, `fish/vendor_functions.d`,  `fish/vendor_conf.d` のサブディレクトリを検索します. この変数が手議されない環境ではインストール時に指定された親ディレクトリかデフォルトの "extra" ディレクトリ, デフォルトでは `/usr/local` を検索します ([#5029](https://github.com/fish-shell/fish-shell/issues/5029)).

---