ターミナル UI の使い方

← 目次

ターミナル UI(TUI)はターミナルの中で動くので、SSH で接続したリモートサーバー上の表も閲覧できます。ヒストグラムを含め、GUI と同じ機能が使えます(散布図は二次元密度分布のみ)。

起動

tableskim data.csv          # グラフィカルな画面がない環境
tableskim -t data.csv       # ターミナル UI を強制する
tableskim-tui.exe data.csv  # Windows

グラフィカルな画面がないときは、自動的にターミナル UI で起動します(はじめに を参照)。表示できるのはコマンドラインで指定した 1 つのファイルだけです。q(または Ctrl+C)で終了します。

画面の構成

ターミナル UI

?(または F1)でいつでもキーの一覧を表示できます。

ヘルプ画面

移動と選択

キー動作
矢印キー、h j k lカーソルを移動
PgUp / PgDn、Ctrl+B / Ctrl+F1 ページ移動
g / G、Ctrl+Up / Ctrl+Down先頭行 / 最終行
Home / End、0 / $先頭列 / 最終列
Shift+矢印キー選択範囲を広げる
vカーソル移動による選択を開始 / 終了
Ctrl+Aすべて選択
Esc選択を解除(書き出し中・変換中は、その中止)
< / >列の幅を狭める / 広げる

マウスも使えます。セルをクリックするとカーソルが移動し、ダブルクリックでセルの内容をサイドバーに表示し、ホイールでスクロールし、シートタブのクリックでシートを切り替えます。

サイドバー

サイドバーに City 列の統計を表示したところ

ヒストグラム

グラフと Group By の結果の読み方は、グラフと集計 で例とともに説明しています。

B で、シートの代わりに現在の列のヒストグラムを表示します。タイトル行に集計内容の概要が表示され、各行が 1 本の棒(範囲、件数、割合)です。

Salary 列のヒストグラム

キー動作
↑ / ↓、k / j棒を選ぶ(正確な範囲が下部に表示される)
← / →、h / l前 / 次の列のヒストグラム
Enterシートを選んだ棒の行に絞り込む
Fフィルタを解除
Esc、B、qシートに戻る

GUI と同じく、数値は切りのよい幅の約 30 区間に、日付は日・月・年などの単位の区間に集計し、文字列の列は最頻値を表示します。Enter の後は残った行でヒストグラムを計算し直すので、段階的に絞り込めます。Esc で絞り込まれたシートに戻ります。

日付の列のヒストグラム

二次元密度分布

M で、シートの代わりに 2 つの列の関係を表示します。複数の列を選択しているときは、最初の列が横軸(X)、最後の列が縦軸(Y)です。そうでなければ GUI と同じく数値か日付を含む列を選び、カーソルのある列かそれに最も近い列を Y、その左で最も近い列を X にします。各マスは、X と Y の値がその範囲に入る行の数に応じて、濃い紫(少ない)から黄色(多い)までの色で塗られます。行のないマスは空白です。マス目の数はターミナルの大きさに合わせて決まります。最初は最も行の多いマスが選ばれ、最下行にその範囲と件数が表示されます。タイトル行には、GUI と同じく、描いた行のピアソンの相関係数 r、R²、回帰直線も表示されます。

2 つの数値の列の二次元密度分布

キー動作
矢印、h j k lマスを選ぶ
x / XX の列を次 / 前の列にする
y / YY の列を次 / 前の列にする
tX と Y を入れ替える
L色の目盛りを対数 / 線形に切り替える
Enterシートを選んだマスの行に絞り込む
Fフィルタを解除
Esc、M、qシートに戻る

GUI の 散布図 と同じく、Y は数値か日付である必要があります。色の表示には 256 色以上のターミナルが必要です。

X がテキストのときは、多い順に上位 30 個の値(と、残りをまとめた (other))にそれぞれ 1 行を割り当て、Y の値の 箱ひげ図 を共通の目盛りで描きます。ひげは ├──┤、第 1〜第 3 四分位数の箱は ███、中央値は ┃、外れ値は ∘ です。下の行に選んだカテゴリの数値を表示します。

City ごとの Salary の箱ひげ図

キー(箱ひげ図)動作
↑ / ↓、k / jカテゴリを選ぶ
b密度分布(カテゴリごとに 1 列)に切り替える。もう一度で戻る
Enterシートを選んだカテゴリに絞り込む

集計(Group By)

A で、現在のシートの行(表示どおりに並べ替え・絞り込んだもの)をいくつかの列の値ごとに数え、結果を Group By という新しいシートに表示します。GUI の 集計 と同じです。ダイアログに列が並び、選択中の列(またはカーソルのある列)にグループ化のチェックが付いています。

Group By ダイアログ

キー動作
↑ / ↓、k / j列と最後の行の間を移動する
g、Spaceその列でグループ化する(もう一度押すと解除)
aその列を要約する(もう一度押すと解除)
← / →、Space最後の行で関数を選び、オン / オフにする
Enter集計する
Esc集計せずに閉じる

関数は count(空でない値の数)、distinct、sum、mean、min、max、std dev です。グループ化した列と count(グループの行数)の後に、要約した列ごと・関数ごとの列が並びます。進捗はステータスバーに表示され、Esc で中止できます。シートはファイルを再読み込みしても残り、もう一度集計すると置き換わります。

並べ替え

o で現在の列で並べ替えます。押すたびに昇順、降順、ファイルの順序に戻る、の順に切り替わります。

フィルタ

チャートで選んだ範囲は Additional narrowing(追加の絞り込み)として別に保持され、通常の条件が OR の場合も、その条件全体に AND で適用されます。フィルタ編集画面の Ctrl+X で追加の絞り込みだけを解除できます。シートやチャートの F は通常の条件も含めてすべて解除します。さらに範囲を選ぶと、残った行を絞り込みます。

クイックフィルタ

セルの上で = を押すとその列が同じ値の行だけを、! を押すと違う値の行だけを残します。F でフィルタを解除します。

フィルタダイアログ

f でフィルタダイアログを開きます。GUI の Filter ペインと同じ種類のフィルタを編集できます。

フィルタダイアログ

キー動作
↑ / ↓行を移動(Match の行、各条件、「Add condition」)
Tab条件内の項目を移動:列、演算子、値
← / →列や演算子を変更。Match の行では all(AND)と any(OR)を切り替え
文字入力値を編集
Ctrl+N条件を追加
Ctrl+D条件を削除
Ctrl+U値を消去
Ctrl+Xチャートによる追加の絞り込みを解除
Enterフィルタを適用(「Add condition」の行では条件を追加)
Esc適用せずに閉じる

ステータスバーに、一致した行数と使用中のフィルタが表示されます。

フィルタを適用した表

演算子と値の比較方法は 並べ替え・フィルタ・検索・統計 で説明しています。

検索

/ で画面下部に検索プロンプトを開きます。文字列を入力して Enter を押します。プロンプトで Ctrl+R を押すと正規表現検索に切り替わります。n / N で次 / 前の一致箇所へ移動します。ステータスバーには検索語と一致番号(/watanabe 1/20)が表示されます。空の文字列で検索すると検索を解除します。

一致箇所の強調表示

指定した位置へ移動

Ctrl+G で、GUI と同様に行(120)、セル(B12 または R12C2)、列(列記号または列名)を指定して移動します。

列の非表示と固定

列の型と表示形式

列名の前の印は、GUI と同じく最初に読んだ 1,000 行から判断します(GUI を参照)。数値は #、日付・日時は @、真偽値は ? で、テキストや混在した列には付きません。

% で、現在の列(または選択した列)の値の表示方法を変えます。ダイアログには列の型も表示されます。

行← / →、Space
Thousands separatorオン / オフ:1234567.5 を 1,234,567.5 と表示する
Decimal places保存されているとおり、または小数点以下 0〜6 桁(丸める)
Date format2024-01-31、2024/01/31、01/31/2024、31/01/2024、2024年1月31日、Jan 31, 2024

↑ / ↓ で行を移動し、Delete で表示形式を元に戻し、Enter で適用、Esc で閉じます。変わるのは表示だけで、並べ替え、フィルタ、コピー、エクスポートは元の値を使います。

コピー

y または c で、選択範囲(選択がなければ現在のセル)をタブ区切りテキストとしてコピーします。

コピーには OSC 52 エスケープシーケンスを使うので、SSH 越しでも使えます。テキストは、ターミナルを動かしている手元のコンピューターのクリップボードに入ります。ターミナルが OSC 52 を許可している必要があります。tmux の中では set-clipboard を有効にしてください。

set -g set-clipboard on

シート

Tab / Shift+Tab(または ] / [)で次 / 前のシートに切り替えます。タブをクリックしても切り替えられます。

SQL の実行

DuckDB、SQLite、Parquet、JSON ファイルでは、: で SQL プロンプトを開きます。

SQL プロンプト

SQL の結果シート

詳しくは SQL の実行 を参照してください。

エクスポートと変換

進捗はステータスバーに表示され、Esc で中止できます(このとき Esc は選択を解除しません)。終わるまではファイルを開き直しません。r、H、#、E は待つよう表示し、自動再読み込みも待ちます。保存先のファイルがすでにあるときは Overwrite? (y/n)(上書きしますか)と尋ねます。詳しくは エクスポートと変換 を参照してください。

セルの編集

CSV / TSV と Excel ファイルのセルは、編集モードでだけ変更できます。I で編集モードを切り替え、編集モード中はステータスバーに EDIT と表示します。編集モードでは、Enter、i、F2、ダブルクリックでセルをステータス行で編集し、Delete で選択したセルを空にします。ターミナルに貼り付けると、タブ区切りテキストを選択したセルに入れます。u / Ctrl+R で元に戻す / やり直し、Ctrl+S で保存します。編集したセルは保存するまで緑色で表示し、ファイル名の前に * を付けます。保存していない変更が失われる操作(q、r、H、#、E、編集モードを抜ける)の前には確認します。y で保存、n で破棄、Esc で取り消しです。詳しくは セルの編集 を参照してください。

伸びていくファイルへの追従

T で、tail -f のようにファイルの末尾に追従します。ファイルを 1 秒ごとに確認し(Auto Revert のオン・オフにかかわらず)、行が増えるたびにカーソルを最後の行に移します。ステータスバーには follow と表示します。圧縮されていない CSV / TSV ファイル(UTF-8 か Shift_JIS)では追記された行だけを読み、書き込み途中の行は行末まで書かれてから表示します。それ以外のファイルや、追記ではなく書き直されたファイルは読み直します。もう一度 T を押すと追従をやめます。

その他の設定

キー動作
H先頭行:見出しの判定と、その逆(列名 / データ)を切り替える(CSV / TSV / Excel)
### で始まる行を読み飛ばす(VCF では既定でオン)
E文字コードを切り替える:UTF-8、UTF-16LE、UTF-16BE、Shift_JIS(CP932)
r再読み込み(ファイルを読み直す)
RAuto Revert(ファイルが変わったら読み直す)のオン / オフ
Tファイルの末尾に追従する(tail -f)のオン / オフ
eファイルをファイルブラウザーで表示する

大きな CSV / TSV ファイルの行が多くのメモリを使うと、GUI と同様にステータスバーで Continue reading? (y/n)(読み込みを続けますか)と尋ねます(対応ファイル形式 を参照)。

ログメッセージは画面に重なってしまうため、--log <ファイル> を指定したときだけ書き出します。

キー一覧

すべてのキーは キーボードショートカット を参照してください。