fish-mode 20170425.106(in MELPA)
Major mode for fish shell scripts

概要

『なぁ、fishって知ってる?』
「なんだよ、魚かよ」
『ちがうよ、シェルだよシェル!』
「えっ」
『君、シェルなに使ってる?』
「bashだけど」
『俺もzshずっと使ってきたけど使いきれなくてさ』
「そこでfishか」
『ああ、fishすごいぜ!設定しなくてもいきなり便利でさ』
「なんだって?俺、bashの使い方や便利な設定探すのにどれだけかかったか」
『俺もだ。めったに使わない機能とか覚えられなくてさ、とにかくfishすごいぜ』
「そんなにすごいのか」
『ああ、惚れ込んだぜ!もうzshもいらない子だ』
「シェルスクリプトも苦手でさあ」
『fishは独自のシェルスクリプトだよ。すごいクリーンだ』
「どんな?」
『LuaやRubyっぽい。黒魔術なしですぐに覚えられるよ』
「じゃあ俺も使ってみるぜ。サンキュ」

fish-mode.elfish シェルスクリプトのメジャーモードです。
パッケージからインストールするだけで
.fishファイルがで自動的に有効になります。
まだキーワードハイライトやインデントなどの基本的な機能しかありません。

実装の方はsh-mode(shell-script-mode)のderived-modeではなくて
独立したメジャーモードとなっています。
シェルスクリプトでありながらもシェルスクリプトではないです。
if/else/for/switch/while/not/function/return/endなどが予約語の
Luaっぽい構文の別言語だからです。

補完やsuggestionが超強力で、シェルスクリプトがクリーンなので
僕はメインのシェルをeshellから乗り換えました。
Emacsの範囲内ではとうていfishのユーザーインターフェースに追い付けないからです。
Emacsの情報をfishからアクセスできるようにしたことと、
fishでの出力ログをEmacsで参照できるようにした以上、
eshellにこだわる必要がなくなったからです。
zsh?知らんな(笑)

タイトルでは煽りましたが、それくらいfishは一度試す価値はあります。
一度使ってみてそれでもbashやzshがいいのならば
あなたは相当な熟練者です。

シェル初中級者ならばfishを気に入るのは間違いありません。

あなたもfishを使ってみませんか?

20160816152314.png
Fig1: こんな感じ

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。

(package-initialize)
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("melpa" . "http://melpa.org/packages/")
        ("org" . "http://orgmode.org/elpa/")))

初めてfish-modeを使う方は
以下のコマンドを実行します。

M-x package-install fish-mode

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name fish-mode


本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。