datui-cli 0.4.1

Shared CLI definitions for datui (Args, CompressionFormat)
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
.\" Generated by gen_docs from crates/datui-cli. Do not edit.
.TH DATUI\-KEYS 7 2026-10-06 "datui 0.4.1" "Miscellaneous"
.nr HY 0
.ds AD l
.SH NAME
datui\-keys \- the keys of every datui screen
.SH DESCRIPTION
\fB?\fR or \fBF1\fR on any screen shows that screen's keys, grouped by task: \fB/\fR narrows them to those whose text matches, and Enter closes the help and presses the key on the line. This page lists every screen's keys, with the longer descriptions.
.SH KEYS
.SS "Every screen"
.TP
\fB? / F1\fR
This screen's keys. In a text field ? types, and F1 opens the help
.TP
\fBCtrl+O\fR
The home screen, on the dataset left, its filter kept and selected (typing replaces it); abandons a load
.TP
\fBCtrl+Q / Ctrl+C\fR
Quit from anywhere; Ctrl+C quits from a text field too, where Alt+W copies
.TP
\fBClick a field\fR
Focus a form's field and act as Space: a checkbox flips, a choice steps, a picker opens, a button runs; a text field takes the cursor. A row of a list (a sort, a filter, a column) takes focus on the first click and acts on the second. A click on a picker's line chooses it, on a tab switches to it, and on a key in the footer presses it. A click outside a dialog does nothing. The mouse is the terminal's with display.mouse = false (or \-\-mouse false); in most terminals Shift+drag selects text either way
.TP
\fBRight\-click a field\fR
Step a choice back, as \(<- does; else focus it
.SS "Help"
.TP
\fB\(ua / \(da (j/k)\fR
Move between the keys
.TP
\fBEnter\fR
Close the help and press the key on the line, where help was opened
.TP
\fB/\fR
Narrow to the keys whose text matches
.TP
\fBEsc\fR
Clear the filter, then close
.SS "Table"
Where a dataset opens.
.PP
\fIExplore\fR
.TP
\fB\(ua / \(da (j/k)\fR
Move the row cursor
.TP
\fB\(<- / \(-> (h/l)\fR
Move the column cursor, frozen columns included; the columns scroll only when it would leave the screen
.TP
\fBShift+\(<- / Shift+\(->\fR
A page of columns left or right, the cursor on the page's first column
.TP
\fB{ / }\fR
First column, last column
.TP
\fBPgUp / PgDn\fR
A page up or down (Ctrl+B / Ctrl+F too)
.TP
\fBCtrl+D / Ctrl+U\fR
Half a page down or up
.TP
\fBHome / End\fR
First or last row (G = End)
.TP
\fB:\fR
The command line: digits go to that row (the prefix says row:), anything else runs as SQL or q, as the prefix says; Ctrl+T switches. With a query in effect it opens on the query's text
.TP
\fBg\fR
Go to a column by name
.TP
\fB/ (f)\fR
Find text, a regex, or letters in order in the view; matches on screen light up as you type, and Enter takes the cursor, column cursor and all, to the first at or after its row. f opens it too
.TP
\fBn / N\fR
Next / previous match from the cursor's cell, wrapping round the view
.TP
\fBEnter\fR
On a row of a by query or a SQL GROUP BY, drill down to its rows (Esc comes back); elsewhere, inspect the row
.TP
\fBSpace\fR
Inspect the row: every field, each value whole and exact (Esc or Space closes)
.PP
\fIShape\fR
.TP
\fB[ / ]\fR
Sort by the cursor's column, [ ascending and ] descending, replacing the sort in effect; the same key again on that column removes it. The s sidebar adds secondary sorts
.TP
\fBs\fR
Open the Sort & Filter sidebar (tabs: Columns, Filters), on the cursor's column
.TP
\fB+ / \-\fR
Filter on the cursor's cell: + keeps the rows with its value, \- drops them (a null cell: the nulls). Each adds a filter to the Sort & Filter sidebar, joined with "and"; the value is the cell's exactly as stored
.TP
\fBr\fR
Reverse sort order (sorted columns carry a direction mark in the header); with no sort, reverse the row order
.TP
\fBH / L\fR
Move the cursor's column one place left or right, the cursor with it; a frozen column moves among the frozen ones. R puts the order back
.TP
\fBp\fR
Pivot or melt
.TP
\fBS\fR
Draw a sample of the source into memory: the step under the query, filters and sort, which then run over it. The rows show as they arrive (Esc stops, keeping them); the footer says sample 100,000 of 36.8M. Analysis, charts and export read the sample. S again edits it; Method No sample, or R, takes it away
.TP
\fBR\fR
Reset table: clear the sample, query, filters, sort, column order, hidden columns and widths, frozen columns, pivot/melt, drill-down and the applied view
.PP
\fIAnalyze\fR
.TP
\fBF\fR
Value counts of the cursor's column: each value's rows, percent and a bar, with a summary
.TP
\fBa\fR
Open Analysis. In a Data Quality evidence drill a is disabled; Esc returns to the observation
.TP
\fBc\fR
Chart the view
.TP
\fBi\fR
Open the Info panel (tabs: Schema, Resources, Partitions, Notes). H on its Schema tab reads a CSV's first row as data, or as column names
.PP
\fIOutput\fR
.TP
\fBe\fR
Export the view to a file
.TP
\fBy\fR
Copy to the clipboard (cell, row, view or table); a cell is the cursor's
.TP
\fBv\fR
The saved views list
.TP
\fBV\fR
Apply the best-matching view (or open the list)
.PP
\fIDisplay\fR
.TP
\fB#\fR
Row numbers on or off: each row's place in the source, kept through a sort or a filter (a text file's line numbers). On for text and logs; display.row_numbers sets it
.TP
\fB,\fR
Number formatting (digit grouping) on or off
.TP
\fBD\fR
The type row under the headers on or off
.TP
\fB< / >\fR
The cursor's column 4 cells narrower or wider
.TP
\fB= / w\fR
Fit the cursor's column to the rows on screen; w puts it back to automatic width
.TP
\fBb\fR
A binary file read through a format spec: read it again with another spec. Clears the query, filters and sort
.TP
\fBT\fR
A file of several tables (a workbook's worksheets, a database's tables, a format spec's record types, a Hugging Face cache's splits): pick another to open in place of this one, as \-\-table names it. Clears the query, filters and sort; a saved view for the table applies. On a file of one table, says so
.TP
\fBt\fR
Follow the file as it grows (CSV, TSV, PSV, NDJSON). Reads it again, so the query, filters and sort are cleared; while following, t pauses and resumes, and Esc stops
.PP
\fIGo\fR
.TP
\fBq\fR
Back to the home screen when the dataset was opened from it; otherwise quit
.TP
\fBQ\fR
Quit
.TP
\fBEsc\fR
Leave a drill-down; stop a find, a sample being drawn (its rows so far stay) or a follow
.PP
\fIMouse\fR
.TP
\fBClick\fR
The cursor to the cell; on a header, its column
.TP
\fBDouble\-click\fR
Enter on the row
.TP
\fBDouble\-click a header\fR
Double-click a column's header to sort by it, as [ and ] do: ascending, then descending, then back to no sort, replacing the sort in effect
.TP
\fBDouble\-click a header's edge\fR
Double-click the gap right of a column's header to fit the column to the rows on screen, as = does; the column cursor moves to it, and nothing is sorted
.TP
\fBWheel\fR
\(ua / \(da, three rows a notch; the same in help, the inspector and the sidebars
.TP
\fBShift+wheel\fR
\(<- / \(->, the column cursor (a sideways wheel too)
.TP
\fBClick a key\fR
Press a key the footer shows; a click on the filters and sort presses s, on query presses :
.TP
\fBDrag a header\fR
Drag a column's header onto another column to move it there, as H / L do; a rule on the header marks where it lands
.TP
\fBDrag a header's edge\fR
Drag the gap right of a column's header to set its width by hand, as < / > do, from 4 to 240 cells
.TP
\fBRight\-click\fR
Right-click a cell: the cursor goes there and a menu lists the keys that act on it (+, \-, F, [, ], y, Space), each with its key. \(ua / \(da and Enter, or a click, run a line as its key does; Esc or a click elsewhere closes it
.SS "Home screen"
\fBdatui\fR with no path, or \fBCtrl\fR+\fBO\fR from anywhere.
.PP
\fIExplore\fR
.TP
\fB\(ua / \(da\fR
Move the selection (Ctrl+P / Ctrl+N too)
.TP
\fBCtrl+\(ua / Ctrl+\(da\fR
Previous or next section
.TP
\fBPgUp / PgDn\fR
A screenful, stopping at the first and last
.TP
\fBHome / End\fR
The first or last row. The filter has no cursor to move: it is edited at its end
.TP
\fB\(<- / \(->\fR
Fold or unfold a section; \(-> on a directory or a file of tables goes inside it, and on a file a format spec reads as record types lists them, one row each
.TP
\fBSpace\fR
While the filter is empty: fold or unfold the section header under the cursor. With a filter typed, it types
.TP
\fBTab\fR
Cycle the sort; the footer names the order in effect when it has room
.PP
\fIGo\fR
.TP
\fBEnter\fR
What the footer says on this row: "Open all" reads a whole directory as one table, "Inside" steps into it, "Open" loads a file, "Look" finds out first. A catalog bookmark, indented under its dataset, opens whole. On a section header, fold or unfold it; on the More row, show the rest; on the hidden-files row, show them
.TP
\fBBackspace\fR
Delete a filter character; on an empty filter, up a level (from a bucket, back to its cloud source; from the top of a catalog's remote dataset, back here)
.TP
\fBEsc\fR
Back out one layer: the path prompt, the filter (onto the first dataset), the directory (back to the row it was entered from), then to the open table
.PP
\fIFind\fR
.TP
\fB(type)\fR
Narrow by name or column; fuzzy, so "sal" finds "sales". What you open often ranks first. Typing also searches below the directory you are inside and the listed bucket names; matches appear under "Found"
.TP
\fB~\fR
While the filter is empty: type a path or URL by hand. The list shows the directory being typed, narrowed by the name after the last /. The prompt is a plain editor: characters, Backspace, Ctrl+U clears, The first name that matches is picked. Tab completes the one name left or what the names share, or a name picked further down; \(ua / \(da pick a name, and \(ua from the first takes the path as typed; Enter opens the picked name or the typed path: a file opens, a directory is gone inside; Esc closes. s3://, gs:// and az:// complete from buckets and prefixes already known. With a filter typed, ~ types into it
.TP
\fBCtrl+U\fR
Clear the filter or path input
.TP
\fBCtrl+R\fR
List again what is on screen
.PP
\fIManage\fR
.TP
\fBCtrl+A\fR
Show or hide files datui cannot read; inside a SQLite database, its internal tables
.TP
\fBCtrl+X\fR
Show the local file under the cursor as bytes, in the hex view, whatever datui would read it as
.TP
\fBCtrl+D\fR
Add the dataset or directory under the cursor to catalog.toml, listed under My datasets; on a row from catalog.toml, forget it. A heading stands for the directory it lists. Only catalog.toml is written; another catalog is hidden with home.hide
.TP
\fBCtrl+E\fR
Open the Documentation view of a catalog row, of a place inside one, or of a file whose format spec documents it: description, publisher, license, links, record types, columns with units and value legends, bookmarks. A catalog's description, link and column notes stand over the spec's. Ctrl+E here is not readline's end of line: the filter is edited at its end
.TP
\fBDelete\fR
Forget the highlighted recent entry, or a whole place after confirming, or a row from catalog.toml, or hide a cloud source. On the Example datasets heading, hide them until datui cache clear, after confirming
.TP
\fBShift+Delete\fR
Forget every recent entry, after confirming
.PP
\fIMouse\fR
.TP
\fBClick\fR
Select the row; double-click is Enter
.TP
\fBWheel\fR
Move the selection three rows, stopping at the ends
.SS "Documentation"
\fBCtrl\fR+\fBE\fR on the home screen, on a catalog row or a file a format spec documents.
.PP
\fIRead\fR
.TP
\fB\(ua / \(da (j/k)\fR
Move the cursor a line
.TP
\fBPgUp / PgDn\fR
A page
.TP
\fBg / G\fR
The first or last line (Home / End too)
.TP
\fBEnter / Space / \(->\fR
Open or close the value legend of the column under the cursor: a catalog's values, or a spec's enum
.TP
\fBo\fR
Open the link on the cursor's line in the system browser. Only http and https links open, and only after a question showing the whole URL (Enter opens, Esc does not). Off over SSH or without a display: y copies the link instead
.TP
\fBy\fR
Copy the link or value on the cursor's line, whole, however it is cut on screen
.TP
\fBEsc / q / \(<-\fR
Back to the home screen
.SS "Command line"
\fB:\fR at the table.
.PP
\fIRun\fR
.TP
\fB(digits)\fR
Digits alone go to that row, and the prefix says row: (:0 Enter is the top)
.TP
\fBEnter\fR
Go to the row, or run the query as the prefix says, sql: or q:. Reopened with a query in effect, the line holds its text, selected: typing replaces it, arrows edit it
.TP
\fBCtrl+J\fR
Run, the same as Enter
.TP
\fBCtrl+T\fR
Switch between SQL and q, keeping what is typed; the choice is remembered. [query] default_mode sets the first
.TP
\fBEsc\fR
Close
.PP
\fIEdit\fR
.TP
\fBTab\fR
Complete a column name, or df in SQL; again for the next match. The line under the input lists the names that fit
.TP
\fBAlt+Enter\fR
SQL: start a new line
.TP
\fB\(ua / \(da\fR
Earlier and later queries from the history (Ctrl+P / Ctrl+N too; SQL and q keep their own). In SQL over several lines, they move between lines first
.TP
\fBCtrl+U / Ctrl+K\fR
Delete to the start or end of the line
.TP
\fBCtrl+Z / Ctrl+R\fR
Undo, redo
.SS "Find"
\fB/\fR (or \fBf\fR) at the table.
.PP
\fIFind\fR
.TP
\fB(text)\fR
What to find: text (any case until a capital is typed), a regex with Ctrl+R, or letters in order with Ctrl+T. Matches in the rows on screen light up as you type, and the line says how many are on screen
.TP
\fBEnter\fR
Find: the cursor, column cursor and all, goes to the first match at or after its row, reading past the rows on hand when it must (the footer counts the rows read; Esc stops). On an empty field, clear the find
.TP
\fBCtrl+G\fR
Keep only the rows with a match, as a filter: the footer and the Sort & Filter sidebar show it, and removing it there (or R) brings the rows back
.TP
\fBCtrl+R\fR
Regex on or off
.TP
\fBCtrl+T\fR
Letters in order on or off: smth finds Smith
.TP
\fBCtrl+L\fR
Only the column cursor's column, or every column shown
.TP
\fB\(ua / \(da\fR
Earlier patterns (Ctrl+P / Ctrl+N too)
.TP
\fBEsc\fR
Cancel
.PP
\fIAt the table\fR
.TP
\fBn / N\fR
Next / previous match from the cursor's cell. Past the last match the find comes round to the first, and the footer says so. Each one typed while a find reads runs in turn; Esc stops them all
.TP
\fB/\fR
Find again, the last pattern ready to edit
.TP
\fBEsc\fR
Clear the find (or stop one still reading)
.SS "Go to column"
\fBg\fR at the table.
.PP
\fIGo\fR
.TP
\fB(type)\fR
Narrow to the names that contain it
.TP
\fB\(ua / \(da\fR
Move
.TP
\fBEnter\fR
Go. The column cursor moves to it. A column already whole on screen stays where it is; another becomes the first after the frozen ones, or lands on the last page when it is there
.TP
\fBBackspace\fR
Delete a character (Ctrl+W a word, Ctrl+U all)
.TP
\fBEsc\fR
Close without moving
.SS "Inspector"
\fBSpace\fR at the table.
.PP
\fIFields\fR
.TP
\fB\(ua / \(da (j/k)\fR
Move between fields
.TP
\fBHome / End\fR
First and last field
.TP
\fBPgUp / PgDn\fR
A page of fields
.TP
\fB\(<- / \(-> (h/l)\fR
Previous and next row; the table's cursor moves with it
.TP
\fBTab / Shift+Tab\fR
Into the value, to scroll and find in it. Nothing moves: the panes are split by what they hold, not by where the cursor is
.TP
\fBEnter\fR
On a group's row, its rows, as at the table. Else open a struct, a list, or text holding a JSON object or array; or read a field the table's rows do not hold (hidden and binary columns)
.TP
\fBr\fR
On a group's row, read a field the rows do not hold
.TP
\fB/\fR
Find a field by name, then by value: type to narrow, Enter or \(da keeps the list narrowed, Esc clears it
.TP
\fBf\fR
Nulls: shown or hidden (null and empty fields); comparing, only the fields that differ
.TP
\fBs\fR
Order: the table's, A-Z, or nulls last
.TP
\fBc\fR
Compare: a column for the next row, or the pinned one
.TP
\fBm\fR
Pin this row to compare others with; again to unpin
.TP
\fBEsc / Space\fR
Close. Esc backs out one level at a time: a find first, then Compare, then the inspector
.PP
\fIOutput\fR
.TP
\fBy\fR
Copy the value as its view shows it
.TP
\fBY\fR
Copy the whole row as one JSON object
.TP
\fBe\fR
The value's next view, where it has more than one
.TP
\fBw\fR
Word wrap or hard wrap for long text
.TP
\fBo\fR
Open the value in another program
.PP
\fIValue\fR
.TP
\fB\(ua / \(da (j/k)\fR
Scroll a line
.TP
\fBPgUp / PgDn\fR
Scroll a page
.TP
\fBHome / End\fR
Top and end, at once however long the value
.TP
\fB/\fR
Find in the value; n and N go to the next and last place
.TP
\fBe, w, y, o\fR
As in the fields
.TP
\fBEsc / Tab\fR
Back to the fields (Shift+Tab too); Esc clears a find first
.PP
\fINested\fR
.TP
\fBEnter / \(-> (l)\fR
Open the focused item
.TP
\fBTab / Shift+Tab\fR
Into the item's value; not in an empty level
.TP
\fBEsc / \(<- (h)\fR
Up a level; at the row, Esc closes
.TP
\fBy\fR
Copy the focused item: text as itself, a JSON object or array indented
.SS "Info panel"
\fBi\fR at the table.
.PP
\fIPanel\fR
.TP
\fB\(<- / \(-> (h/l)\fR
Previous or next tab, from anywhere in the panel; Shift+Tab and Tab do the same. The panel is a viewer, not a form: its body always has the keys
.TP
\fB\(ua / \(da (j/k)\fR
Schema, Notes or Documentation tab: move the cursor. Model, Audio, MIDI, Metadata and format tabs: scroll the list
.TP
\fBPgUp / PgDn\fR
Model, Audio, MIDI, Metadata and format tabs: scroll the list a page
.TP
\fBHome / End\fR
Model, Audio, MIDI, Metadata and format tabs: the top or the end of the list
.TP
\fBEnter\fR
Schema tab: change the column's type, with the names and formats a format spec's type takes. Notes tab: take the offer on the note, where it has one. Documentation tab: open or close the value legend of the column under the cursor. Excel or SQLite tab: open the worksheet or table under the cursor in place of this one, as T does
.TP
\fBo\fR
Documentation tab: open the link on the cursor's line in the system browser. Only http and https links open, and only after a question showing the whole URL. Off over SSH or without a display
.TP
\fBy\fR
Documentation tab: copy the link or value on the cursor's line, whole, however it is cut on screen
.TP
\fBH\fR
Schema tab, CSV, TSV, PSV: read the first row as data, under column_1, column_2, \[u2026]; again to read it as column names. Reads the file again, so the query, filters and sort are cleared, and the panel closes
.TP
\fBc\fR
A dataset of more files than read.exact_count_files shows a row count estimated from a sample of its footers; c reads every footer for the exact count. The footer shows how far it has got, and Esc at the table stops it
.TP
\fBx\fR
Show the file's bytes in the hex view
.TP
\fBEsc / i\fR
Close the panel
.SS "Value counts"
\fBF\fR at the table.
.PP
\fIExplore\fR
.TP
\fB\(ua / \(da (j/k)\fR
Move
.TP
\fBPgUp / PgDn\fR
A page
.TP
\fBHome / End\fR
First and last row
.TP
\fB\(<- / \(-> (h/l)\fR
The previous or next column; the table's column cursor moves with it
.TP
\fBEnter\fR
The rows holding the value, as a drill-down; Esc there comes back here
.TP
\fBs\fR
Sort by count or by value
.TP
\fBc\fR
Between a number column's histogram, binned from the counts, and the listing of its values. A number opens as its histogram
.TP
\fBa\fR
Count every row, when the counts are of a sample
.TP
\fBt\fR
While following a file, count again with the rows that arrived since; the bar says how many
.PP
\fIOutput\fR
.TP
\fBy\fR
Copy the counts as TSV: every value, its count, percent and cumulative percent
.TP
\fBe\fR
Export the counts to a file
.TP
\fBEsc\fR
Back to the table; while every row is being counted, stop that and keep the sample
.SS "Sort and filter"
\fBs\fR at the table.
.PP
\fISidebar\fR
.TP
\fBTab / Shift+Tab (\(ua / \(da)\fR
Next or previous field, wrapping; a field the form does not offer right now is skipped. The arrows move from the moment the dialog opens
.TP
\fB\(<- / \(->\fR
On the tab bar: switch Sort & Filter / Columns. On a sort: flip its direction. On a filter: and / or. On a column: step its sort (none, ascending, descending). h/l too
.TP
\fBSpace\fR
On a sort: flip its direction. On a filter: edit it (column, operator, value). On "add sort": pick a column to sort by, last and ascending. On "add filter": a new filter, starting on the table's column cursor. On a column: step its sort
.TP
\fBEnter\fR
Apply everything staged and close, from any row (in the filter editor Enter takes the step; Ctrl+J applies)
.TP
\fBCtrl+J\fR
Apply from anywhere, including mid-edit (the row in progress is saved). Ctrl+Enter does the same, on a terminal that tells it from Enter
.TP
\fBEsc\fR
Close an open picker or filter editor; otherwise cancel and close, discarding what is staged. Reopening shows what is applied
.PP
\fIIn effect\fR
.TP
\fB[ / ]\fR
Move the focused sort earlier or later in the sort order, or the focused filter in the list
.TP
\fBd / Del\fR
Remove the sort or filter
.TP
\fBC\fR
Remove every sort and filter
.PP
\fIColumns\fR
.TP
\fB(type)\fR
Narrow the column list, when the find field is focused. \(da from find goes to the list, on the table's column cursor
.TP
\fBPgUp / PgDn, Home / End\fR
A page of columns, or the first or last; \(da stops at the last column
.TP
\fBSpace\fR
Cycle the column's sort: none \(-> ascending \(-> descending (\(<- steps back). Each column carries its own direction
.TP
\fB1\-9\fR
Put the column at that place in the sort order; 0 removes it (a digit past the end of the order says so)
.TP
\fBDel\fR
Remove the column from the sort
.TP
\fB[ / ]\fR
Earlier or later in the sort order
.TP
\fB+ / \- (= / _)\fR
Move the column's display position
.TP
\fBL\fR
Freeze this column and every column up to it at the left edge; on a column already frozen, pull the boundary back
.TP
\fBv\fR
Show or hide the column (it keeps its place, dimmed)
.TP
\fB< / > (, / .)\fR
Make the column 4 cells narrower or wider. A number column is never narrower than its numbers
.TP
\fBf\fR
Fit the column to the rows on screen, its name up to the automatic limit
.TP
\fBw\fR
Back to the automatic width
.TP
\fBC\fR
Clear the staged sort, order, locks, hidden columns and widths
.PP
\fIFilter editor\fR
.TP
\fB(type)\fR
Narrow the column or operator list. The operators are those the column's type takes
.TP
\fBEnter\fR
Pick the column (type to narrow, Enter chooses), the operator the same way, then type the value and Enter saves the row. Tab, \(-> and Space also choose at the column and operator steps; Shift+Tab steps back; \(ua / \(da move in the lists
.TP
\fBEsc\fR
End the edit, and only the edit
.SS "Pivot and melt"
\fBp\fR at the table: the form on the left, a live preview of the result on the right (above and below on a narrow terminal).
.PP
\fIForm\fR
.TP
\fBTab / Shift+Tab (\(ua / \(da)\fR
Next or previous field, wrapping; a field the form does not offer right now is skipped. The arrows move from the moment the builder opens
.TP
\fB\(<- / \(->\fR
On the first row: switch Pivot and Melt. On the aggregation, strategy or type: the previous or next value. On a single column row: the previous or next column. In a text field: move the cursor. h/l too, outside text fields. The preview follows each change
.TP
\fBSpace\fR
On a column row: open its picker, scoped to that row; typing narrows it. On a choice: its next value, wrapping
.TP
\fBEnter\fR
Apply the reshape the preview shows, to the whole view, from any field
.TP
\fBEsc\fR
Close without applying; while a pivot is computed, stop it and keep the builder
.PP
\fIPicker\fR
.TP
\fB(type)\fR
Narrow the column list
.TP
\fB\(ua / \(da\fR
Move; typing narrows
.TP
\fBEnter\fR
Choose; on a several-choice row, done
.TP
\fBSpace\fR
Choose; toggle a column on a several-choice row
.TP
\fBEsc\fR
Back out of the picker; the toggles made since it opened are undone (Enter keeps them)
.SS "Chart"
\fBc\fR at the table: a chart chosen from the cursor column's type.
.PP
\fIShelves\fR
.TP
\fB1\-7\fR
Switch the chart type directly: Line, Scatter, Bar, Histogram, Box, KDE, Heatmap ([ / ] step). The shelves keep what the new type takes. On Rows, digits type a sample size instead
.TP
\fB[ / ]\fR
Previous or next chart type
.TP
\fBTab / Shift+Tab (\(ua / \(da)\fR
Next or previous row of the panel, wrapping (j/k too). A shelf the type does not use is dimmed and skipped
.TP
\fBSpace / Enter\fR
On X, Y or Color: open its picker. On the line under Color: pick the values that get a series, by rows. On an option: toggle it or take its next value. The panel applies as it changes, so Enter acts as Space does, except on Rows: Space switches between Sample and Every row, and Enter reads what the row says
.TP
\fB\(<- / \(-> (h/l)\fR
Step the type, the time bucket (day, week, month, quarter, year), the aggregate (count, distinct, sum, mean, median, stdev, quantile, min, max, first, last) and a quantile's percentile, cumulative, bins, range or order; on Rows, switch between Sample and Every row (read on Enter); on a shelf that takes one column, the previous or next column; on the line under Color, turn Other (every value without a series) on or off; flip a toggle
.TP
\fB+ / \-\fR
Bins or bandwidth
.TP
\fB0\-9\fR
On Rows: type a sample size, like 50000, 50,000, 50k, 250k or 2m. Backspace edits, Enter reads it, Esc puts the row back as it was. A size of at least the table's rows is Every row. Nothing is read until Enter or focus leaves the row
.TP
\fBg\fR
Grid on or off at the labeled ticks: Line, Scatter, Histogram, Box and KDE. [analysis] chart_grid sets where it starts
.TP
\fBEsc\fR
Back to the table; on Rows with a change waiting, put the row back first
.PP
\fIPlot\fR
.TP
\fBx\fR
Line and Scatter: the plot takes the keys, and a crosshair reads out x and every series' value under the plot. \(<- / \(-> (h/l) step to the next point or column, Home/End go to the ends; x, Tab or Esc hand the keys back to the panel. A click on the plot puts the crosshair there
.TP
\fBe\fR
Export the chart to PNG, SVG or PDF, with a title, notes and source. Needs the chart's shelves filled first
.TP
\fBt\fR
While following a file, draw again with the rows that arrived since; the bar says how many
.PP
\fIPicker\fR
.TP
\fB\(ua / \(da\fR
Move; typing narrows
.TP
\fBEnter / Space\fR
Choose; on a line or scatter chart's Y and on the Color values, Space toggles one in or out (up to 10, fewer on a terminal of fewer colors)
.TP
\fBTab / Shift+Tab\fR
Choose and move to the next or previous row
.TP
\fBEsc\fR
Back out of the picker alone
.PP
\fIExport dialog\fR
.TP
\fBTab / Shift+Tab (\(ua / \(da)\fR
Next or previous field: Path, Format, Style, Size, Width, Height, Legend, the marks (Opacity and Point size for a scatter, Line width for a line, Y from zero for a line), Title, Description, Notes, Source, Byline, Recipe
.TP
\fB\(<- / \(->\fR
Step the format (PNG, SVG, PDF), the style (Light, Dark, Transparent), the size (Slide 16:9, Document, Square, Single column, Double column, Custom), the legend (line ends, a corner, off), a scatter's point opacity (Auto, 100%, 50%, 20%) and size (Small, Medium, Large), a line's width (Thin, Normal, Bold), Y from zero, or the recipe (Include, Omit). Typing a width or height makes the size Custom
.TP
\fBCtrl+P / Ctrl+N\fR
Earlier or later paths in the path field
.TP
\fBEnter\fR
Export, from anywhere in the dialog. A path ending .png, .svg or .pdf takes that format; any other gets the format's extension after it. An existing file asks Overwrite / No, starting on No; \(<-/\(-> (h/l) or Tab pick, Enter confirms, and declining returns to the filled dialog
.TP
\fBEsc\fR
Back to the chart
.SS "Analysis: Describe"
\fBa\fR at the table.
.PP
\fIExplore\fR
.TP
\fBTab / Shift+Tab\fR
Between the results and the tools
.TP
\fB\(ua / \(da (j/k)\fR
Rows, or the sidebar's tools
.TP
\fB\(<- / \(-> (h/l)\fR
Scroll the statistics; the header counts those out of view
.TP
\fBHome / End\fR
First or last row
.TP
\fBPgUp / PgDn\fR
A page
.TP
\fBEnter\fR
Open the sidebar's tool and move into its pane. The first run on a dataset starts in the Sample form, where Enter runs it; later tools reuse that sample. Results last until the view changes: closing and reopening shows them again
.TP
\fBEsc\fR
Cancel a run in progress; otherwise from the results back to the tools, and from the tools close the analysis view
.PP
\fISample\fR
.TP
\fBs\fR
Choose the sample every tool reads: which rows, how they are picked, how many (typed, like 50000, 50k or 2m), the seed. Enter applies the form
.TP
\fBv\fR
View the sample's rows as a table; Esc comes back
.TP
\fBr\fR
Draw another sample (when the result is a sample)
.TP
\fBa\fR
Read every row instead, after confirming
.TP
\fBt\fR
While following a file, read again with the rows that arrived since the results were read
.SS "Analysis: Distribution"
Distribution in the Analysis sidebar.
.PP
\fIExplore\fR
.TP
\fB\(ua / \(da (j/k)\fR
Rows, or the sidebar's tools
.TP
\fB\(<- / \(-> (h/l)\fR
Scroll the statistics; the header counts those out of view
.TP
\fBHome / End\fR
First or last row
.TP
\fBPgUp / PgDn\fR
A page
.TP
\fBTab / Shift+Tab\fR
Between the results and the tools
.TP
\fBEnter\fR
Open detail view for selected column (shows Q-Q plot and histogram); with the sidebar focused, open a tool
.TP
\fBEsc\fR
Cancel a run in progress; otherwise from the results back to the tools, and from the tools close the analysis view
.PP
\fISample\fR
.TP
\fBs\fR
Choose the sample every tool reads: which rows, how they are picked, how many (typed, like 50000, 50k or 2m), the seed. Enter applies the form
.TP
\fBv\fR
View the sample's rows as a table; Esc comes back
.TP
\fBr\fR
Draw another sample (when the result is a sample)
.TP
\fBa\fR
Read every row instead, after confirming
.TP
\fBt\fR
While following a file, read again with the rows that arrived since the results were read
.SS "Analysis: Distribution detail"
\fBEnter\fR on a column in Distribution.
.PP
\fIDetail\fR
.TP
\fB\(ua / \(da (j/k)\fR
Compare the values with another family
.TP
\fBHome / End\fR
The first or last family
.TP
\fBs\fR
Histogram scale: linear or log
.TP
\fBEsc\fR
Back to the distribution table
.SS "Analysis: Correlation"
Correlation Matrix in the Analysis sidebar.
.PP
\fIExplore\fR
.TP
\fBTab / Shift+Tab\fR
Between the matrix and the tools
.TP
\fB\(ua / \(da (j/k)\fR
Matrix rows, or the sidebar's tools
.TP
\fB\(<- / \(-> (h/l)\fR
Matrix columns
.TP
\fBHome / End\fR
Jump to the first pair (the first row's second column) or the last (the last row's next-to-last column); the matrix opens on the first
.TP
\fBPgUp / PgDn\fR
A page
.TP
\fBEnter\fR
Open pair detail view (on a cell) or open a tool (sidebar); does nothing on a diagonal cell
.TP
\fBm\fR
Method: Pearson r or Spearman \(*r, named in the title (both come from the one run, so it reads nothing)
.TP
\fBEsc\fR
Cancel a run in progress; otherwise from the matrix back to the tools, and from the tools close the analysis view
.PP
\fISample\fR
.TP
\fBs\fR
Choose the sample every tool reads: which rows, how they are picked, how many (typed, like 50000, 50k or 2m), the seed. Enter applies the form
.TP
\fBv\fR
View the sample's rows as a table; Esc comes back
.TP
\fBr\fR
Draw another sample (when the result is a sample)
.TP
\fBa\fR
Read every row instead, after confirming
.TP
\fBt\fR
While following a file, read again with the rows that arrived since the results were read
.SS "Analysis: Correlation detail"
\fBEnter\fR on a pair in the correlation matrix.
.PP
\fIDetail\fR
.TP
\fBm\fR
Pearson or Spearman
.TP
\fBEsc\fR
Return to the correlation matrix. Resampling (r) works from the matrix, not from inside this detail
.SS "Analysis: Data Quality"
Data Quality in the Analysis sidebar.
.PP
\fISetup\fR
.TP
\fB\(ua / \(da, Tab\fR
Move between rows
.TP
\fB\(<- / \(->\fR
Change a short list's choice
.TP
\fBSpace\fR
Open the row: the Sample form, a list (type to narrow), Time roles, Intervals, Column intent or Expected
.TP
\fBs\fR
The Sample form; its Enter applies to Setup and returns there
.TP
\fBp\fR
The access plan: what a run reads
.TP
\fBd\fR
Release the rows runs kept and a full scan's local copy, named on the Read rule; the next run that would reuse them reads again
.TP
\fBEnter\fR
Run, from any row. A full read asks first; the report on screen or in the session cache is shown, not read again
.TP
\fBEsc\fR
Discard every staged edit
.PP
\fISetup lists\fR
.TP
\fB\(ua / \(da\fR
Time roles: choose the role. Intervals: choose the pair. Column intent: choose the column. Expected: Windows, From, Before (Tab too)
.TP
\fB\(<- / \(->\fR
Time roles: choose the role's column. Expected: choose the windows. Intervals: measure the pair or not
.TP
\fBSpace\fR
Intervals: measure the pair or not. Column intent: declare the column's intent in a form
.TP
\fBEnter\fR
Done
.TP
\fBEsc\fR
Put the list back as it was
.PP
\fIReport\fR
.TP
\fB\(<- / \(-> (h/l)\fR
Previous or next page
.TP
\fB1 \- 5\fR
Overview, Columns, Segments, Trends, Intervals
.TP
\fB\(ua / \(da (j/k)\fR
Move, or scroll a tall finding
.TP
\fBPgUp / PgDn\fR
Page; Home/End jump to either end
.TP
\fBEnter\fR
Open a finding, then its rows. On an empty page, open the setting it needs
.TP
\fBc / t\fR
Overview: only one column's or one type's findings
.TP
\fBo\fR
Overview: ranked, by rows, by rate
.TP
\fBe\fR
Setup
.TP
\fBs\fR
Setup, with the Sample form open
.TP
\fBv\fR
View the sample's rows; Esc returns
.TP
\fBp\fR
The access plan: what a run reads
.TP
\fBr\fR
On a sample, run again with a new seed
.TP
\fBx\fR
Export the report to JSON or Markdown; nothing is read
.TP
\fBTab / Shift+Tab\fR
Between the result and the tools
.TP
\fBEsc\fR
Back one level: all findings again, then the tools, then close
.PP
\fISegments\fR
.TP
\fBEnter\fR
A segment's columns beside the one it is compared with, largest change first
.TP
\fBo\fR
Largest change first, or back in order
.TP
\fBb\fR
Compare with the highlighted segment
.PP
\fITrends\fR
.TP
\fBEnter\fR
A line's bars: span, segments, rows sampled of counted, rate, 95% interval, and the bar before. \(ua / \(da there: the next bar
.TP
\fBm\fR
Next measure
.TP
\fBw\fR
Stage a coarser window in Setup, for segments the sample reached thinly or not at all
.TP
\fBg\fR
The expected windows with no rows: empty by exact count, not sampled, or out of scope
.TP
\fBEsc\fR
Back to Trends
.PP
\fIIntervals\fR
.TP
\fBEnter\fR
An interval's detail: its ends, the rows with both, missing and unread ends, negative and zero durations, percentiles and breaches. Enter there shows the rows behind the count under the cursor: a sample's from the rows the run kept
.TP
\fBEsc\fR
Back to the list
.SS "Export"
\fBe\fR at the table.
.PP
\fIForm\fR
.TP
\fBTab / Shift+Tab (\(ua / \(da)\fR
Next or previous field, wrapping; the fields follow the format. The dialog opens on Path, and the arrows move from there
.TP
\fB\(<- / \(->\fR
On Format or Compression: the previous or next value, along the Format row (h/l too). On Header or Source file: toggle. In Path and Delimiter: move the cursor
.TP
\fBSpace\fR
Toggle a checkbox (Header, Source file); on Format or Compression, the next value, wrapping
.TP
\fBCtrl+P / Ctrl+N\fR
In the path field: the paths exported to before, earlier or later (\(ua and \(da move between fields)
.TP
\fBEnter\fR
Export, from anywhere in the form. On a blank path the form says "Enter a file path." instead of exporting
.TP
\fBEsc\fR
Close without exporting
.PP
\fIFile exists\fR
.TP
\fB\(<- / \(-> (h/l)\fR
Pick Overwrite or No (Tab too)
.TP
\fBEnter\fR
Confirm the one picked
.TP
\fBEsc\fR
Decline: back to the filled form
.SS "Copy"
\fBy\fR at the table.
.PP
\fIForm\fR
.TP
\fBTab / Shift+Tab (\(ua / \(da)\fR
Next or previous row
.TP
\fB\(<- / \(->\fR
The previous or next scope, column or format (h/l too); on Header: toggle
.TP
\fBSpace\fR
On Scope or Format: the next value, wrapping. On Column: open its picker. On Header: toggle
.TP
\fBEnter\fR
Copy, from anywhere in the form. On the Cell scope with no column picked, Enter re-accents the spec line instead of copying
.TP
\fBEsc\fR
Close a picker, then the dialog, without copying
.PP
\fIPicker\fR
.TP
\fB(type)\fR
Narrow the list
.TP
\fB\(ua / \(da\fR
Move the cursor (j/k narrow the picker; only \(ua/\(da move there)
.TP
\fBEnter / Space\fR
Choose
.TP
\fBTab / Shift+Tab\fR
Choose and move on
.SS "Views"
\fBv\fR at the table.
.PP
\fIList\fR
.TP
\fB\(ua / \(da (j/k)\fR
Move in the list
.TP
\fBEnter\fR
Apply the selected view
.TP
\fBs\fR
Save the current state as a view (an untouched table has nothing to save, and s says so)
.TP
\fBe\fR
Edit the selected view
.TP
\fBd\fR
Delete the selected view, after confirming
.TP
\fBi\fR
Show how the selected view's score was computed (Esc closes the score view)
.TP
\fBEsc\fR
Close
.PP
\fISave and edit\fR
.TP
\fBTab / Shift+Tab (\(ua / \(da)\fR
Next or previous row. In the description \(ua / \(da move between its lines, and leave it from the first or last
.TP
\fBEnter\fR
Save, from any row. In the description Enter types: Ctrl+J saves from there
.TP
\fBCtrl+J\fR
Save from anywhere, the description included; so does Ctrl+Enter, on a terminal that tells it from Enter
.TP
\fBPgUp / PgDn\fR
Five lines in the description
.TP
\fBSpace\fR
Expand or collapse Matching; toggle schema match
.TP
\fBEsc\fR
Back to the list, discarding edits
.PP
\fIDelete\fR
.TP
\fB\(<- / \(-> (h/l)\fR
Pick Delete or No (Tab too); it starts on No
.TP
\fBEnter\fR
Confirm the one picked
.TP
\fBEsc\fR
Keep the view
.SS "Format picker"
\fBb\fR at a table read through a format spec.
.PP
\fIPick\fR
.TP
\fB(type)\fR
Narrow to the names that contain it
.TP
\fB\(ua / \(da\fR
Move
.TP
\fBEnter\fR
Read the file again with the spec chosen. The query, filters and sort are cleared
.TP
\fBBackspace\fR
Delete a character (Ctrl+W a word, Ctrl+U all)
.TP
\fBEsc\fR
Close and keep the format
.SS "Column type"
\fBEnter\fR on the Info panel's Schema tab, or Change type in the cell menu.
.PP
\fIPick\fR
.TP
\fB(type)\fR
Narrow the list to the names that contain it. In the format list, a strftime format typed that no line holds is the format
.TP
\fB\(ua / \(da\fR
Move
.TP
\fBEnter\fR
The type: the column reads as it at once, a value that does not fit null. A date, time or datetime asks its format next, each line showing what it makes of the column's first value. as read takes the type away
.TP
\fBBackspace\fR
Delete a character (Ctrl+W a word, Ctrl+U all)
.TP
\fBEsc\fR
Back to the types, or close
.SS "Combine into datetime"
Combine into datetime in the cell menu, on a text, date or time column.
.PP
\fIFields\fR
.TP
\fBTab / Shift+Tab (\(ua / \(da)\fR
Next or previous field
.TP
\fBSpace\fR
Pick a column, or step the kind
.TP
\fB\(<- / \(->\fR
Step the kind: datetime, date or time
.TP
\fBEnter\fR
Make the column, before the first column it is made from, as a format spec's derived column is: a date and a time, and a UTC offset, make a datetime in UTC
.TP
\fBEsc\fR
Cancel
.SS "Table picker"
\fBT\fR at a table of a file of several.
.PP
\fIPick\fR
.TP
\fB(type)\fR
Narrow to the names that contain it
.TP
\fB\(ua / \(da\fR
Move
.TP
\fBEnter\fR
Open the table chosen in place of this one. The query, filters and sort are cleared
.TP
\fBBackspace\fR
Delete a character (Ctrl+W a word, Ctrl+U all)
.TP
\fBEsc\fR
Close and keep the table
.SS "Sample"
\fBS\fR at the table.
.PP
\fIForm\fR
.TP
\fBTab / Shift+Tab (\(ua / \(da)\fR
Next or previous row
.TP
\fB\(<- / \(->\fR
Step Rows from, Method and Per value of; Method's No sample takes the view's sample away
.TP
\fB(type)\fR
Type into the focused row: the size (50000, 50k, 2m), the seed, a row range, partition values or file numbers
.TP
\fBEnter\fR
Draw the sample: the table shows its rows as they arrive, and the query, filters and sort run over them. When the estimate is more than the memory available now (or analysis.\:sample_memory_limit), the form says so; Enter again draws anyway
.TP
\fBEsc\fR
Close; the view's sample stays as it was
.SS "Hex view"
\fBdatui \-\-hex FILE\fR, \fBCtrl\fR+\fBX\fR on the home screen, or \fBx\fR in the Info panel.
.PP
\fIExplore\fR
.TP
\fB\(<- / \(-> (h/l)\fR
A byte
.TP
\fB\(ua / \(da (j/k)\fR
A row
.TP
\fBw / b\fR
The next group of four, or back one
.TP
\fB0 / $\fR
The start or end of the row
.TP
\fBg / G\fR
The start or end of the file (Home and End too)
.TP
\fBPgUp / PgDn\fR
A page (Ctrl+B/F too; Ctrl+U/D half a page)
.TP
\fB:\fR
Go to an offset: 4096 or 0x1000; +16 or \-16 from the cursor; e-8 for the eighth byte from the end
.PP
\fIFind\fR
.TP
\fBf\fR
Find bytes. Text is found as its UTF-8 bytes (Ctrl+U in the prompt: as UTF-16 little-endian). 0x1acffc1d, or two or more hex pairs (de ad be ef), is a byte pattern, where ?? matches any byte. Text in double quotes is text, even when it looks like hex. A match may span rows
.TP
\fBn / N\fR
The next or previous match, round the end of the file
.TP
\fBR\fR
When the matches after the one found are all the same distance apart, make that the bytes per row
.TP
\fBEsc\fR
Stop a find that is reading
.PP
\fIDisplay\fR
.TP
\fBr\fR
Bytes per row, so that records line up; empty goes back to as many as fit. \-\-hex-width N sets it on the command line
.TP
\fB#\fR
Offsets in decimal or hex
.TP
\fBi / Enter\fR
Show or hide the byte inspector. Beside the bytes when there is room for it and 16 bytes a row, over them when there is not
.TP
\fBv\fR
Mark from the cursor; move to mark a range, and the status line counts it. v again, or Esc, unmarks
.PP
\fIGo\fR
.TP
\fBB\fR
Read the file with a format spec instead
.TP
\fBEsc\fR
Back to the table, when opened from the Info panel; back home, when opened from there
.TP
\fBq\fR
Home, when opened from there; else quit
.SH EXAMPLES
The keys of every screen, as a manual page.
.PP
.RS 4
.EX
datui man keys
.EE
.RE
.SH "SEE ALSO"
\fBdatui\fR(1)
.PP
The datui documentation: <https:/\:/\:derekwisong.\:github.\:io/\:datui/\:>
.SH BUGS
Report bugs at <https:/\:/\:github.\:com/\:derekwisong/\:datui/\:issues>.
.SH AUTHORS
Derek Wisong and the datui contributors.
.SH COPYRIGHT
Copyright \(co 2026 Derek Wisong
.PP
datui is free software under the MIT License.