👌
新しい環境で活用!ZshとOh My Zshの設定ガイド(Dockerでのテスト導入も解説)
はじめに
こんにちは、Kouです。
CentOSのメンテナンスサポートサポートが終了し、新しいOSへの移行が必要になってきました。
例えば、Rockey LinuxやAlmaLinuxなどのディストリビューションが注目されています。
これらの新しいOS環境で、ZshとOh My Zshを使って、より快適な開発環境を整える方法をご紹介します。
Dockerを使ってテスト導入する方法も解説するので、ぜひお試しください。
前回は「LaravelでAWS CloudFrontの署名付きCookieを生成・設定してみた」を投稿しました。
Zshとは
- 高度な補完: コマンドや引数の補完機能が強力で、効率的にコマンド入力が可能です。
- 履歴管理: 履歴の検索と管理が簡単で、過去のコマンドを迅速に再利用できます。
- スクリプト機能: 条件分岐や配列操作が柔軟で、複雑なスクリプトの作成が容易です。
Oh My Zshとは
Oh My Zshは、Zshをカスタマイズし、管理を簡単にするためのオープンソースフレームワークです。以下の利点や機能があります:
- 自動アップデート: インストール後も自動的にアップデートが行われ、常に最新の機能や修正が適用されます。
-
プラグイン追加: 機能を簡単に拡張でき、開発効率を向上させます。
-
自動補完: コマンドや履歴の予測機能が充実しており、コマンド入力がさらに効率化されます。
-
自動補完: コマンドや履歴の予測機能が充実しており、コマンド入力がさらに効率化されます。
-
豊富なテーマ: 多くのテーマから選択でき、シェルの見た目を簡単に変更できます。
RokyLinuxマシンでのZshのインストールと設定
1. Zshのインストール
-
Zshのインストール方法
sudo dnf install -y zsh
2. Oh My Zshのインストール
-
Oh My Zshの概要
- Zshの設定と管理を簡単にするフレームワーク
-
インストール手順
-
curl
またはwget
を使用
またはsh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
sh -c "$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
-
-
設定のカスタマイズ
- テーマの選択 (
~/.zshrc
で設定) - プラグインの追加 (
~/.zshrc
で設定)
- テーマの選択 (
3. Zshをデフォルトのシェルに設定
-
デフォルトシェルの変更
chsh -s $(which zsh)
4. 予測コマンド機能の追加
zsh-autosuggestions
プラグインの導入
4.1 -
プラグインの説明
- コマンド入力時に予測を表示
-
インストール手順
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
-
設定のカスタマイズ
-
~/.zshrc
でプラグインを追加
plugins=(git zsh-autosuggestions)
-
zsh-syntax-highlighting
プラグインの導入
4.2 -
プラグインの説明
- コマンド構文をハイライト
-
インストール手順
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
-
設定のカスタマイズ
-
~/.zshrc
でプラグインを追加
plugins=(git zsh-syntax-highlighting)
-
zsh-history-substring-search
プラグインの導入
4.3 -
プラグインの説明
- 履歴のサブストリング検索機能
-
インストール手順
git clone https://github.com/zsh-users/zsh-history-substring-search ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-history-substring-search
-
設定のカスタマイズ
-
~/.zshrc
でプラグインを追加
plugins=(git zsh-history-substring-search)
-
Dockerで試す
- Docker Composeを使用してRocky Linuxコンテナを立ち上げ、その中にOh My Zshをインストールする方法について説明
ステップ1: プロジェクトディレクトリとDockerファイルの準備
-
プロジェクトディレクトリを作成する
mkdir my-rockylinux-project cd my-rockylinux-project
-
Dockerfileを作成する
-
Dockerfile
を作成し、以下の内容を記述します。FROM rockylinux/rockylinux:8 # 必要なパッケージをインストール RUN dnf update -y && \ dnf install -y zsh git curl util-linux-user which && \ dnf clean all # Oh My Zshのインストール RUN sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended # zshをデフォルトシェルに設定 RUN chsh -s $(which zsh) # ユーザーの設定 ENV USER=root ENV SHELL=/bin/zsh # 作業ディレクトリを設定(必要に応じて) WORKDIR /app # コンテナ起動時にzshを実行 CMD ["zsh", "-c", "sleep infinity"]
-
docker-compose.ymlファイルを作成する
-
docker-compose.yml
ファイルを作成し、以下の内容を記述します。services: app: build: . ports: - "3000:3000" volumes: - .:/app environment: NODE_ENV: development
-
ステップ2: Docker Composeでコンテナをビルドおよび起動
-
Docker Composeを使用してコンテナをビルドする
docker-compose build
-
Docker Composeを使用してコンテナを起動する
docker-compose up -d
-
コンテナに接続する
docker-compose exec app zsh
- これで、Oh My ZshがインストールされたRocky Linuxコンテナ内に入ることができます。
ステップ3: コンテナ内での操作
- コンテナ内で
~/.zshrc
ファイルを編集することで、Oh My Zshの設定を変更できます。
ステップ4: コンテナの停止と削除
-
コンテナを停止する
docker-compose down
カスタマイズ: テーマの適用方法
- 個人的にお気に入りのテーマを紹介します。
agnoster
テーマの設定
1. -
Oh My Zshの設定ファイルを編集して、
agnoster
テーマを有効にします。以下のコマンドで設定ファイルを開きます。vi ~/.zshrc
-
設定ファイル内で、次の行を探して変更します。
ZSH_THEME="agnoster"
-
ファイルを保存して閉じます (
Ctrl+O
で保存し、Ctrl+X
で終了)。
2. Powerlineフォントのインストール
- 多くのテーマではPowerlineフォントが必要です。
dnf
を使ってPowerlineフォントをインストールします。dnf install powerline-fonts
3. フォントの設定
- ターミナルの設定で、インストールしたPowerlineフォントを選択します。ターミナルの設定メニューから「フォント」セクションにアクセスし、Powerlineフォントを選択します。
4. 設定の反映
- 設定を反映するために、次のコマンドを実行してZshを再起動します。
source ~/.zshrc
まとめ
- Zshのインストールと設定の重要性: Zshは高機能なシェルで、作業効率を大幅に向上させます。
- 予測コマンド機能の追加での利便性: Oh My Zshプラグインにより、コマンド入力の効率が向上します。
参考リンク
- Docker Composeの公式ドキュメント: 公式ドキュメント
- ZshおよびOh My Zshの公式リポジトリ: Zsh公式、Oh My Zsh公式
-
プラグインの公式リポジトリ:
zsh-autosuggestions
GitHubリポジトリ、zsh-syntax-highlighting
GitHubリポジトリ、zsh-history-substring-search
GitHubリポジトリ
Discussion