fish shell
2019/6/1
◆ ドキュメント
◆ アップデート
code:terminal
$ brew upgrade fish
$ fisher self-update
◆ 基本操作
▼ キーバインド
table:shortcut
キー 効果
Ctrl+f 補完確定
Ctrl+a 先頭へ移動
Ctrl+p 一つ前のコマンド履歴を表示
Ctrl+w 直前のパスを一要素削除
Ctrl+x クリップボードにコピー
Ctrl+g fisher-ghq:ghqジャンプ先一覧表示
Ctrl+r fisher-fzf:コマンド履歴から候補一覧を表示
Ctrl+t fisher-fzf:カレントディレクトリ化のファイル検索
▼ ワイルドカード
fishはワイルドカード「*」をサポート
例えばディレクトリ内のPNG画像を表示したい場合は、以下のようにコマンドを打つ
code:terminal
$ ls *.png
image.png image2.png image3.png
code:terminal
$ ls *.png
image.png image2.png image3.png
▼ >や<の使用
code:terminal
$ pwd > echo // echoという名前のファイルを作成し、pwdの出力結果を書き込む
$ pwd < echo // pwdの結果をechoする
▼ PATH
グローバルなパス設定
Ubuntu環境のみ
code:terminal
$ set -U fish_user_paths /home/linuxbrew/.linuxbrew/bin $fish_user_paths
全環境
code:terminal
$ set -U fish_user_paths $HOME/.pyenv/shims $fish_user_paths
$ set -U fish_user_paths $HOME/.nodebrew/current/bin $fish_user_paths
$ set -U fish_user_paths /usr/local/sbin $fish_user_paths // Homebrew
◆ プラグイン
▼ agnoster:テーマ
インストール後は一旦ターミナルを再起動
Powerline用のフォントをターミナルに設定する必要がある
code:terminal
$ fisher add oh-my-fish/theme-agnoster
▼ z:移動履歴管理プラグイン
z [tab]で履歴が出てくる
code:terminal
$ fisher add jethrokuan/z
▼ fzf:曖昧検索
fzfをfishで使えるように
あたりまえだけどそもそもfzfが入ってないと機能しなかったのでHomebrewでいれる
code:terminal
$ brew install fzf
$ fisher add jethrokuan/fzf
設定に以下が必要(わたしはCtrl+fが取られるのがいやなので古いキーバインドのままにしている)
code:.config.fish
set -U FZF_LEGACY_KEYBINDINGS 0
https://gyazo.com/093a87822bc16a7cd2815bf6aa272c8c
▼ fish-bd:親ディレクトリへ移動
cd ../../ とはおさらば
code:terminal
fisher add 0rax/fish-bd
▼ fishの補完機能をエイリアスにも適用
普通のエイリアスだと補完機能がなくなるので...
code:terminal
$ fisher add oh-my-fish/plugin-balias
例
code:.config.fish
bailias gplm 'git pull master'
▼ fish-ghq:ghqのリポジトリへジャンプ
いままでpecoとのセットでキーバインド設定して使ってたけどプラグインでできるぽい
Ctrl + Gでジャンプ先一覧表示
code:terminal
$ fisher add decors/fish-ghq
◆ function
▼ mkdirしたディレクトリにそのまま移動する
「functionは~/.config/fish/functions/コマンド名.fish」ファイルに記述する
pオプションでmkdirを実行するので、複数階層を一度に作って遷移することも可能
evalを使ってcdしているが、これをしないとコマンド終了時に元のプロセスに戻ったタイミングで実行していたパスになってしまう
code:mkcd.fish
function mkcd
if test (count $argv) -eq 0
echo "Pass dir name"
return 1
end
mkdir -p $dirname
eval "cd" $dirname
end