fishを使ってターミナルの操作を超便利にする。

僕のmacの標準搭載されているshellはbash(現在はzshが搭載されているらしい)なのですが、知り合いにfishというshellがとても使いやすいということを教えてもらったので、導入方法と使い方を記事にまとめます!

スポンサーリンク

目的

①fishのshellを使って、ディレクトリの検索ができるようになる。
②コマンドヒストリーから検索が簡単にできる。

(前提、環境)

mac
macOS Mojave 10.14.5
Homebrew 2.2.2

はじめに

公式

公式ページ
https://fishshell.com/
fish tutorial
https://fishshell.com/docs/current/tutorial.html

参考記事

導入手順

導入するもの一覧

  • fish
  • peco

fishのinstall

まずはHomebrewでfishをインストールします。
Homebrewを使っていない方はHomebrewを入れてから試してください!

brew install fish

(番外編)fishでrailsのコマンドを使えるようにする

下記のコマンドを打たないとrailsでコマンドが打てないので僕はconfigのなかに追記します。

echo 'rbenv init - |source' >> ~/.config/fish/config.fish

pecoのinstall

こちらもまたHomebrewでinstallします!

brew install peco

検索のためのスクリプト

vimを使ってconfigの設定を書き換えます。

vi ~/.config/fish/config.fish

僕はホームディレクトリ配下のprojectsの中に主要なアプリを入れているので/Users/[ユーザ名]/projects/という表記にしています。
適宜書き換えてください。

'rbenv init - |source'
function peco_select_history_order
  if test (count $argv) = 0
    set peco_flags --layout=top-down
  else
    set peco_flags --layout=bottom-up --query "$argv"
  end
  history|peco $peco_flags|read foo
  if [ $foo ]
    commandline $foo
  else
    commandline ''
  end
end
# ディレクトリを検索できるようになる
function peco_workspace_change
  # 以下のパスを変更する
  ls /Users/[ユーザ名]/projects/ | peco | read foo
  if [ $foo ]
    # 以下のパスを変更する
    commandline "cd /Users/[ユーザ名]/projects/$foo"
  else
    commandline ''
  end
  commandline -f repaint
end
# 下記を書くことで
# control + rで検索
# control + f でディレクトリ検索ができるようになる。
function fish_user_key_bindings
   bind \cr peco_select_history_order
   bind \cf peco_workspace_change
end

結果

検索が爆速になる。

終わりに

fishについては触りたてのため、ちょっとずつ知識を増やしていきたいと思います!

タイトルとURLをコピーしました