こんにちわ、ゴリラです。
普段、筆者は主にターミナルで仕事をしています。そこで作業効率化のためいくつかTUIツールを使っています。
今日は、個人的におすすめのTUIツールを5つ紹介していきます。
これらを導入することで、ターミナルでの作業効率が上がると思いますので、ぜひ導入して試してみてください。
また、こんな便利なツールがあるよって方いましたら、ぜひコメントをくださいー
- 2019/11/28 追記
- ffのブックマーク機能
- 2-19/11/29 追記
- ffの入力補完を追記
Git
lazygitというTUIツールを使っています。
lazygit
機能が豊富なので紹介しようとすると長くになってしまうため、筆者が普段使っていて便利だなと思う機能を紹介します。
詳しく知りたい方はREADMEもしくは作者本人によるおすすめの15機能をまとめた動画を見てください。
未コミットファイルの差分
lazygit
を起動するとFiles
に未コミットのファイルが表示されます。Unstaged Changes
に選択したファイルの差分が表示されます。ファイルの選択はj
とk
もしくは↓
と↑
で、差分をスクロールする時はCTRL-d
、CTRL-u
を使用します。
ちなみに、変更を取り消すときはd
を使用します。未コミットなので消したら消えるのでご注意ください。
コミットの差分
Commit
でコミットを選択するとPatch
にコミットの差分を確認できます。
コミット済みファイルの差分
Commit
でEnterを押下するとCommit files
が表示されます。ファイルごとに差分を確認したい時に便利です。ちなみにこの機能は筆者が実装しました。便利だなと思いました。
ステージング
Files
でSpace
を押下すると選択したファイルをステージングできます。
a
で全ファイルをステージングできます。ステージングしたら色が変わるのでわかりやすいですね。
行単位のステージング
Files
でEnter
を押下すると変更した行単位のステージングができます。選択した行でSpace
を押下するとStaged Changes
に変更が追加されます。Tab
を押下してStaged Changes
に移動してd
を押下するとステージングした変更を戻すことができます。とても便利です。
コミット
Files
でc
を押下するとコミットメッセージを入力するパネルが表示されるのでそこでメッセージを入力したEnter
を押下するとコミットできます。
より詳細なコミットメッセージを書きたいことが多いと思うので、C
を押下すると$EDITOR
に設定されているエディタを起動してコミットできます。
コミット間の差分
Commits
でSpace
を押下するとコミット差分モードに切り替わり、次に選択したコミットとの差分を確認することができます。ちなみにこれも筆者が実装しました。便利だなと思いました。
コミットにステージングファイルを追加
Files
でA
を押下するとステージングしたファイルをコミットに追加することができます。
Esc
もしくはCTRL-[
で操作をキャンセルできます。
コミットメッセージの変更
Commits
でR
でエディタを使ってコミットのメッセージを変更できます。
コミットの取り消し
Commits
でg
で選択したコミットまでリセットできます。soft、mixed、hardを選択できます。
ブランチ作成
Branches
でn
を押下すると新しいブランチを作成できます。
lazygitまとめ
ざっくりですが、いくつか機能を紹介しました。
他にもたくさんの機能がありますが、筆者もそこまで使いこなせているわけではないので、ぜひ読者自身で触ってみてください。
Docker
最近開発ではdockerを使う方が多いのではないのでしょうか。筆者もその一人です。
dockerは基本コマンドで操作しますが、より簡単に操作できるTUIツールdocuiを以前作りました。より詳細な解説はこちらの記事を参考していただくとして、ここでは軽く紹介します。
イメージ取得
image list
でp
でイメージをpullすることができます。これはdocker pull
と同様な動きになります。基本操作は非同期で動くので、pullしている間にコンテナを起動したりすることもできます。便利ですね。
イメージの検索
image list
でf
でイメージをDockerHubから検索できます。search result
でp
を押下すると選択したイメージをpullできます。
コンテナの作成
image list
でc
でイメージからコンテナを作成できます。docker create
に相当します。
コンテナの起動・停止
container list
でu
でコンテナを起動、s
でコンテナを停止できます。
コンテナのアタッチ
CTRL-e
でコンテナにアタッチすることができます。これはdocker exec
と同様な動きになります。
フィルターリング
全パネル/
でフィルターリングできます。絞り込みしてコンテナ、イメージを操作するときに便利です。
docuiのまとめ
docuiを使用するとイメージ、コンテナの操作が楽になります。ぜひ使ってみてください。
ちなみに、最近筆者はdocker.vimというVimのプラグインを作成してから、そちらを使うことが多くなりました。これはVim上でdocuiと同等なことができるプラグインです。Vimmerの方はぜひ試してみてください。
JSON
JSONといえば、Web APIですね。システム間のデータ連携にJSONを使うことが一般的かと思います。そしてJSONといえばjq
というコマンドも有名かと思います。
ただ、jq
はインタラクティブにJSONを操作できないので、筆者はtsonというTUIツールを作りました。
tson
はJSONをツリー状にしてノードを操作することができます。主機能を紹介していきます。
起動方法
3種類の起動方法があります。
-
tson < test.json
でファイルから読み込む -
curl https://jsonplaceholder.typicode.com/todos/1 | tson
でパイプラインから読み込む -
tson -url https://jsonplaceholder.typicode.com/todos/1
でURLから読み込む
起動すると次の画面になります。
画像の場合のJSONは次になります。
{
"userId": 1,
"id": 1,
"title": "delectus aut autem",
"completed": false
}
値を折りたたむ
H
で値ノードを折りたたむことができます。どんなキーがあるのかぱっと確認する時に便利です。
フィルターリング
f
もしくは/
でキーと値を絞り込むことができます。特定のキーの値を確認するときに便利です。
編集
簡易的な編集の場合はEnter
で十分ですが、ガッツリ編集したいこともあると思うので、そういうときはe
で$EDITOR
に設定されているエディタを使って編集できます。
エディタ終了後、tson
に戻りその結果が反映されます。
保存
現在のツリー状態をJSONファイルに出力できます。レスポンスの情報を保存するときに使えます。
組み込み
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を操作するときに特に便利かと思います。ぜひ使ってみてください。
ファイラー
筆者は普段mkdir
やcp
、mv
といった操作を行うことが多いのですが、ファイルパス入力が意外とめんどくさいなと感じています。補完があるとはいえ、もっとインタラクティブに操作できたらいいなぁと思ってffというTUIツールを作りました。
あ、某ゲームではないです。
入力補完
パスを入力する時に、自動でファイルパスを補完してくれます。便利ですね。
プレビュー
-preview
オプションをつけるとプレビューパネルで、ファイルの中身、ディレクトリの中身を見れます。
CTRL-j
/CTRL-k
でプレビューをスクロールできます。
新規作成
n
でファイル、m
でディレクトリを新規作成できます。
コピー
y
でファイル、ディレクトリをマーク(色が変わります)して、p
でマークした対象をカレントディレクトリにコピーできます。
名前変更
編集
e
で$EDITOR
に設定されているエディタを使ってファイルを編集できます。
ブックマーク
b
で選択したディレクトリをブックマークする事ができます。
B
でブックマーク一覧を表示して、Ctrl-g
でブックマークしたディレクトリに移動できます。
Vimで使う
Vimにはターミナル機能があるので、それを使用してff
を動かすことができます。
Vimで:vert term ++close ff
で次の画像のように使用することができます。プラグインを導入しなくてもVimを終了することなくファイル、ディレクトリの操作を行うこともできます。便利ですね。
ffのまとめ
まだ作ったばかりのツールなので、これからもう少し機能を追加していきます。
例えば、複数の対象をマークする機能、シェルコマンドを実行する機能を実装する予定です。
プロセスビュアー
普段ツールを作ってると、バグって固まってしまうことがあり、プロセスを手軽にkillするツールほしいなと思ってpstというTUIツールを作りました。
どうせならプロセスの情報を色々見れたらいいなと思い、プロセス環境変数といった情報を表示できるようにしました。
プロセスの情報を取得するのにps
とlsof
の外部コマンドを使用しています。
フィルターリング
プロセス名をフィルターリングできます。
プロセスツリー
processes
で選択したプロセスにぶら下がっている子プロセスをprocess tree
で確認できます。
プロセスkill
processes
もしくはprocess tree
でK
で選択したプロセスをkillできます。
pstまとめ
pst
はプロセスモニターというより、プロセスビューアに近いです。なぜならプロセス情報を非同期で更新していないからです。理由はツール自体を重くしたくないし、killする対象を都度検索すればいいと考えているからです。
不便だと思ったら改善するかもしれません。
まとめ
一通り、筆者が普段使っているTUIツールを紹介しました。いかがだったでしょうか。
少しでもみなさんの作業効率があがると嬉しいです。
また、気が向いたらこうったTUIツールの記事を書こうと思います。
ではではー