私が使っている端末操作を快適にしてくれるOSSを紹介します。
Alacritty
github.com
GPUレンダリングができるterminal emulatorです。
YAMLで設定を記述することができるため、dotfilesとして管理できる点が気に入っています。
インストール
こちらに従いインストールしてください。
私はリポジトリをcloneしてcargoでインストールしました。
github.com
tmux
github.com
terminal multiplexerです。
ペインという単位でウィンドウを分割し、3〜4ペインで作業すると捗ります。
iTermなどと異なり、複数タブを実装しておらず常に1つのタブであることを思想としているようです。
インストール
こちらに従いインストールしてください。
aptやbrewでもインストール可能です。
github.com
カスタマイズ
設定ファイルは~/.tmux.conf
に記述します。
Ctrl+b
がデフォルトですが、Ctrl+j
にしておくと左手小指と右手人差し指で押すことができるので便利です。
zoxide
github.com
履歴移動のためのツールです。
後に紹介するfzfを入れることで本領を発揮します。
zi
で過去に移動したことのあるディレクトリを選択できます。
選択中に文字をタイプするとファジー検索を行うことができます。

インストール
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh
ghq
github.com
GitHubのリポジトリをcloneするとき、ローカルのディレクトリと名前が競合したり、どこにcloneしたのか分からなくなることがよくあります。
ghqを使うと ~/ghq/ にcloneし一元管理するためこのような心配が不要になります。
fzf, cdと組み合わせることによってcloneしたローカルリポジトリを高速に移動することができます。
alias g='cd $(ghq list -p | fzf)'

git clone
の代わりにghq get
を使えば良いだけです。
ghq get git@github.com:sharkdp/bat.git # ghq/{git host}/{developer_name}/{repository_name} にcloneされます ls ~/ghq/github.com/sharkdp/bat
インストール
Goでインストールしました。
go install github.com/x-motemen/ghq@latest
fzf
github.com
ファジー検索をするためのツールです。
cdやls, zoxideと組み合わせることでディレクトリの移動や、編集するファイルの選択時に力を発揮します。

インストール
cloneしてインストールをしました。
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf ~/.fzf/install
ghqとfzfを組み合わせてcloneしてきたgitリポジトリを検索する
aliasを設定します。
Ubuntuの場合は~/.bash_aliasに下記を追加します。
alias g='cd $(ghq list -p | fzf)'
次にghqで適当なリポジトリを2つ以上getしてみます。
今回はbatとripgrepをgetしてみました。
$ ghq get git@github.com:sharkdp/bat.git $ ghq get git@github.com:BurntSushi/ripgrep.git
すると、~/ghq/に下記のディレクトリが確認できるようになります。
gesogeso@gesogeso ~ $ ls ~/ghq/github.com/
📂 BurntSushi 📂 sharkdp
gesogeso@gesogeso ~ $
これで面倒なcloneしたディレクトリ間の移動が簡単になりました。
oh-my-posh
github.com
Go言語製のプロンプトをリッチにするツールです。
通常プロンプトの設定は~/.bashrc
などでPS1
という環境変数をカスタマイズしますが、oh-my-poshを使うとJSONで設定ファイルを書くことができます。
既存のテーマが豊富に用意されているのでこの中から選ぶも良し、自分でカスタマイズするも良しです。
ohmyposh.dev

lsd
github.com
lsコマンドをリッチにしたものです。
ファイルタイプに応じたアイコンを表示することができます。
アイコン表示をするためにはNerd Fontsというフォントを入れておく必要があります。
www.nerdfonts.com
memo.geso.site

インストール
cargoによるインストールが楽そうです。
cargo install --git https://github.com/lsd-rs/lsd.git --branch master
ranger
github.com
rangerとはPythonで書かれたコンソールベースの軽量ファイルマネージャです。
vimのキーバインドで操作ができ、テキストファイルをプレビューすることが可能です。
プラグインを入れて拡張することで画像などの表示にも対応できるようです。
私のrangerはこのようになっています。
インストール
Ubuntu22.04 LTSの場合は下記の通りに、ソースからインストールしました。
git clone https://github.com/hut/ranger.git
cd ranger
sudo make install
Macの場合は、Python仮想環境でranger-fx
をインストールしてからbrewでインストールしました。
brew install ranger # .venvはpython -m venv .venvで作成してください source ~/.venv/bin/activate (.venv) sudo pip install ranger-fm
カスタマイズ
scope.sh
というShell Scriptを編集することで、右画面に出てくるファイルの表示をカスタマイズ出来ます。
github.com
tmux上で動かすとカラーが対応していなかったので、.tmux.conf
をカスタマイズする必要がありました。


broot
github.com
こちらもranger
と同じく端末上で動くファイルマネージャーです。
treeコマンドのように表示し、上下カーソルでファイルを選択することができます。


インストール
こちらに従ってください。
私はリポジトリをcloneしcargoでインストールしました。
dystroy.org
tokei
github.com
wc -l
を詳細にしてくれるツールです。
ファイルの種類と、各種のファイル数、行数、コードの行数、コメントの行数、空白行数を表形式で表示してくれます。

インストール
cargo install --git https://github.com/XAMPPRocky/tokei.git tokei
delta
github.com
deltaとはdiffを分かりやすくする表示してくれるツールです。
diff
だけではなく, git diff
, git grep
, git blame
などgitの表示にも対応しています。
私は主にdeltaのwrapperであるgit diffに使っており, deltaを用いると下記のような表示になります。
左右分割表示ができ、GitHubでの差分表示を端末上でも再現することができます。
git-deltaのインストール
# ubuntu cargo install git-delta # mac brew install git-delta
カスタマイズ
.gitconfigに下記の設定を追記します。
# https://github.com/dandavison/delta # fdfcc8fce30754a4f05eeb167a15d519888fc909 [core] pager = delta [interactive] diffFilter = delta --color-only [delta] navigate = true # use n and N to move between diff sections light = false # set to true if you're in a terminal w/ a light background color (e.g. the default macOS terminal) side-by-side = true line-numbers = true [merge] conflictstyle = diff3 [diff] colorMoved = default
基本的にはリポジトリのREADMEに書いてあるもので十分ですが、下記2行のみは自身で設定しました。
side-by-side = true # diffを左右に表示します line-numbers = true # 行番号を表示します
bat
github.com
catコマンドよりリッチにファイルを表示できます。
行数の表示や、コードのカラー表示をしてくれます。

インストール
ghq get git@github.com:sharkdp/bat.git cd ~/ghq/github.com/sharkdp/bat/ # install cargo build --bins cargo test cargo install --path .
aliasを設定します。
~/.bash_alias
に下記を追記します。
paging=never
のオプションを付けると同じプロンプト内でテキストが表示できます。
alias cat='bat --paging=never'
下記のようにシンタックスハイライトされて出力できるようになりました。
カスタマイズ
configuration fileの作成
gesogeso@gesogeso ~/ghq/github.com/sharkdp/bat (master) $ bat --generate-config-file Success! Config file written to /home/gesogeso/.config/bat/config
~/.config/bat/config
を下記のように変更してみました。
# bat --list-themes #--theme="TwoDark" --theme="Dracula" --paging=never --pager="less --RAW-CONTROL-CHARS --quit-if-one-screen --mouse"
config fileを反映する方法としては、下記のコマンドを実行します。
bat --config-file
参考
github.com
mcfly
github.com
コマンド履歴からコマンドの候補を表示してくれます。
Ctrl-R
で候補を示してくれます。

インストール
# mac brew install mcfly echo 'eval "$(mcfly init bash)"' >> ~/.bashrc
ugrep
ugrepはgrepを強化したもので、正規表現での検索を高速に出来るツールです。
-Q
オプションで、検索専用の画面を表示できます。
github.com
ug
でgit grep
のように検索ワードを含んだファイルと行番号を検索することができます。
git管理されていないディレクトリに対しても正規表現で検索することが可能です。

インストール
ghq get git@github.com:Genivia/ugrep.git
cd ~/ghq/github.com/Genivia/ugrep
./build.sh
sudo make install
使い方
下記のように正規表現マッチングを行うことができます。
ug -Q