1vd(1) Quick Reference Guide vd(1)
2
4 VisiData — a terminal utility for exploring and arranging tabular data
5
7 vd [options] [input ...]
8 vd [options] --play cmdlog [-w waitsecs] [--batch] [-o output]
9 [field=value]
10 vd [options] [input ...] +toplevel:subsheet:col:row
11
13 VisiData is an easy-to-use multipurpose tool to explore, clean, edit, and
14 restructure data. Rows can be selected, filtered, and grouped; columns
15 can be rearranged, transformed, and derived via regex or Python expres‐
16 sions; and workflows can be saved, documented, and replayed.
17
18 REPLAY MODE
19 -p, --play=cmdlog replay a saved cmdlog within the interface
20 -w, --replay-wait=seconds
21 wait seconds between commands
22 -b, --batch replay in batch mode (with no interface)
23 -o, --output=file save final visible sheet to file as .tsv
24 --replay-movement toggle --play to move cursor cell-by-cell
25 field=value replace "{field}" in cmdlog contents with value
26
27 Commands During Replay
28 ^U pause/resume replay
29 ^N execute next row in replaying sheet
30 ^K cancel current replay
31
32 GLOBAL COMMANDS
33 All keystrokes are case sensitive. The ^ prefix is shorthand for Ctrl.
34
35 Keystrokes to start off with
36 ^Q abort program immediately
37 ^C cancel user input or abort all async threads on current
38 sheet
39 g^C abort all secondary threads
40 q quit current sheet or menu
41 Q quit current sheet and free associated memory
42 gq quit all sheets (clean exit)
43
44 ^H activate help menu (Enter/left-mouse to expand submenu
45 or execute command)
46 g^H view this man page
47 z^H view sheet of command longnames and keybindings for cur‐
48 rent sheet
49 Space longname execute command by its longname
50
51 U undo the most recent modification (requires enabled
52 options.undo)
53 R redo the most recent undo (requires enabled
54 options.undo)
55
56 Cursor Movement
57 Arrow PgUp go as expected
58 h j k l go left/down/up/right
59 gh gj gk gl go all the way to the left/bottom/top/right of sheet
60 G gg go all the way to the bottom/top of sheet
61 Ic. End Home go all the way to the bottom/top of sheet
62 ^B ^F scroll one page back/forward
63 ^Left ^Right scroll one page left/right
64 zz scroll current row to center of screen
65
66 ^^ (Ctrl+^) jump to previous sheet (swaps with current sheet)
67
68 / ? regex search for regex forward/backward in current column
69 g/ g? regex search for regex forward/backward over all visible
70 columns
71 z/ z? expr search by Python expr forward/backward in current column
72 (with column names as variables)
73 n N go to next/previous match from last regex search
74
75 < > go up/down current column to next value
76 z< z> go up/down current column to next null value
77 { } go up/down current column to next selected row
78
79 c regex go to next column with name matching regex
80 r regex go to next row with key matching regex
81 zc zr number go to column/row number (0-based)
82
83 H J K L slide current row/column left/down/up/right
84 gH gJ gK gL slide current row/column all the way to the left/bot‐
85 tom/top/right of sheet
86 zH zJ zK zK number
87 slide current row/column number positions to the
88 left/down/up/right
89
90 zh zj zk zl scroll one left/down/up/right
91
92 Column Manipulation
93 _ (underbar) toggle width of current column between full and default
94 width
95 g_ toggle widths of all visible columns between full and
96 default width
97 z_ number adjust width of current column to number
98 gz_ number adjust widths of all visible columns to Ar number
99
100 - (hyphen) hide current column
101 z- reduce width of current column by half
102 gv unhide all columns
103
104 ! z! toggle/unset current column as a key column
105 ~ # % $ @ z#
106 set type of current column to str/int/float/cur‐
107 rency/date/len
108 ^ rename current column
109 g^ rename all unnamed visible columns to contents of se‐
110 lected rows (or current row)
111 z^ rename current column to combined contents of current
112 cell in selected rows (or current row)
113 gz^ rename all visible columns to combined contents of cur‐
114 rent column for selected rows (or current row)
115
116 = expr create new column from Python expr, with column names,
117 and attributes, as variables
118 g= expr set current column for selected rows to result of Python
119 expr
120 gz= expr set current column for selected rows to the items in
121 result of Python sequence expr
122 z= expr evaluate Python expression on current row and set
123 current cell with result of Python expr
124
125 i add column with incremental values
126 gi set current column for selected rows to incremental
127 values
128 zi step add column with values at increment step
129 gzi step set current column for selected rows at increment step
130
131 ' (tick) add a frozen copy of current column with all cells eval‐
132 uated
133 g' open a frozen copy of current sheet with all visible
134 columns evaluated
135 z' gz' add/reset cache for current/all visible column(s)
136
137 : regex add new columns from regex split; number of columns
138 determined by example row at cursor
139 ; regex add new columns from capture groups of regex (also
140 requires example row)
141 z; expr create new column from bash expr, with $columnNames as
142 variables
143 * regex/subst add column derived from current column, replacing regex
144 with subst (may include \1 backrefs)
145 g* gz* regex/subst
146 modify selected rows in current/all visible column(s),
147 replacing regex with subst (may include \1 backrefs)
148
149 ( g( expand current/all visible column(s) of lists (e.g. [3])
150 or dicts (e.g. {3}) one level
151 z( gz( depth expand current/all visible column(s) of lists (e.g. [3])
152 or dicts (e.g. {3}) to given depth (0= fully)
153 ) unexpand current column; restore original column and re‐
154 move other columns at this level
155 zM row-wise expand current column of lists (e.g. [3]) or
156 dicts (e.g. {3}) within that column
157
158 Row Selection
159 s t u select/toggle/unselect current row
160 gs gt gu select/toggle/unselect all rows
161 zs zt zu select/toggle/unselect all rows from top to cursor
162 gzs gzt gzu select/toggle/unselect all rows from cursor to bottom
163 | \ regex select/unselect rows matching regex in current column
164 g| g\ regex select/unselect rows matching regex in any visible
165 column
166 z| z\ expr select/unselect rows matching Python expr in any visible
167 column
168 , (comma) select rows matching display value of current cell in
169 current column
170 g, select rows matching display value of current row in all
171 visible columns
172 z, gz, select rows matching typed value of current cell/row in
173 current column/all visible columns
174
175 Row Sorting/Filtering
176 [ ] sort ascending/descending by current column; replace any
177 existing sort criteria
178 g[ g] sort ascending/descending by all key columns; replace
179 any existing sort criteria
180 z[ z] sort ascending/descending by current column; add to ex‐
181 isting sort criteria
182 gz[ gz] sort ascending/descending by all key columns; add to ex‐
183 isting sort criteria
184 " open duplicate sheet with only selected rows
185 g" open duplicate sheet with all rows
186 gz" open duplicate sheet with deepcopy of selected rows
187
188 The rows in these duplicated sheets (except deepcopy) are references to
189 rows on the original source sheets, and so edits to the filtered rows
190 will naturally be reflected in the original rows. Use g' to freeze sheet
191 contents in a deliberate copy.
192
193 Editing Rows and Cells
194 a za append blank row/column; appended columns cannot be
195 copied to clipboard
196 ga gza number append number blank rows/columns
197 d gd delete current/selected row(s)
198 y gy yank (copy) current/all selected row(s) to clipboard in
199 Memory Sheet
200 x gx cut (copy and delete) current/all selected row(s) to
201 clipboard in Memory Sheet
202 zy gzy yank (copy) contents of current column for
203 current/selected row(s) to clipboard in Memory Sheet
204 zd gzd set contents of current column for current/selected
205 row(s) to options.null_value
206 zx gzx cut (copy and delete) contents of current column for
207 current/selected row(s) to clipboard in Memory Sheet
208 p P paste clipboard rows after/before current row
209 zp gzp set cells of current column for current/selected row(s)
210 to last clipboard value
211 zP gzP paste to cells of current column for current/selected
212 row(s) using the system clipboard
213 Y gY yank (copy) current/all selected row(s) to system
214 clipboard (using options.clipboard_copy_cmd)
215 zY gzY yank (copy) contents of current column for
216 current/selected row(s) to system clipboard (using
217 options.clipboard_copy_cmd)
218 f fill null cells in current column with contents of non-
219 null cells up the current column
220 e text edit contents of current cell
221 ge text set contents of current column for selected rows to text
222
223 Commands While Editing Input
224 Enter ^C accept/abort input
225 ^O g^O open external $EDITOR to edit contents of current/se‐
226 lected rows in current column
227 ^R reload initial value
228 ^A ^E go to beginning/end of line
229 ^B ^F go back/forward one character
230 ^← ^→ (arrow) go back/forward one word
231 ^H ^D delete previous/current character
232 ^T transpose previous and current characters
233 ^U ^K clear from cursor to beginning/end of line
234 ^Y paste from cell clipboard
235 Backspace Del delete previous/current character
236 Insert toggle insert mode
237 Up Down set contents to previous/next in history
238 Tab Shift+Tab autocomplete input (when available)
239 Shift+Arrow move cursor in direction of Arrow and re-enter edit
240 mode
241
242 Data Toolkit
243 o input open input in VisiData
244 zo open file or url from path in current cell
245 ^S g^S filename save current/all sheet(s) to filename in format
246 determined by extension (default .tsv)
247 Note: if the format does not support multisave, or the
248 filename ends in a /, a directory will be created.
249 z^S filename save current column only to filename in format
250 determined by extension (default .tsv)
251 ^D filename.vdj save CommandLog to filename.vdj file
252 A open new blank sheet with one column
253 T open new sheet that has rows and columns of current
254 sheet transposed
255
256 + aggregator add aggregator to current column (see Frequency Table)
257 z+ aggregator display result of aggregator over values in selected
258 rows for current column; store result in Memory Sheet
259 & append top two sheets in Sheets Stack
260 g& append all sheets in Sheets Stack
261
262 w nBefore nAfter
263 add column where each row contains a list of that row,
264 nBefore rows, and nAfter rows
265
266 Data Visualization
267 . (dot) plot current numeric column vs key columns. The numeric
268 key column is used for the x-axis; categorical key column
269 values determine color.
270 g. plot a graph of all visible numeric columns vs key
271 columns.
272
273 If rows on the current sheet represent plottable coordinates (as in .shp
274 or vector .mbtiles sources), . plots the current row, and g. plots all
275 selected rows (or all rows if none selected).
276
277 Canvas-specific Commands
278 + - increase/decrease zoom level, centered on cursor
279 _ (underbar) zoom to fit full extent
280 z_ (underbar) set aspect ratio
281 x xmin xmax set xmin/xmax on graph
282 y ymin ymax set ymin/ymax on graph
283 s t u select/toggle/unselect rows on source sheet con‐
284 tained within canvas cursor
285 gs gt gu select/toggle/unselect rows on source sheet visi‐
286 ble on screen
287 d delete rows on source sheet contained within can‐
288 vas cursor
289 gd delete rows on source sheet visible on screen
290 Enter open sheet of source rows contained within canvas
291 cursor
292 gEnter open sheet of source rows visible on screen
293 1 - 9 toggle display of layers
294 ^L redraw all pixels on canvas
295 v toggle show_graph_labels option
296 mouse scrollwheel zoom in/out of canvas
297 left click-drag set canvas cursor
298 right click-drag scroll canvas
299
300 Split Screen
301 Z split screen in half, so that second sheet on the stack is
302 visible in a second pane
303 zZ split screen, and queries for height of second pane
304
305 Split Window specific Commands
306 gZ close an already split screen, current pane full
307 screens
308 Z push second sheet on current pane's stack to the
309 top of the other pane's stack
310 Tab jump to other pane
311 gTab swap panes
312 g Ctrl+^ cycle through sheets
313
314 Other Commands
315 Q quit current sheet and remove it from the CommandLog
316 v toggle sheet-specific visibility (multi-line rows on
317 Sheet, legends/axes on Graph)
318
319 ^E g^E view traceback for most recent error(s)
320 z^E view traceback for error in current cell
321
322 ^L refresh screen
323 ^R reload current sheet
324 ^Z suspend VisiData process
325 ^G show cursor position and bounds of current sheet on sta‐
326 tus line
327 ^V show version and copyright information on status line
328 ^P open Status History
329 m keystroke first, begin recording macro; second, prompt for
330 keystroke , and complete recording. Macro can then be
331 executed everytime provided keystroke is used. Will
332 override existing keybinding. Macros will run on current
333 row, column, sheet.
334 gm open an index of all existing macros. Can be directly
335 viewed with Enter, and then modified with ^S.
336
337 ^Y z^Y g^Y open current row/cell/sheet as Python object
338 ^X expr evaluate Python expr and opens result as Python object
339 z^X expr evaluate Python expr, in context of current row, and
340 open result as Python object
341 g^X module import Python module in the global scope
342
343 Internal Sheets List
344 . Directory Sheet browse properties of files in a directory
345 . Plugins Sheet browse, install, and (de)activate plugins
346 . Memory Sheet (Alt+Shift+M) browse saved values, including
347 clipboard
348
349 Metasheets
350 . Columns Sheet (Shift+C) edit column properties
351 . Sheets Sheet (Shift+S) jump between sheets or join them together
352 . Options Sheet (Shift+O) edit configuration options
353 . Commandlog (Shift+D) modify and save commands for replay
354 . Error Sheet (Ctrl+E) view last error
355 . Status History (Ctrl+P) view history of status messages
356 . Threads Sheet (Ctrl+T) view, cancel, and profile
357 asynchronous threads
358
359 Derived Sheets
360 . Frequency Table (Shift+F) group rows by column value, with
361 aggregations of other columns
362 . Describe Sheet (Shift+I) view summary statistics for each column
363 . Pivot Table (Shift+W) group rows by key and summarize current
364 column
365 . Melted Sheet (Shift+M) unpivot non-key columns into
366 variable/value columns
367 . Transposed Sheet (Shift+T) open new sheet with rows and columns
368 transposed
369
370 INTERNAL SHEETS
371 Directory Sheet
372 (global commands)
373 Space open-dir-current
374 open the Directory Sheet for the current directory
375 (sheet-specific commands)
376 Enter gEnter open current/selected file(s) as new sheet(s)
377 ^O g^O open current/selected file(s) in external $EDITOR
378 ^R z^R gz^R reload information for all/current/selected file(s)
379 d gd delete current/selected file(s) from filesystem, upon
380 commit
381 y gy directory
382 copy current/selected file(s) to given directory,
383 upon commit
384 e ge name rename current/selected file(s) to name
385 ` (backtick) open parent directory
386 z^S commit changes to file system
387
388 Plugins Sheet
389 Browse through a list of available plugins. VisiData needs to be
390 restarted before plugin activation takes effect. Installation may require
391 internet access.
392 (global commands)
393 Space open-plugins
394 open the Plugins Sheet
395 (sheet-specific commands)
396 a install and activate current plugin
397 d deactivate current plugin
398
399 Memory Sheet
400 Browse through a list of stored values, referanceable in expressions
401 through their name.
402 (global commands)
403 Alt+Shift+M open the Memory Sheet
404 Alt+M name store value in current cell in Memory Sheet under
405 name
406 (sheet-specific commands)
407 e edit either value or name, to edit reference
408
409 METASHEETS
410 Columns Sheet (Shift+C)
411 Properties of columns on the source sheet can be changed with standard
412 editing commands (e ge g= Del) on the Columns Sheet. Multiple aggregators
413 can be set by listing them (separated by spaces) in the aggregators
414 column. The 'g' commands affect the selected rows, which are the literal
415 columns on the source sheet.
416 (global commands)
417 gC open Columns Sheet with all visible columns from all
418 sheets
419 (sheet-specific commands)
420 & add column from appending selected source columns
421 g! gz! toggle/unset selected columns as key columns on
422 source sheet
423 g+ aggregator add Ar aggregator No to selected source columns
424 g- (hyphen) hide selected columns on source sheet
425 g~ g# g% g$ g@ gz# z%
426 set type of selected columns on source sheet to
427 str/int/float/currency/date/len/floatsi
428 Enter open a Frequency Table sheet grouped by column
429 referenced in current row
430
431 Sheets Sheet (Shift+S)
432 open Sheets Stack, which contains only the active sheets on the current
433 stack
434 (global commands)
435 gS open Sheets Sheet, which contains all sheets from
436 current session, active and inactive
437 Alt number jump to sheet number
438 (sheet-specific commands)
439 Enter jump to sheet referenced in current row
440 gEnter push selected sheets to top of sheet stack
441 a add row to reference a new blank sheet
442 gC gI open Columns Sheet/Describe Sheet with all visible
443 columns from selected sheets
444 g^R reload all selected sheets
445 z^C gz^C abort async threads for current/selected sheets(s)
446 g^S save selected or all sheets
447 & jointype merge selected sheets with visible columns from all,
448 keeping rows according to jointype:
449 . inner keep only rows which match keys on all
450 sheets
451 . outer keep all rows from first selected sheet
452 . full keep all rows from all sheets (union)
453 . diff keep only rows NOT in all sheets
454 . append combine all rows from all sheets
455 . concat similar to 'append' but keep first sheet
456 type and columns
457 . extend copy first selected sheet, keeping all rows
458 and sheet type, and extend with columns from other
459 sheets
460 . merge mostly keep all rows from first selected
461 sheet, except prioritise cells with non-null/non-
462 error values
463
464 Options Sheet (Shift+O)
465 (global commands)
466 Shift+O edit global options (apply to all sheets)
467 zO edit sheet options (apply to current sheet only)
468 gO open options.config as TextSheet
469 (sheet-specific commands)
470 Enter e edit option at current row
471 d remove option override for this context
472 ^S save option configuration to foo.visidatarc
473
474 CommandLog (Shift+D)
475 (global commands)
476 D open current sheet's CommandLog with all other loose
477 ends removed; includes commands from parent sheets
478 gD open global CommandLog for all commands executed in
479 the current session
480 zD open current sheet's CommandLog with the parent
481 sheets commands' removed
482 (sheet-specific commands)
483 x replay command in current row
484 gx replay contents of entire CommandLog
485 ^C abort replay
486
487 Threads Sheet (Ctrl+T)
488 (global commands)
489 ^T open global Threads Sheet for all asynchronous
490 threads running
491 z^T open current sheet's Threads Sheet
492 (sheet-specific commands)
493 ^C abort thread at current row
494 g^C abort all threads on current Threads Sheet
495
496 DERIVED SHEETS
497 Frequency Table (Shift+F)
498 A Frequency Table groups rows by one or more columns, and includes
499 summary columns for those with aggregators.
500 (global commands)
501 gF open Frequency Table, grouped by all key columns on
502 source sheet
503 zF open one-line summary for all rows and selected rows
504 (sheet-specific commands)
505 s t u select/toggle/unselect these entries in source sheet
506 Enter gEnter open copy of source sheet with rows that are grouped
507 in current cell / selected rows
508
509 Describe Sheet (Shift+I)
510 A Describe Sheet contains descriptive statistics for all visible columns.
511 (global commands)
512 gI open Describe Sheet for all visible columns on all
513 sheets
514 (sheet-specific commands)
515 zs zu select/unselect rows on source sheet that are being
516 described in current cell
517 ! toggle/unset current column as a key column on source
518 sheet
519 Enter open a Frequency Table sheet grouped on column
520 referenced in current row
521 zEnter open copy of source sheet with rows described in cur‐
522 rent cell
523
524 Pivot Table (Shift+W)
525 Set key column(s) and aggregators on column(s) before pressing Shift+W on
526 the column to pivot.
527 (sheet-specific commands)
528 Enter open sheet of source rows aggregated in current pivot
529 row
530 zEnter open sheet of source rows aggregated in current pivot
531 cell
532
533 Melted Sheet (Shift+M)
534 Open Melted Sheet (unpivot), with key columns retained and all non-key
535 columns reduced to Variable-Value rows.
536 (global commands)
537 gM regex open Melted Sheet (unpivot), with key columns
538 retained and regex capture groups determining how the
539 non-key columns will be reduced to Variable-Value
540 rows.
541
542 Python Object Sheet (^X ^Y g^Y z^Y)
543 (sheet-specific commands)
544 Enter dive further into Python object
545 v toggle show/hide for methods and hidden properties
546 gv zv show/hide methods and hidden properties
547
549 Add -n/--nonglobal to make subsequent CLI options sheet-specific
550 (applying only to paths specified directly on the CLI). By default, CLI
551 options apply to all sheets.
552
553 Options can also be set via the Options Sheet or a .visidatarc (see
554 FILES).
555
556 -P=longname preplay longname before replay or regular
557 launch; limited to Base Sheet bound commands
558 +toplevel:subsheet:col:row launch vd with subsheet of toplevel at
559 top-of-stack, and cursor at col and row; all
560 arguments are optional
561
562 -f, --filetype=filetype tsv set loader to use for
563 filetype instead of file extension
564 -d, --delimiter=delimiter \t field delimiter to use
565 for tsv/usv filetype
566 -y, --confirm-overwrite=F True overwrite existing files
567 without confirmation
568 -N, --nothing=T False disable loading
569 .visidatarc and plugin addons
570 --visidata-dir=str ~/.visidata/ directory to load and
571 store additional files
572 --mouse-interval=int 1 max time between
573 press/release for click
574 (ms)
575 --null-value=NoneType None a value to be counted as
576 null
577 --undo=bool True enable undo/redo
578 --col-cache-size=int 0 max number of cache en‐
579 tries in each cached col‐
580 umn
581 --clean-names False clean column/sheet names
582 to be valid Python iden‐
583 tifiers
584 --default-width=int 20 default column width
585 --default-height=int 4 default column height
586 --textwrap-cells=bool True wordwrap text for multi‐
587 line rows
588 --quitguard False confirm before quitting
589 modified sheet
590 --debug False exit on error and display
591 stacktrace
592 --skip=int 0 skip N rows before header
593 --header=int 1 parse first N rows as
594 column names
595 --load-lazy False load subsheets always
596 (False) or lazily (True)
597 --force-256-colors False use 256 colors even if
598 curses reports fewer
599 --note-pending=str ⌛ note to display for pend‐
600 ing cells
601 --note-format-exc=str ? cell note for an excep‐
602 tion during formatting
603 --note-getter-exc=str ! cell note for an excep‐
604 tion during computation
605 --note-type-exc=str ! cell note for an excep‐
606 tion during type conver‐
607 sion
608 --scroll-incr=int -3 amount to scroll with
609 scrollwheel
610 --name-joiner=str _ string to join sheet or
611 column names
612 --value-joiner=str string to join display
613 values
614 --wrap False wrap text to fit window
615 width on TextSheet
616 --save-filetype=str tsv specify default file type
617 to save as
618 --profile False enable profiling on
619 threads
620 --min-memory-mb=int 0 minimum memory to con‐
621 tinue loading and async
622 processing
623 --encoding=str utf-8 encoding passed to
624 codecs.open
625 --encoding-errors=str surrogateescape encoding_errors passed to
626 codecs.open
627 --input-history=str basename of file to store
628 persistent input history
629 --bulk-select-clear False clear selected rows be‐
630 fore new bulk selections
631 --some-selected-rows False if no rows selected, if
632 True, someSelectedRows
633 returns all rows; if
634 False, fails
635 --delimiter=str field delimiter to use
636 for tsv/usv filetype
637 --row-delimiter=str " row delimiter to use
638 for tsv/usv filetype
639 --tsv-safe-newline=str replacement for newline
640 character when saving to
641 tsv
642 --tsv-safe-tab=str replacement for tab char‐
643 acter when saving to tsv
644 --visibility=int 0 visibility level (0=low,
645 1=high)
646 --default-sample-size=int 100 number of rows to sample
647 for regex.split (0=all)
648 --fmt-expand-dict=str %s.%s format str to use for
649 names of columns expanded
650 from dict (colname, key)
651 --fmt-expand-list=str %s[%s] format str to use for
652 names of columns expanded
653 from list (colname, in‐
654 dex)
655 --json-indent=NoneType None indent to use when saving
656 json
657 --json-sort-keys False sort object keys when
658 saving to json
659 --default-colname=str column name to use for
660 non-dict rows
661 --filetype=str specify file type
662 --replay-wait=float 0.0 time to wait between re‐
663 played commands, in sec‐
664 onds
665 --replay-movement False insert movements during
666 replay
667 --rowkey-prefix=str キ string prefix for rowkey
668 in the cmdlog
669 --cmdlog-histfile=str file to autorecord each
670 cmdlog action to
671 --confirm-overwrite=bool True whether to prompt for
672 overwrite confirmation on
673 save
674 --safe-error=str #ERR error string to use while
675 saving
676 --clipboard-copy-cmd=str xclip -selection clipboard -filter
677 command to copy stdin to
678 system clipboard
679 --clipboard-paste-cmd=str xclip -selection clipboard -o
680 command to send contents
681 of system clipboard to
682 stdout
683 --fancy-chooser False a nicer selection inter‐
684 face for aggregators and
685 jointype
686 --describe-aggrs=str mean stdev numeric aggregators to
687 calculate on Describe
688 sheet
689 --histogram-bins=int 0 number of bins for his‐
690 togram of numeric columns
691 --numeric-binning False bin numeric columns into
692 ranges
693 --regex-flags=str I flags to pass to re.com‐
694 pile() [AILMSUX]
695 --regex-maxsplit=int 0 maxsplit to pass to
696 regex.split
697 --show-graph-labels=bool True show axes and legend on
698 graph
699 --plot-colors=str list of distinct colors
700 to use for plotting dis‐
701 tinct objects
702 --zoom-incr=float 2.0 amount to multiply cur‐
703 rent zoomlevel when zoom‐
704 ing
705 --motd-url=str source of randomized
706 startup messages
707 --dir-recurse False walk source path recur‐
708 sively on DirSheet
709 --dir-hidden False load hidden files on
710 DirSheet
711 --config=Path /home/kefala/.visidatarc
712 config file to exec in
713 Python
714 --play=str file.vd to replay
715 --batch False replay in batch mode
716 (with no interface and
717 all status sent to std‐
718 out)
719 --output=NoneType None save the final visible
720 sheet to output at the
721 end of replay
722 --preplay=str longnames to preplay be‐
723 fore replay
724 --imports=str plugins imports to preload before
725 .visidatarc (command-line
726 only)
727 --nothing False no config, no plugins,
728 nothing extra
729 --unfurl-empty False if unfurl includes rows
730 for empty containers
731 --incr-base=float 1.0 start value for column
732 increments
733 --csv-dialect=str excel dialect passed to
734 csv.reader
735 --csv-delimiter=str , delimiter passed to
736 csv.reader
737 --csv-quotechar=str " quotechar passed to
738 csv.reader
739 --csv-skipinitialspace=bool True skipinitialspace passed
740 to csv.reader
741 --csv-escapechar=NoneType None escapechar passed to
742 csv.reader
743 --csv-lineterminator=str " lineterminator passed
744 to csv.writer
745 --safety-first False sanitize input/output to
746 handle edge cases, with a
747 performance cost
748 --xlsx-meta-columns False include columns for cell
749 objects, font colors, and
750 fill colors
751 --sqlite-onconnect=str sqlite statement to exe‐
752 cute after opening a con‐
753 nection
754 --fixed-rows=int 1000 number of rows to check
755 for fixed width columns
756 --fixed-maxcols=int 0 max number of fixed-width
757 columns to create (0 is
758 no max)
759 --postgres-schema=str public The desired schema for
760 the Postgres database
761 --http-max-next=int 0 max next.url pages to
762 follow in http response
763 --http-req-headers=dict {} http headers to send to
764 requests
765 --html-title=str <h2>{sheet.name}</h2>
766 table header when saving
767 to html
768 --pcap-internet=str n (y/s/n) if save_dot in‐
769 cludes all internet hosts
770 separately (y), combined
771 (s), or does not include
772 the internet (n)
773 --xml-parser-huge-tree=bool True allow very deep trees and
774 very long text content
775 --graphviz-edge-labels=bool True whether to include edge
776 labels on graphviz dia‐
777 grams
778 --npy-allow-pickle False numpy allow unpickling
779 objects (unsafe)
780 --pdf-tables False parse PDF for tables in‐
781 stead of pages of text
782 --plugins-url=str https://visidata.org/plugins/plugins.jsonl
783 source of plugins sheet
784 --plugins-autoload=bool True do not autoload plugins
785 if False
786
787 DISPLAY OPTIONS
788 Display options can only be set via the Options Sheet or a .visidatarc
789 (see FILES).
790
791 disp_splitwin_pct 0 height of second sheet on screen
792 color_sidebar black on 114 blue color of sidebar
793 disp_float_fmt {:.02f} default fmtstr to format for
794 float values
795 disp_int_fmt {:d} default fmtstr to format for int
796 values
797 disp_note_none ⌀ visible contents of a cell whose
798 value is None
799 disp_truncator … indicator that the contents are
800 only partially visible
801 disp_oddspace · displayable character for odd
802 whitespace
803 disp_more_left < header note indicating more col‐
804 umns to the left
805 disp_more_right > header note indicating more col‐
806 umns to the right
807 disp_error_val displayed contents for computa‐
808 tion exception
809 disp_ambig_width 1 width to use for unicode chars
810 marked ambiguous
811 disp_pending string to display in pending
812 cells
813 color_note_pending bold magenta color of note in pending cells
814 color_note_type 226 yellow color of cell note for non-str
815 types in anytype columns
816 color_note_row 220 yellow color of row note on left edge
817 disp_column_sep │ separator between columns
818 disp_keycol_sep ║ separator between key columns and
819 rest of columns
820 disp_rowtop_sep │
821 disp_rowmid_sep ⁝
822 disp_rowbot_sep ⁝
823 disp_rowend_sep ║
824 disp_keytop_sep ║
825 disp_keymid_sep ║
826 disp_keybot_sep ║
827 disp_endtop_sep ║
828 disp_endmid_sep ║
829 disp_endbot_sep ║
830 disp_selected_note •
831 disp_sort_asc ↑↟⇞⇡⇧⇑ characters for ascending sort
832 disp_sort_desc ↓↡⇟⇣⇩⇓ characters for descending sort
833 color_default white on black the default fg and bg colors
834 color_default_hdr bold color of the column headers
835 color_bottom_hdr underline color of the bottom header row
836 color_current_row reverse color of the cursor row
837 color_current_col bold color of the cursor column
838 color_current_hdr bold reverse color of the header for the cur‐
839 sor column
840 color_column_sep 246 blue color of column separators
841 color_key_col 81 cyan color of key columns
842 color_hidden_col 8 color of hidden columns on
843 metasheets
844 color_selected_row 215 yellow color of selected rows
845 disp_rstatus_fmt {sheet.longname} {sheet.nRows:9d} {sheet.rowtype}
846 {sheet.modifiedStatus}
847 {sheet.options.disp_selected_note}{sheet.nSelectedRows}
848 right-side status format string
849 disp_status_fmt {sheet.shortcut}› {sheet.name}|
850 status line prefix
851 disp_lstatus_max 0 maximum length of left status
852 line
853 disp_status_sep │ separator between statuses
854 color_keystrokes bold 233 black on 110 cyan
855 color of input keystrokes on sta‐
856 tus line
857 color_status bold black on 110 cyan
858 status line color
859 color_error red error message color
860 color_warning yellow warning message color
861 color_top_status underline top window status bar color
862 color_active_status black on 110 cyan active window status bar color
863 color_inactive_status 8 on black inactive window status bar color
864 color_working green color of system running smoothly
865 color_edit_cell white cell color to use when editing
866 cell
867 disp_edit_fill _ edit field fill character
868 disp_unprintable · substitute character for unprint‐
869 ables
870 disp_currency_fmt %.02f default fmtstr to format for cur‐
871 rency values
872 disp_date_fmt %Y-%m-%d default fmtstr to strftime for
873 date values
874 disp_replay_play ▶ status indicator for active re‐
875 play
876 disp_replay_pause ‖ status indicator for paused re‐
877 play
878 color_status_replay green color of replay status indicator
879 disp_formatter generic formatter to use for display and
880 saving
881 disp_menu True show menu on top line when not
882 active
883 disp_menu_keys True show keystrokes inline in sub‐
884 menus
885 color_menu black on 110 cyan color of menu items in general
886 color_menu_active 223 yellow on black
887 color of active menu items
888 color_menu_spec black on 34 green color of sheet-specific menu
889 items
890 color_menu_help black italic on 110 cyan
891 color of helpbox
892 disp_menu_boxchars ││──┌┐└┘├┤ box characters to use for menus
893 disp_menu_more » command submenu indicator
894 disp_menu_push ⎘ indicator if command pushes sheet
895 onto sheet stack
896 disp_menu_input … indicator if input required for
897 command
898 disp_menu_fmt Ctrl+H for help menu
899 right-side menu format string
900 disp_histogram ■ histogram element character
901 disp_histolen 50 width of histogram column
902 disp_canvas_charset
903 ⠀⠁⠂⠃⠄⠅⠆⠇⠈⠉⠊⠋⠌⠍⠎⠏⠐⠑⠒⠓⠔⠕⠖⠗⠘⠙⠚⠛⠜⠝⠞⠟⠠⠡⠢⠣⠤⠥⠦⠧⠨⠩⠪⠫⠬⠭⠮⠯⠰⠱⠲⠳⠴⠵⠶⠷⠸⠹⠺⠻⠼⠽⠾⠿⡀⡁⡂⡃⡄⡅⡆⡇⡈⡉⡊⡋⡌⡍⡎⡏⡐⡑⡒⡓⡔⡕⡖⡗⡘⡙⡚⡛⡜⡝⡞⡟⡠⡡⡢⡣⡤⡥⡦⡧⡨⡩⡪⡫⡬⡭⡮⡯⡰⡱⡲⡳⡴⡵⡶⡷⡸⡹⡺⡻⡼⡽⡾⡿⢀⢁⢂⢃⢄⢅⢆⢇⢈⢉⢊⢋⢌⢍⢎⢏⢐⢑⢒⢓⢔⢕⢖⢗⢘⢙⢚⢛⢜⢝⢞⢟⢠⢡⢢⢣⢤⢥⢦⢧⢨⢩⢪⢫⢬⢭⢮⢯⢰⢱⢲⢳⢴⢵⢶⢷⢸⢹⢺⢻⢼⢽⢾⢿⣀⣁⣂⣃⣄⣅⣆⣇⣈⣉⣊⣋⣌⣍⣎⣏⣐⣑⣒⣓⣔⣕⣖⣗⣘⣙⣚⣛⣜⣝⣞⣟⣠⣡⣢⣣⣤⣥⣦⣧⣨⣩⣪⣫⣬⣭⣮⣯⣰⣱⣲⣳⣴⣵⣶⣷⣸⣹⣺⣻⣼⣽⣾⣿
904 charset to render 2x4 blocks on
905 canvas
906 disp_pixel_random False randomly choose attr from set of
907 pixels instead of most common
908 color_graph_hidden 238 blue color of legend for hidden attri‐
909 bute
910 color_graph_selected bold color of selected graph points
911 color_graph_axis bold color for graph axis labels
912 color_add_pending green color for rows pending add
913 color_change_pending reverse yellow color for cells pending modifica‐
914 tion
915 color_delete_pending red color for rows pending delete
916 color_xword_active green color of active clue
917
919 vd
920 launch DirSheet for current directory
921
922 vd foo.tsv
923 open the file foo.tsv in the current directory
924
925 vd -f ddw
926 open blank sheet of type ddw
927
928 vd new.tsv
929 open new blank tsv sheet named new
930
931 vd -f sqlite bar.db
932 open the file bar.db as a sqlite database
933
934 vd foo.tsv -n -f sqlite bar.db
935 open foo.tsv as tsv and bar.db as a sqlite database
936
937 vd -f sqlite foo.tsv bar.db
938 open both foo.tsv and bar.db as a sqlite database
939
940 vd -b countries.fixed -o countries.tsv
941 convert countries.fixed (in fixed width format) to countries.tsv (in tsv
942 format)
943
944 vd postgres://username:password@hostname:port/database
945 open a connection to the given postgres database
946
947 vd --play tests/pivot.vd --replay-wait 1 --output tests/pivot.tsv
948 replay tests/pivot.vd, waiting 1 second between commands, and output the
949 final sheet to test/pivot.tsv
950
951 ls -l | vd -f fixed --skip 1 --header 0
952 parse the output of ls -l into usable data
953
954 ls | vd | lpr
955 interactively select a list of filenames to send to the printer
956
957 vd newfile.tsv
958 open a blank sheet named newfile if file does not exist
959
960 vd sample.xlsx +:sheet1:2:3
961 launch with sheet1 at top-of-stack, and cursor at column 2 and row 3
962
963 vd -P open-plugins
964 preplay longname open-plugins before starting the session
965
967 At the start of every session, VisiData looks for $HOME/.visidatarc, and
968 calls Python exec() on its contents if it exists. For example:
969
970 options.min_memory_mb=100 # stop processing without 100MB free
971
972 bindkey('0', 'go-leftmost') # alias '0' to go to first column, like vim
973
974 def median(values):
975 L = sorted(values)
976 return L[len(L)//2]
977
978 vd.aggregator('median', median)
979
980 Functions defined in .visidatarc are available in python expressions
981 (e.g. in derived columns).
982
984 Core VisiData includes these sources:
985
986 tsv (tab-separated value)
987 Plain and simple. VisiData writes tsv format by default. See the
988 --tsv-delimiter option.
989
990 csv (comma-separated value)
991 .csv files are a scourge upon the earth, and still regrettably
992 common.
993 See the --csv-dialect, --csv-delimiter, --csv-quotechar, and
994 --csv-skipinitialspace options.
995 Accepted dialects are excel-tab, unix, and excel.
996
997 fixed (fixed width text)
998 Columns are autodetected from the first 1000 rows (adjustable with
999 --fixed-rows).
1000
1001 json (single object) and jsonl/ndjson/ldjson (one object per line).
1002 Cells containing lists (e.g. [3]) or dicts ({3}) can be expanded
1003 into new columns with ( and unexpanded with ).
1004
1005 sqlite
1006 May include multiple tables. The initial sheet is the table
1007 directory; Enter loads the entire table into memory. z^S saves
1008 modifications to source.
1009
1010 URL schemes are also supported:
1011 http (requires requests); can be used as transport for with another
1012 filetype
1013
1014 For a list of all remaining formats supported by VisiData, see
1015 https://visidata.org/formats.
1016
1017 In addition, .zip, .gz, .bz2, .xz, ,zstd, and .zst files are decompressed
1018 on the fly.
1019
1021 VisiData was made by Saul Pwanson <vd@saul.pw>.
1022
1023Linux/MacOS January 11, 2023 Linux/MacOS