ターミナル UI(TUI)はターミナルの中で動くので、SSH で接続したリモートサーバー上の表も閲覧できます。ヒストグラムを含め、GUI と同じ機能が使えます(散布図は二次元密度分布のみ)。
tableskim data.csv # グラフィカルな画面がない環境 tableskim -t data.csv # ターミナル UI を強制する tableskim-tui.exe data.csv # Windows
グラフィカルな画面がないときは、自動的にターミナル UI で起動します(はじめに を参照)。表示できるのはコマンドラインで指定した 1 つのファイルだけです。q(または Ctrl+C)で終了します。

# は数値、@ は日付、? は真偽値(列の型と表示形式 を参照)。
R1C1)、メッセージ、行数と列数、有効なオプション(header、auto-revert、フィルタ、検索)が表示されます。メッセージがないときは、よく使うキー(/ search f filter o sort …、編集モードでは Enter edit u undo ^S save …)を、収まるだけ表示します。
?(または F1)でいつでもキーの一覧を表示できます。

| キー | 動作 |
|---|---|
矢印キー、h j k l | カーソルを移動 |
PgUp / PgDn、Ctrl+B / Ctrl+F | 1 ページ移動 |
g / G、Ctrl+Up / Ctrl+Down | 先頭行 / 最終行 |
Home / End、0 / $ | 先頭列 / 最終列 |
Shift+矢印キー | 選択範囲を広げる |
v | カーソル移動による選択を開始 / 終了 |
Ctrl+A | すべて選択 |
Esc | 選択を解除(書き出し中・変換中は、その中止) |
< / > | 列の幅を狭める / 広げる |
マウスも使えます。セルをクリックするとカーソルが移動し、ダブルクリックでセルの内容をサイドバーに表示し、ホイールでスクロールし、シートタブのクリックでシートを切り替えます。
Enter(またはダブルクリック)で、現在のセルの値全体をサイドバーに表示します。長い文字列を読むのに便利です。
S で現在の列の統計を表示します。行数、空のセル数、異なる値の数、最小値と最大値(数値なら合計、平均、標準偏差も)、最頻値です。もう一度 S を押すとセルの表示に戻ります。
s でサイドバーを表示・非表示にします。

グラフと Group By の結果の読み方は、グラフと集計 で例とともに説明しています。
B で、シートの代わりに現在の列のヒストグラムを表示します。タイトル行に集計内容の概要が表示され、各行が 1 本の棒(範囲、件数、割合)です。

| キー | 動作 |
|---|---|
↑ / ↓、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²、回帰直線も表示されます。

| キー | 動作 |
|---|---|
矢印、h j k l | マスを選ぶ |
x / X | X の列を次 / 前の列にする |
y / Y | Y の列を次 / 前の列にする |
t | X と Y を入れ替える |
L | 色の目盛りを対数 / 線形に切り替える |
Enter | シートを選んだマスの行に絞り込む |
F | フィルタを解除 |
Esc、M、q | シートに戻る |
GUI の 散布図 と同じく、Y は数値か日付である必要があります。色の表示には 256 色以上のターミナルが必要です。
X がテキストのときは、多い順に上位 30 個の値(と、残りをまとめた (other))にそれぞれ 1 行を割り当て、Y の値の 箱ひげ図 を共通の目盛りで描きます。ひげは ├──┤、第 1〜第 3 四分位数の箱は ███、中央値は ┃、外れ値は ∘ です。下の行に選んだカテゴリの数値を表示します。

| キー(箱ひげ図) | 動作 |
|---|---|
↑ / ↓、k / j | カテゴリを選ぶ |
b | 密度分布(カテゴリごとに 1 列)に切り替える。もう一度で戻る |
Enter | シートを選んだカテゴリに絞り込む |
A で、現在のシートの行(表示どおりに並べ替え・絞り込んだもの)をいくつかの列の値ごとに数え、結果を Group By という新しいシートに表示します。GUI の 集計 と同じです。ダイアログに列が並び、選択中の列(またはカーソルのある列)にグループ化のチェックが付いています。

| キー | 動作 |
|---|---|
↑ / ↓、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)、列(列記号または列名)を指定して移動します。
x で現在の列(または選択した列)を隠し、X ですべての列を再び表示します。
| でカーソルのある列までを固定し、横にスクロールしても動かないようにします。もう一度 | を押すと解除します。
列名の前の印は、GUI と同じく最初に読んだ 1,000 行から判断します(GUI を参照)。数値は #、日付・日時は @、真偽値は ? で、テキストや混在した列には付きません。
% で、現在の列(または選択した列)の値の表示方法を変えます。ダイアログには列の型も表示されます。
| 行 | ← / →、Space |
|---|---|
| Thousands separator | オン / オフ:1234567.5 を 1,234,567.5 と表示する |
| Decimal places | 保存されているとおり、または小数点以下 0〜6 桁(丸める) |
| Date format | 2024-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(または ] / [)で次 / 前のシートに切り替えます。タブをクリックしても切り替えられます。
DuckDB、SQLite、Parquet、JSON ファイルでは、: で SQL プロンプトを開きます。

Enter でクエリを実行します。結果は SQL Result シートに表示されます。
Up / Down で以前に実行した SQL を呼び出します。
Tab でテーブル名、列名、キーワードを補完します。
Esc で取り消します。

詳しくは SQL の実行 を参照してください。
w で現在のシートを表示どおり(並べ替え・フィルタ適用後、非表示の列を除く)にエクスポートします。プロンプトにファイル名の候補が表示され、拡張子(.csv、.tsv、.xlsx、.parquet)で形式が決まります。
P / D でテキストファイルを Parquet / DuckDB に変換して元のファイルと同じ場所に保存し、変換結果を開きます。
進捗はステータスバーに表示され、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 | 再読み込み(ファイルを読み直す) |
R | Auto Revert(ファイルが変わったら読み直す)のオン / オフ |
T | ファイルの末尾に追従する(tail -f)のオン / オフ |
e | ファイルをファイルブラウザーで表示する |
大きな CSV / TSV ファイルの行が多くのメモリを使うと、GUI と同様にステータスバーで Continue reading? (y/n)(読み込みを続けますか)と尋ねます(対応ファイル形式 を参照)。
ログメッセージは画面に重なってしまうため、--log <ファイル> を指定したときだけ書き出します。
すべてのキーは キーボードショートカット を参照してください。