twitterでおのかちお氏(鍵垢なのでここでは紹介できないが)がexa というlsの代替コマンドを試してみている、ということでスクショをアップしており、これがなかなか良さそうであったので、探してインストールしてみました。

website の説明によると、

A modern replacement for ls.

トのことで、色をつけれたり、早かったり、tree viewができたり、Gitのステータスを表示できたりするらしい。

macの場合、homebrew でインストールできるようなので早速インストールしてみます。

1
$ brew install exa

very easyですね。使ってみましょう。

なるほど、デフォルトの表示はlsと同じくgrid viewなんですね。ホームにディレクトリしかないのでわかりにくいですけど、字が太いですね。あとklaussinani/hyper-pokemon を使っている都合で、色は表示されません・・・

アイコン付きで表示してみましょう。アイコンを表示したい場合は--iconsオプションをつければ良い、とのこと。

おや、表示されないですね。これは困った。まぁこの手の問題は(見た目から言っても)フォントがインストールされてないために発生しているのだろう、とあたりをつけつつ、issueを検索します。

するとどうやら nerd fonts というフォントがアイコン表示用に使用されているようです。これをインストールしてみます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
$ brew tap homebrew/cask-fonts
==> Tapping homebrew/cask-fonts
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask-fonts'...
remote: Enumerating objects: 19, done.
remote: Counting objects: 100% (19/19), done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 35658 (delta 8), reused 9 (delta 5), pack-reused 35639
Receiving objects: 100% (35658/35658), 6.07 MiB | 3.34 MiB/s, done.
Resolving deltas: 100% (25786/25786), done.
Tapped 924 casks (973 files, 7.8MB).
$ brew cask install font-hack-nerd-font
Updating Homebrew...
Error: Cask font-hack-nerd-font exists in multiple taps:
  homebrew/cask-fonts/font-hack-nerd-font
  caskroom/fonts/font-hack-nerd-font

おや、エラーが出ましたね。今回追加したhomebrew/cask-fontsというtapと元々あったcaskroom/fontsというtapの両方に同名のパッケージがあったようです。詳細を見てみましょう。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
❯❯ ~
$ brew cask info homebrew/cask-fonts/font-hack-nerd-font
font-hack-nerd-font: 2.1.0
https://github.com/ryanoasis/nerd-fonts
Not installed
From: https://github.com/Homebrew/homebrew-cask-fonts/blob/master/Casks/font-hack-nerd-font.rb
==> Name
Hack Nerd Font (Hack)
==> Artifacts
Hack Italic Nerd Font Complete.ttf (Font)
Hack Bold Nerd Font Complete.ttf (Font)
Hack Bold Italic Nerd Font Complete Mono.ttf (Font)
Hack Bold Italic Nerd Font Complete.ttf (Font)
Hack Regular Nerd Font Complete.ttf (Font)
Hack Regular Nerd Font Complete Mono.ttf (Font)
Hack Italic Nerd Font Complete Mono.ttf (Font)
Hack Bold Nerd Font Complete Mono.ttf (Font)

$ brew cask info caskroom/fonts/font-hack-nerd-font
font-hack-nerd-font: 2.1.0
https://github.com/ryanoasis/nerd-fonts
Not installed
From: https://github.com/caskroom/homebrew-fonts/blob/master/Casks/font-hack-nerd-font.rb
==> Name
Hack Nerd Font (Hack)
==> Artifacts
Hack Italic Nerd Font Complete.ttf (Font)
Hack Bold Nerd Font Complete.ttf (Font)
Hack Bold Italic Nerd Font Complete Mono.ttf (Font)
Hack Bold Italic Nerd Font Complete.ttf (Font)
Hack Regular Nerd Font Complete.ttf (Font)
Hack Regular Nerd Font Complete Mono.ttf (Font)
Hack Italic Nerd Font Complete Mono.ttf (Font)
Hack Bold Nerd Font Complete Mono.ttf (Font)

ふむ、どうやらどちらもリポジトリ・バージョンともに同じようです。単純にダブっているだけの用なので、今回はドキュメントに従いhomebrew/cask-fontsからインストールすることにします。

1
$ brew install homebrew/cask-fonts/font-hack-nerd-font

無事インストールできたので、改めて--iconsを試してみます。。。。まだ表示されないですね。hyperの設定で、nerd fontsを追加します。Font Bookを見ると、Hack Nerd Fontとして登録されているようなので、これを~/.hyper.jsの適切な項目に追加します。

1
fontFamily: 'Ricty, "Hack Nerd Font", Menlo, "DejaVu Sans Mono", Consolas, "Lucida Console", monospace',

表示されました!やったぜ!

-lと合わせて使ってみましょう。

なぜかこのタイミングでディレクトリへのアクセス権を求められました(もっと前に要求されているべきでは?)が、無事表示できました。ちょっとアイコンと文字の間が詰まっている気がしますが、こまかい調整をするのが面倒なのでこのままにしておきます。特に不便ないし。

割と良い感じなので、-lを付けたときについてはアイコンあり、付けてないときはアイコンなしでlsのaliasにしてしまいましょう。すでにlsはエイリアスを設定しています ので、これをちょっと置き換える形で設定します。

  • -pオプションはexaには実装されていないようなので、これは取り除きます
  • exa-aオプションはls-A相当のようなので、-aを使用します
  • exa -lは標準でls -lh的な表示をしてくれるのでこれも取り除きます
  • -lを付けた場合の表示順がlsexaでは異なるので、-hでヘッダを表示することにします

これで設定したalias は次の様になりました。

1
2
3
4
alias ls="exa -h"
alias la="ls -aF"
alias ll="ls -lF"
alias lla="ls -laF"

これでしばらく使ってみることにします。