🕌

bashからzshに移行したら生産性が向上した

2024/08/27に公開

これは何?

普段使っているbashをzshに以降したらかなり使いやすくなったので記事にしました。↓イメージ

test.gif

特に,

  • fishのような補完性能の向上
  • terminal入力に使うviモードが使いやすくなった
    • ビジュアル面
    • 設定面: bashだと.inputrcとかが必要だったが,zshだと.zshrcで完結する。
      の2点がイチオシポイントです。

[!NOTE]
筆者はbashのシェルスクリプトが2番目に覚えたプログラミング言語(?)でありbashは結構好きです。そのため,bashのネガティブキャンペーンを行うのが記事の目的ではありません。


この記事でできるようになること

fishのようなコマンド入力の補完を行う

tabキーを連打して補完を連打している皆様に朗報です。
zshに以降してプラグインを入れれば,ターミナルに文字を入力するだけで補完候補がでてくるようになります

image.png

terminalのviモードがかっこよくなる

image.png

  • ターミナルでノーマルモードにした時に<<<を表示することができます。そのため,vimが好きな方はzshへの移行を強くおすすめします。

bashrcをコネコネしてもvimのモードを表示できるようにはなるのですが,bashだと動的にターミナル変数の書き換えができないので,改行するなどした際に反映されるので動的な書き換えはできません。

  • 細かいカスタマイズが楽
    一部emacsのキーバインド(Ctrl pで履歴参照とか)したい場合にbashだと.inputrcに記載したりしていましたが,zshなら.zshrcで完結します。

動作確認済み環境

  • Ubuntu22.04
    • Gnome Terminal
    • tmux
  • WSL2 Ubuntu 22.04
    • Windows Terminal

そもそもなぜ今更移行したのか

かなり個人的な話になってしまうのですが,私が最初にまともに触ったコンピュータが研究室にあったlinuxサーバでした。
自然科学の数値計算にはFortranが使われており,そのため,linuxサーバ内で作業することが多かったと思います。
作業の効率化のため,bashやlinuxのコマンドを勉強していたのですが,そのうち研究そのものよりもIT技術が楽しくなったので非IT系の学部からIT業界に行くことを決めました。
そのため,最初に触ったshellであるbashへの思い入れが強く,zshの存在自体はずっと知っていたもののなかなか移行に踏み切れませんでした。

ですが,1ヶ月ほど前に,ターミナルの入力モードをviにしたのをきっかけにいろいろカスタマイズがしたくなり,自然とカスタマイズ性が高いzshに移行したくなったという次第であります。


おすすめのzsh設定方法

zshのインストール

自分はUbuntuなのでaptを使って入れました。v

sudo apt install zsh

oh-my-zshを入れる

zshは非常にカスタマイズ性が高いのでzshrcを自分でコネコネするのも楽しいのですが,3日くらい自前で弄った結果,oh-my-zshを入れるとすべてが解決することがわかり,Oh-my-zsh教団に入団しました。

インストール方法は公式通りで問題ないです。

[!WARNING]
既存のzshrcが上書きされてしまうのできちんとバックアップをとっておいてください。

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

oh-my-zshのテーマを決める

と大量のテーマが公式から提供されており,.zshrcに一行書くだけで使えます。

カッチョイイテーマはたくさんあるんですが,自分は

  • ターミナル変数は短めが好き,改行なんてしたくない
  • gitのブランチ情報くらいはほしい

という感じだったのでessembehに落ち着きました。

ZSH_THEME="essembeh"

pluginを入れる

[oh-my-zshの公式プラグイン](https://github.com/ohmyzsh/ohmyzsh/tree/master/pluginsが大量にあります。

自分はコマンドが覚えられないので,以下の2つだけ入れました。
これもzshrcに記載するだけでpluginの管理ができます。

# Add wisely, as too many plugins slow down shell startup.
plugins=(
  git
  vi-mode
)

特におすすめなのがvi-modeというプラグインでzshでのviモードを快適なものにしてくれます。
上述したnormalモードやvisualモードでわかりやすく,<<<を表示してくれるだけでなく,viモードでも普通に使いたいemacs式のターミナルのショートカットもプラグインで設定してくれています(ctrl p,n等)

image.png

fishのように入力補完を強化するプラグインをインストール(oh-my-zsh外部プラグイン)

zsh-autocompleteを使うとtabを押さなくても自動で入力候補が表示されるようになります。
image.png
インストール自体は完全にoh-my-zshに載っかれば良いです。

git clone https://github.com/marlonrichert/zsh-autocomplete.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autocomplete
plugins=(
  git
  vi-mode
  zsh-autocomplete
)

文字を打つだけで画面がチカチカと変化して自分がキラになったかのような全能感が味わえます。
image.png

もっと落ち着いた画面が好みの方はzsh-autosuggestion等を使ったほうがいいかもしれません。


まとめ

  • zshに移行すると補完等多大なメリットがある。
  • oh-my-zshを使うと楽。

参考

自分のdotfilesが詰まったときや設定の参考になるかもしれないので置いておきます。

自分もzsh初心者なのでいろいろいい使い方とか教えていただけると幸いです。

GitHubで編集を提案

Discussion