WSLでzshの導入&zshのプラグイン管理にZnapを導入してみる

にあえん

December 22, 2023

こんばんは。ナナオです。

Windowsに切り替えてから半年近く経ちますが、まだwslのセットアップが全然できていませんでした。

普段仕事ではMacを使っているのでこちらもzshを使おうと思っていたんですが、せっかくなら新しいものを使いたいなと思って調べてみたら、プラグイン管理にznapというツールが使用できることを知ったのでzshと一緒に導入してみようと思います。

ZSHの導入

私のWSLはUbuntuを使用しているため、その設定でやります。

まずは以下のコマンドでzshをインストールします。

sudo apt install zsh

次にchshで起動するシェルをZSHに変更します。

chsh -s /bin/zsh

はい、これで導入終わりです。

ホームディレクトリに空の.zshrcを配置したら設定はこれで終わりです。

Znapの導入

続けてznapの導入です。

リポジトリをクローンします。

git clone  -depth 1 -- https://github.com/marlonrichert/zsh-snap.git ~/.znap

そしたらznapを読み込む設定を.zshrcに追加します。

# .zshrc
source ~/.znap/znap.zsh

はい、これで終わりです。

とりあえずhelpコマンドを表示してみましょう。

% znap --help
Usage: znap <command> [ <argument> ... ]

Commands:
  clean      remove outdated .zwc binaries
  clone      download repos in parallel
  compile    compile zsh scripts and functions
  eval       cache & eval output of command
  fpath      install command output as a function
  function   create a set of lazy-loading functions
  help       print help text for command
  ignore     add local exclude patterns to repo
  install    install executables & completion functions
  multi      run tasks in parallel
  prompt     instant prompt from repo
  pull       update repos in parallel
  restart    (DEPRECATED) validate dotfiles & safely restart Zsh
  source     load plugins
  status     fetch updates & show git status
  uninstall  remove executables & completion functions

For more info on a command, type `znap help <command>`.

ちゃんとznapコマンドが使えていますね。

まずはznapが管理するリポジトリのディレクトリパスを指定してあげる設定を.zshrcに追記してあげます。

これをしないと、この後znapで追加するプラグインなどがホームディレクトリ上にどんどん追加されていって非常に見栄えが良くなくなってしまいます。

zstyle ':znap:*' repos-dir ~/.znap/repos

じゃあ次にohmyzshを使えるようにしていきましょう。

znap source ohmyzsh/ohmyzsh
znap source ohmyzsh/ohmyzsh lib/{git,theme-and-appearance}
znap source ohmyzsh/ohmyzsh plugins/git

これでgitプラグインが使用可能になりました。(gitコマンドがgで使えるようになる)

エイリアスが通っているか確認しましょう。

> g --help
usage: git [--version] [--help] [-C <path>] [-c <name>=<value>]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           [--super-prefix=<path>] [--config-env=<name>=<envvar>]
           <command> [<args>]

These are common Git commands used in various situations:

start a working area (see also: git help tutorial)
   clone     Clone a repository into a new directory
   init      Create an empty Git repository or reinitialize an existing one

work on the current change (see also: git help everyday)
   add       Add file contents to the index
   mv        Move or rename a file, a directory, or a symlink
   restore   Restore working tree files
   rm        Remove files from the working tree and from the index

examine the history and state (see also: git help revisions)
   bisect    Use binary search to find the commit that introduced a bug
   diff      Show changes between commits, commit and working tree, etc
   grep      Print lines matching a pattern
   log       Show commit logs
   show      Show various types of objects
   status    Show the working tree status

grow, mark and tweak your common history
   branch    List, create, or delete branches
   commit    Record changes to the repository
   merge     Join two or more development histories together
   rebase    Reapply commits on top of another base tip
   reset     Reset current HEAD to the specified state
   switch    Switch branches
   tag       Create, list, delete or verify a tag object signed with GPG

collaborate (see also: git help workflows)
   fetch     Download objects and refs from another repository
   pull      Fetch from and integrate with another repository or a local branch
   push      Update remote refs along with associated objects

'git help -a' and 'git help -g' list available subcommands and some
concept guides. See 'git help <command>' or 'git help <concept>'
to read about a specific subcommand or concept.
See 'git help git' for an overview of the system.

ちゃんと使えているようです。

プロンプトも変えてみます。

pureというプロンプトがかなりシンプルで早くていい感じらしいので入れてみます。

znap prompt sindresorhus/pure

これでターミナルを再起動すると、プロンプトが適用されます!

あとは使いたいプラグインをこんな感じで適当に.zshrcに追加していけば…

znap source marlonrichert/zsh-autocomplete
znap source zsh-users/zsh-autosuggestions
znap source zsh-users/zsh-syntax-highlighting
znap source zsh-users/zsh-completions
znap source hlissner/zsh-autopair

大体いい感じになりました!

まとめ

少ない労力でzshがいい感じに動くようになりました。

ではまた。

参考

Zshのインストール #Linux - Qiita