Edited at

zshの入力をfishっぽくする。(CLIのハイライトと予測補完)

More than 1 year has passed since last update.


fishとは

fishとは特に込み入った設定をしなくても、かなり使いやすいCLI環境を提供してくれるシェルの一つです。

ですが、非常に残念なことにPOSIXに一部準拠してないので細かいところでコケたりするのが嫌で使うのを辞めてしまいました。

Zshでそれっぽく使えるプラグインを幾つか見つけたので紹介します。

なおfish使ったこと無くても、結構便利な機能なので是非導入してみてください。

※なお、この記事ではzplugでのインストール方法のみ記載しますので、zplugを使っていない方は各自でインストール方法を確認して下さい。


zsh-syntax-highlighting

zsh-users/zsh-syntax-highlighting

このプラグインを入れることで、間違ったコマンドでは赤文字に、正しいコマンドでは緑色の文字でハイライトしてくれます。

zplugでインストールする場合は以下の様に.zshrcで指定します。


.zshrc

zplug "zsh-users/zsh-syntax-highlighting", defer:2



zsh-autosuggestions

zsh-users/zsh-autosuggestions

このプラグインを入れることで灰色の文字で予測が表示されます。

カーソルキーの右でその候補を採用することができます。

zplugでインストールする場合は以下の様に.zshrcで指定します。


.zshrc

zplug "zsh-users/zsh-autosuggestions", defer:2  



終わりに

結構この2つのプラグインだけでfishっぽさがかなりでましたね。

fishは特に設定しなくてもこれらの機能が使えましたが、zshではzplugを導入することで個人的にはかなり導入の敷居が下がったように感じました。


おまけ

ちなみに、プロンプトはhttps://github.com/sindresorhus/pure

を参考にして自分で一から設定してみました。


.zshrc

local prompt_location="%F{cyan}%B%~%b%f"

local promot_mark="%B%(?,%F{magenta},%F{red})%(!,#,❯)%b"

# vcs_infoロード
autoload -Uz vcs_info
# PROMPT変数内で変数参照する
setopt prompt_subst

# vcsの表示
zstyle ':vcs_info:*' formats '%s][* %F{green}%b%f'
zstyle ':vcs_info:*' actionformats '%s][* %F{green}%b%f(%F{red}%a%f)'

# プロンプト表示直前にvcs_info呼び出し
precmd() {
vcs_info
}

# vcs_info_msg_0_の書式設定
# zstyle ':vcs_info:git:*' check-for-changes true
zstyle ':vcs_info:git:*' check-for-changes false
zstyle ':vcs_info:git:*' stagedstr "%F{yellow}!%f"
zstyle ':vcs_info:git:*' unstagedstr "%F{red}+%f"
zstyle ':vcs_info:*' formats " (%F{green}%b%f%c%u)"
zstyle ':vcs_info:*' actionformats ' (%b|%a)'

# プロンプト
PROMPT="
${prompt_location}"'$vcs_info_msg_0_'"
${promot_mark} "


背景色はterminal側でHSB: 色相232°彩度30% 明度19%に設定しています。