読者です 読者をやめる 読者になる 読者になる

Zshの作り直し「oh-my-zshの卒業」

zsh

この度、oh-my-zshを卒業します。


oh-my-zshとは

zshの構成を管理するフレームワーク。導入するだけすぐ使え、様々なテーマから見た目、機能を選び簡単にイカしたzshになるが…

github.com

経緯

先日、ゼミの先輩で現在はエンジニアとしてる働いている先輩二人に和食屋さんに連れてってもらいました。
クラウドエンジニアとデータサイエンティストの先輩です。
AwkSedEmacs、tmux、色々ためになる話を聞きました。

その流れで、zsh→oh-my-zshの話になり、
クラウド先輩「まだオーマイなんちゃら使ってんの?」
サイエン先輩「…」
ぼく「…」

イケてる人はみんなoh-my-zshだと思ってた。

先輩によると、 『毎回出てくるアップデート』 が鬱陶しいらしい…。
彼のことを尊敬しているため、ちょっとショックでした。泣

よし、zsh作り直そう。そう決めました。


Zsh作り直し

キリがないので、自分が欲しい最小単位の設定を目標に頑張りました。

  • プロンプトのレイアウトは、oh-my-zshのterminalpartyに近く
  • 打ち込んでいる途中のコマンドを上下矢印キーで履歴から候補を補完


プロンプト設定
### プロンプトのレイアウト ###

## 左側に表示する部分
PROMPT="%B%F{green}$%f%b "

## 右側に表示する部分
RPROMPT="%F{red}%c%f"

PROMPT
%B ~ %bで囲まれた部分は太文字になります。
%F{カラー名} ~ %fで囲まれた部分は色付きになります。
今回の場合は、$マークを緑色の太文字で左に表示しています。

RPROMPT
%F{カラー名} ~ %fで色付けしています。
%cは、カレントディレクトリを表示してくれます。
今回の場合は、カレントディレクトリを赤色で、右に表示しています。

他にも表示できるようです。

エスケープ文字 表示
%c カレントディレクト
%D 日付
%T 時間


履歴から候補補完
### 履歴からコマンド補完

## コマンドの途中からでも補完
autoload history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end

## キーバインド
bindkey "\e[A" history-beginning-search-backward-end
bindkey "\e[B" history-beginning-search-forward-end

history-search-end
行の末尾にカーソルを当て、履歴から候補を探す関数?

キーバインド
Macだと \e[A が上矢印キー、 \e[B が下矢印キーである。
今回の設定だと、上矢印でコマンド履歴候補をさかのぼり、
下矢印でさかのぼったコマンド履歴からくだる。

この二つで、少しterminalpartyに近づきましたね!
バージョン管理の部分はもう少し勉強して書きたいと思います。