Help us understand the problem. What is going on with this article?

[おすすめ]ターミナルでの作業効率が爆上げするTUIツール5選

こんにちわ、ゴリラです。

普段、筆者は主にターミナルで仕事をしています。そこで作業効率化のためいくつかTUIツールを使っています。
今日は、個人的におすすめのTUIツールを5つ紹介していきます。

これらを導入することで、ターミナルでの作業効率が上がると思いますので、ぜひ導入して試してみてください。
また、こんな便利なツールがあるよって方いましたら、ぜひコメントをくださいー

  • 2019/11/28 追記
    • ffのブックマーク機能
  • 2-19/11/29 追記
    • ffの入力補完を追記

Git

lazygitというTUIツールを使っています。

lazygit機能が豊富なので紹介しようとすると長くになってしまうため、筆者が普段使っていて便利だなと思う機能を紹介します。
詳しく知りたい方はREADMEもしくは作者本人によるおすすめの15機能をまとめた動画を見てください。

未コミットファイルの差分

lazygitを起動するとFilesに未コミットのファイルが表示されます。Unstaged Changesに選択したファイルの差分が表示されます。ファイルの選択はjkもしくはで、差分をスクロールする時はCTRL-dCTRL-uを使用します。

image.png

ちなみに、変更を取り消すときはdを使用します。未コミットなので消したら消えるのでご注意ください。

コミットの差分

Commitでコミットを選択するとPatchにコミットの差分を確認できます。
image.png

コミット済みファイルの差分

CommitでEnterを押下するとCommit filesが表示されます。ファイルごとに差分を確認したい時に便利です。ちなみにこの機能は筆者が実装しました。便利だなと思いました。

image.png

ステージング

FilesSpaceを押下すると選択したファイルをステージングできます。
aで全ファイルをステージングできます。ステージングしたら色が変わるのでわかりやすいですね。

image.png

行単位のステージング

FilesEnterを押下すると変更した行単位のステージングができます。選択した行でSpaceを押下するとStaged Changesに変更が追加されます。Tabを押下してStaged Changesに移動してdを押下するとステージングした変更を戻すことができます。とても便利です。

image.png

コミット

Filescを押下するとコミットメッセージを入力するパネルが表示されるのでそこでメッセージを入力したEnterを押下するとコミットできます。
より詳細なコミットメッセージを書きたいことが多いと思うので、Cを押下すると$EDITORに設定されているエディタを起動してコミットできます。

image.png

コミット間の差分

CommitsSpaceを押下するとコミット差分モードに切り替わり、次に選択したコミットとの差分を確認することができます。ちなみにこれも筆者が実装しました。便利だなと思いました。

image.png

コミットにステージングファイルを追加

FilesAを押下するとステージングしたファイルをコミットに追加することができます。
EscもしくはCTRL-[で操作をキャンセルできます。

image.png

コミットメッセージの変更

CommitsRでエディタを使ってコミットのメッセージを変更できます。

image.png

コミットの取り消し

Commitsgで選択したコミットまでリセットできます。soft、mixed、hardを選択できます。

image.png

ブランチ作成

Branchesnを押下すると新しいブランチを作成できます。

image.png

lazygitまとめ

ざっくりですが、いくつか機能を紹介しました。
他にもたくさんの機能がありますが、筆者もそこまで使いこなせているわけではないので、ぜひ読者自身で触ってみてください。

Docker

最近開発ではdockerを使う方が多いのではないのでしょうか。筆者もその一人です。
dockerは基本コマンドで操作しますが、より簡単に操作できるTUIツールdocuiを以前作りました。より詳細な解説はこちらの記事を参考していただくとして、ここでは軽く紹介します。

イメージ取得

image listpでイメージをpullすることができます。これはdocker pullと同様な動きになります。基本操作は非同期で動くので、pullしている間にコンテナを起動したりすることもできます。便利ですね。

image.png

イメージの検索

image listfでイメージをDockerHubから検索できます。search resultpを押下すると選択したイメージをpullできます。
image.png

コンテナの作成

image listcでイメージからコンテナを作成できます。docker createに相当します。
image.png

コンテナの起動・停止

container listuでコンテナを起動、sでコンテナを停止できます。

image.png

コンテナのアタッチ

CTRL-eでコンテナにアタッチすることができます。これはdocker execと同様な動きになります。

image.png

フィルターリング

全パネル/でフィルターリングできます。絞り込みしてコンテナ、イメージを操作するときに便利です。

image.png

docuiのまとめ

docuiを使用するとイメージ、コンテナの操作が楽になります。ぜひ使ってみてください。
ちなみに、最近筆者はdocker.vimというVimのプラグインを作成してから、そちらを使うことが多くなりました。これはVim上でdocuiと同等なことができるプラグインです。Vimmerの方はぜひ試してみてください。

JSON

JSONといえば、Web APIですね。システム間のデータ連携にJSONを使うことが一般的かと思います。そしてJSONといえばjqというコマンドも有名かと思います。
ただ、jqはインタラクティブにJSONを操作できないので、筆者はtsonというTUIツールを作りました。

tsonはJSONをツリー状にしてノードを操作することができます。主機能を紹介していきます。

起動方法

3種類の起動方法があります。
1. tson < test.jsonでファイルから読み込む
2. curl https://jsonplaceholder.typicode.com/todos/1 | tsonでパイプラインから読み込む
3. tson -url https://jsonplaceholder.typicode.com/todos/1でURLから読み込む

起動すると次の画面になります。

image.png

画像の場合のJSONは次になります。

{
  "userId": 1,
  "id": 1,
  "title": "delectus aut autem",
  "completed": false
}

値を折りたたむ

Hで値ノードを折りたたむことができます。どんなキーがあるのかぱっと確認する時に便利です。

image.png

フィルターリング

fもしくは/でキーと値を絞り込むことができます。特定のキーの値を確認するときに便利です。

image.png

編集

Enterでノードの値を編集できます。
image.png

簡易的な編集の場合はEnterで十分ですが、ガッツリ編集したいこともあると思うので、そういうときはe$EDITORに設定されているエディタを使って編集できます。

image.png

エディタ終了後、tsonに戻りその結果が反映されます。

保存

現在のツリー状態をJSONファイルに出力できます。レスポンスの情報を保存するときに使えます。

image.png

組み込み

tsonを使用して、次のように既存アプリケーションに組み込むことができます。
ご自身のアプリケーションでtsonのインターフェイスを使用して編集などを行うことができます。そしてtsonを終了すると、その時点のJSONをバイト列で受け取ることができます。

package main

import (
    "fmt"

    tson "github.com/skanehira/tson/lib"
)

func main() {
    j := []byte(`{"name":"gorilla"}`)

    // tson.Edit([]byte) will return []byte, error
    res, err := tson.Edit(j)
    if err != nil {
        fmt.Println(err)
        return
    }

    fmt.Println(string(res))
}

自分のツールでtsonのインターフェイスを使いたい方いましたら、ぜひ試してみてください。

tsonまとめ

シンプルなツールですが、大きなJSONを操作するときに特に便利かと思います。ぜひ使ってみてください。

ファイラー

筆者は普段mkdircpmvといった操作を行うことが多いのですが、ファイルパス入力が意外とめんどくさいなと感じています。補完があるとはいえ、もっとインタラクティブに操作できたらいいなぁと思ってffというTUIツールを作りました。
あ、某ゲームではないです。

入力補完

パスを入力する時に、自動でファイルパスを補完してくれます。便利ですね。
image.png

プレビュー

-previewオプションをつけるとプレビューパネルで、ファイルの中身、ディレクトリの中身を見れます。

image.png

CTRL-j/CTRL-kでプレビューをスクロールできます。

新規作成

nでファイル、mでディレクトリを新規作成できます。

image.png

image.png

コピー

yでファイル、ディレクトリをマーク(色が変わります)して、pでマークした対象をカレントディレクトリにコピーできます。

image.png

名前変更

rでファイル、ディレクトリの名前を変更できます。
image.png

編集

e$EDITORに設定されているエディタを使ってファイルを編集できます。

ブックマーク

bで選択したディレクトリをブックマークする事ができます。
Bでブックマーク一覧を表示して、Ctrl-gでブックマークしたディレクトリに移動できます。

image.png

Vimで使う

Vimにはターミナル機能があるので、それを使用してffを動かすことができます。
Vimで:vert term ++close ffで次の画像のように使用することができます。プラグインを導入しなくてもVimを終了することなくファイル、ディレクトリの操作を行うこともできます。便利ですね。

image.png

ffのまとめ

まだ作ったばかりのツールなので、これからもう少し機能を追加していきます。
例えば、複数の対象をマークする機能、シェルコマンドを実行する機能を実装する予定です。

プロセスビュアー

普段ツールを作ってると、バグって固まってしまうことがあり、プロセスを手軽にkillするツールほしいなと思ってpstというTUIツールを作りました。

どうせならプロセスの情報を色々見れたらいいなと思い、プロセス環境変数といった情報を表示できるようにしました。
プロセスの情報を取得するのにpslsofの外部コマンドを使用しています。

フィルターリング

プロセス名をフィルターリングできます。

image.png

プロセスツリー

processesで選択したプロセスにぶら下がっている子プロセスをprocess treeで確認できます。

image.png

プロセスkill

processesもしくはprocess treeKで選択したプロセスをkillできます。

image.png

pstまとめ

pstはプロセスモニターというより、プロセスビューアに近いです。なぜならプロセス情報を非同期で更新していないからです。理由はツール自体を重くしたくないし、killする対象を都度検索すればいいと考えているからです。
不便だと思ったら改善するかもしれません。

まとめ

一通り、筆者が普段使っているTUIツールを紹介しました。いかがだったでしょうか。
少しでもみなさんの作業効率があがると嬉しいです。

また、気が向いたらこうったTUIツールの記事を書こうと思います。
ではではー

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away