fishシェルの利点とemacsとの連携方法

2017-04-25

fishシェルの魅力とは

fishはモダンで使いやすいシェルです。その直感的な操作性や豊富な機能により、多くの開発者から支持を受けています。しかし、bashなどの従来のシェルを前提にしたツールやスクリプトとの互換性の問題が発生することがあります。

emacsとfishの連携問題

特にemacsユーザーは、grep-findコマンドを使用する際に問題に直面することがあります。fishでは、コマンドラインの{}プレースホルダーを正しく解釈しないため、emacsでのgrep-findが失敗します。この問題を解決するには、emacsのgrepモードでshell-file-namebashに変更する必要があります。

(use-package grep
  :init
  (add-hook 'grep-setup-hook (lambda ()
                               (setq-local shell-file-name "bash"))))

fishでのfindコマンドの扱い

fishを使用していると、例えば以下のようなfindコマンドを実行する際にも注意が必要です。

$ find . -exec wc -l '{}' \;

fishでは{}をシングルクォート'で囲むことで、この問題を回避できます。

fisherman: fishのプラグイン管理

fishのさらなる便利機能を活用するためには、fishermanというプラグイン管理ツールが欠かせません。fishermanを使用すると、多様なプラグインを簡単にインストールし、fishの機能を拡張できます。

fishermanのインストール後は、fisherコマンドが利用可能になります。例えば、bashでよく使用される&&||などの演算子をfishで使えるようにするためには、以下のコマンドでedc/bassプラグインをインストールします。

$ fisher install edc/bass

まとめ

fishシェルはその使いやすさと機能の豊富さで多くの開発者に支持されていますが、emacsとの連携や他のシェルとの互換性に関しては、いくつかの調整が必要です。本記事では、emacsでのgrep-find問題の解決方法や、fishでのfindコマンドの使い方、さらにfishermanを通じたプラグイン管理の方法を紹介しました。これらの情報を活用することで、fishシェルの潜在能力を最大限に引き出し、より効率的な開発環境を構築することができるでしょう。