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