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
41 gq quit all sheets (clean exit)
42
43 ^H view this man page
44 z^H view sheet of command longnames and keybindings
45 Space longname execute command by its longname
46
47 U undo the most recent modification (requires enabled
48 options.undo)
49 R redo the most recent undo (requires enabled
50 options.undo)
51
52 Cursor Movement
53 Arrow PgUp Home go as expected
54 h j k l go left/down/up/right
55 gh gj gk gl go all the way to the left/bottom/top/right of sheet
56 G gg go all the way to the bottom/top of sheet
57 ^B ^F scroll one page back/forward
58 zz scroll current row to center of screen
59
60 ^^ (Ctrl+^) jump to previous sheet (swaps with current sheet)
61
62 / ? regex search for regex forward/backward in current column
63 g/ g? regex search for regex forward/backward over all visible
64 columns
65 z/ z? expr search by Python expr forward/backward in current column
66 (with column names as variables)
67 n N go to next/previous match from last regex search
68
69 < > go up/down current column to next value
70 z< z> go up/down current column to next null value
71 { } go up/down current column to next selected row
72
73 c regex go to next column with name matching regex
74 r regex go to next row with key matching regex
75 zc zr number go to column/row number (0-based)
76
77 H J K L slide current row/column left/down/up/right
78 gH gJ gK gL slide current row/column all the way to the left/bot‐
79 tom/top/right of sheet
80 zH zJ zK zK number
81 slide current row/column number positions to the
82 left/down/up/right
83
84 zh zj zk zl scroll one left/down/up/right
85
86 Column Manipulation
87 _ (underscore)
88 toggle width of current column between full and default
89 width
90 g_ toggle widths of all visible columns between full and
91 default width
92 z_ number adjust width of current column to number
93 gz_ number adjust widths of all visible columns to Ar number
94
95 - (hyphen) hide current column
96 z- reduce width of current column by half
97 gv unhide all columns
98
99 ! z! toggle/unset current column as a key column
100 ~ # % $ @ z#
101 set type of current column to str/int/float/cur‐
102 rency/date/len
103 ^ edit name of current column
104 g^ set names of all unnamed visible columns to contents of
105 selected rows (or current row)
106 z^ set name of current column to combined contents of cur‐
107 rent cell in selected rows (or current row)
108 gz^ set name of all visible columns to combined contents of
109 current column for selected rows (or current row)
110
111 = expr create new column from Python expr, with column names,
112 and attributes, as variables
113 g= expr set current column for selected rows to result of Python
114 expr
115 gz= expr set current column for selected rows to the items in
116 result of Python sequence expr
117 z= expr evaluate Python expression on current row and set
118 current cell with result of Python expr
119
120 i (iota) add column with incremental values
121 gi set current column for selected rows to incremental
122 values
123 zi step add column with values at increment step
124 gzi step set current column for selected rows at increment step
125
126 ' (tick) add a frozen copy of current column with all cells eval‐
127 uated
128 g' open a frozen copy of current sheet with all visible
129 columns evaluated
130 z' gz' add/reset cache for current/all visible column(s)
131
132 : regex add new columns from regex split; number of columns
133 determined by example row at cursor
134 ; regex add new columns from capture groups of regex (also
135 requires example row)
136 z; expr create new column from bash expr, with $columnNames as
137 variables
138 * regex/subst add column derived from current column, replacing regex
139 with subst (may include \1 backrefs)
140 g* gz* regex/subst
141 modify selected rows in current/all visible column(s),
142 replacing regex with subst (may include \1 backrefs)
143
144 ( g( expand current/all visible column(s) of lists (e.g. [3])
145 or dicts (e.g. {3}) fully
146 z( gz( depth expand current/all visible column(s) of lists (e.g. [3])
147 or dicts (e.g. {3}) to given depth (0= fully)
148 ) unexpand current column; restore original column and re‐
149 move other columns at this level
150 zM row-wise expand current column of lists (e.g. [3]) or
151 dicts (e.g. {3}) within that column
152
153 Row Selection
154 s t u select/toggle/unselect current row
155 gs gt gu select/toggle/unselect all rows
156 zs zt zu select/toggle/unselect all rows from top to cursor
157 gzs gzt gzu select/toggle/unselect all rows from cursor to bottom
158 | \ regex select/unselect rows matching regex in current column
159 g| g\ regex select/unselect rows matching regex in any visible
160 column
161 z| z\ expr select/unselect rows matching Python expr in any visible
162 column
163 , (comma) select rows matching display value of current cell in
164 current column
165 g, select rows matching display value of current row in all
166 visible columns
167 z, gz, select rows matching typed value of current cell/row in
168 current column/all visible columns
169
170 Row Sorting/Filtering
171 [ ] sort ascending/descending by current column; replace any
172 existing sort criteria
173 g[ g] sort ascending/descending by all key columns; replace
174 any existing sort criteria
175 z[ z] sort ascending/descending by current column; add to ex‐
176 isting sort criteria
177 gz[ gz] sort ascending/descending by all key columns; add to ex‐
178 isting sort criteria
179 " open duplicate sheet with only selected rows
180 g" open duplicate sheet with all rows
181 gz" open duplicate sheet with deepcopy of selected rows
182
183 Editing Rows and Cells
184 a za append blank row/column; appended columns cannot be
185 copied to clipboard
186 ga gza number append number blank rows/columns
187 d gd delete current/selected row(s)
188 y gy yank (copy) current/all selected row(s) to clipboard in
189 Memory Sheet
190 zy gzy yank (copy) contents of current column for
191 current/selected row(s) to clipboard in Memory Sheet
192 zd gzd set contents of current column for current/selected
193 row(s) to options.null_value
194 p P paste clipboard rows after/before current row
195 zp gzp set cells of current column for current/selected row(s)
196 to last clipboard value
197 Y gY yank (copy) current/all selected row(s) to system
198 clipboard (using options.clipboard_copy_cmd)
199 zY gzY yank (copy) contents of current column for
200 current/selected row(s) to system clipboard (using
201 options.clipboard_copy_cmd)
202 f fill null cells in current column with contents of non-
203 null cells up the current column
204 e text edit contents of current cell
205 ge text set contents of current column for selected rows to text
206
207 Commands While Editing Input
208 Enter ^C accept/abort input
209 ^O open external $EDITOR to edit contents
210 ^R reload initial value
211 ^A ^E go to beginning/end of line
212 ^B ^F go back/forward one character
213 ^← ^→ (arrow) go back/forward one word
214 ^H ^D delete previous/current character
215 ^T transpose previous and current characters
216 ^U ^K clear from cursor to beginning/end of line
217 ^Y paste from cell clipboard
218 Backspace Del delete previous/current character
219 Insert toggle insert mode
220 Up Down set contents to previous/next in history
221 Tab Shift+Tab autocomplete input (when available)
222 Shift+Arrow move cursor in direction of Arrow and re-enter edit
223 mode
224
225 Data Toolkit
226 o input open input in VisiData
227 ^S g^S filename save current/all sheet(s) to filename in format
228 determined by extension (default .tsv)
229 Note: if the format does not support multisave, or the
230 filename ends in a /, a directory will be created.
231 z^S filename save current column only to filename in format
232 determined by extension (default .tsv)
233 ^D filename.vd save CommandLog to filename.vd file
234 A open new blank sheet with one column
235 T open new sheet that has rows and columns of current
236 sheet transposed
237
238 + aggregator add aggregator to current column (see Frequency Table)
239 z+ aggregator display result of aggregator over values in selected
240 rows for current column; store result in Memory Sheet
241 & concatenate top two sheets in Sheets Stack
242 g& concatenate all sheets in Sheets Stack
243
244 Data Visualization
245 . (dot) plot current numeric column vs key columns. The numeric
246 key column is used for the x-axis; categorical key column
247 values determine color.
248 g. plot a graph of all visible numeric columns vs key
249 columns.
250
251 If rows on the current sheet represent plottable coordinates (as in .shp
252 or vector .mbtiles sources), . plots the current row, and g. plots all
253 selected rows (or all rows if none selected).
254
255 Canvas-specific Commands
256 + - increase/decrease zoom level, centered on cursor
257 _ (underscore) zoom to fit full extent
258 z_ (underscore) set aspect ratio
259 x xmin xmax set xmin/xmax on graph
260 y ymin ymax set ymin/ymax on graph
261 s t u select/toggle/unselect rows on source sheet con‐
262 tained within canvas cursor
263 gs gt gu select/toggle/unselect rows on source sheet visi‐
264 ble on screen
265 d delete rows on source sheet contained within can‐
266 vas cursor
267 gd delete rows on source sheet visible on screen
268 Enter open sheet of source rows contained within canvas
269 cursor
270 gEnter open sheet of source rows visible on screen
271 1 - 9 toggle display of layers
272 ^L redraw all pixels on canvas
273 v toggle show_graph_labels option
274 mouse scrollwheel zoom in/out of canvas
275 left click-drag set canvas cursor
276 right click-drag scroll canvas
277
278 Split Screen
279 Z split screen in half, so that second sheet on the stack is
280 visible in a second pane
281 zZ split screen, and queries for height of second pane
282
283 Split Window specific Commands
284 gZ close an already split screen, current pane full
285 screens
286 Z push second sheet on current pane's stack to the
287 top of the other pane's stack
288 Tab jump to other pane
289 gTab swap panes
290 g^^ (g Ctrl+^) cycle through sheets
291
292 Other Commands
293 Q quit current sheet and remove it from the CommandLog
294 v toggle sheet-specific visibility (multi-line rows on
295 Sheet, legends/axes on Graph)
296
297 ^E g^E view traceback for most recent error(s)
298 z^E view traceback for error in current cell
299
300 ^L refresh screen
301 ^R reload current sheet
302 z^R clear cache for current column
303 ^Z suspend VisiData process
304 ^G show cursor position and bounds of current sheet on sta‐
305 tus line
306 ^V show version and copyright information on status line
307 ^P open Status History
308 m keystroke first, begin recording macro; second, prompt for
309 keystroke No, and complete recording. Macro can then be
310 executed everytime provided keystroke is used. Will
311 override existing keybinding. Macros will run on current
312 row, column, sheet.
313 gm open an index of all existing macros. Can be directly
314 viewed with Enter, and then modified with ^S.
315
316 ^Y z^Y g^Y open current row/cell/sheet as Python object
317 ^X expr evaluate Python expr and opens result as Python object
318 z^X expr evaluate Python expr, in context of current row, and
319 open result as Python object
320 g^X stmt execute Python stmt in the global scope
321
322 Internal Sheets List
323 . VisiDataMenu (Shift+V) browse list of core sheets
324 . Directory Sheet browse properties of files in a directory
325 . Plugins Sheet browse, install, and (de)activate plugins
326 . Memory Sheet (Alt+Shift+M) browse saved values, including
327 clipboard
328
329 Metasheets
330 . Columns Sheet (Shift+C) edit column properties
331 . Sheets Sheet (Shift+S) jump between sheets or join them together
332 . Options Sheet (Shift+O) edit configuration options
333 . Commandlog (Shift+D) modify and save commands for replay
334 . Error Sheet (Ctrl+E) view last error
335 . Status History (Ctrl+P) view history of status messages
336 . Threads Sheet (Ctrl+T) view, cancel, and profile
337 asynchronous threads
338
339 Derived Sheets
340 . Frequency Table (Shift+F) group rows by column value, with
341 aggregations of other columns
342 . Describe Sheet (Shift+I) view summary statistics for each column
343 . Pivot Table (Shift+W) group rows by key and summarize current
344 column
345 . Melted Sheet (Shift+M) unpivot non-key columns into
346 variable/value columns
347 . Transposed Sheet (Shift+T) open new sheet with rows and columns
348 transposed
349
350 INTERNAL SHEETS
351 VisiDataMenu (Shift+V)
352 (sheet-specific commands)
353 Enter load sheet in current row
354
355 Directory Sheet
356 (global commands)
357 Space open-dir-current
358 open the Directory Sheet for the current directory
359 (sheet-specific commands)
360 Enter gEnter open current/selected file(s) as new sheet(s)
361 ^O g^O open current/selected file(s) in external $EDITOR
362 ^R z^R gz^R reload information for all/current/selected file(s)
363
364 Plugins Sheet
365 Browse through a list of available plugins. VisiData needs to be
366 restarted before plugin activation takes effect. Installation may require
367 internet access.
368 (global commands)
369 Space open-plugins
370 open the Plugins Sheet
371 (sheet-specific commands)
372 a install and activate current plugin
373 d deactivate current plugin
374
375 Memory Sheet
376 Browse through a list of stored values, referanceable in expressions
377 through their name.
378 (global commands)
379 Alt+Shift+M open the Memory Sheet
380 Alt+M name store value in current cell in Memory Sheet under
381 name
382 (sheet-specific commands)
383 e edit either value or name, to edit reference
384
385 METASHEETS
386 Columns Sheet (Shift+C)
387 Properties of columns on the source sheet can be changed with standard
388 editing commands (e ge g= Del) on the Columns Sheet. Multiple aggregators
389 can be set by listing them (separated by spaces) in the aggregators
390 column. The 'g' commands affect the selected rows, which are the literal
391 columns on the source sheet.
392 (global commands)
393 gC open Columns Sheet with all visible columns from all
394 sheets
395 (sheet-specific commands)
396 & add column from concatenating selected source columns
397 g! gz! toggle/unset selected columns as key columns on
398 source sheet
399 g+ aggregator add Ar aggregator No to selected source columns
400 g- (hyphen) hide selected columns on source sheet
401 g~ g# g% g$ g@ gz# z%
402 set type of selected columns on source sheet to
403 str/int/float/currency/date/len/floatsi
404 Enter open a Frequency Table sheet grouped by column
405 referenced in current row
406
407 Sheets Sheet (Shift+S)
408 open Sheets Stack, which contains only the active sheets on the current
409 stack
410 (global commands)
411 gS open Sheets Sheet, which contains all sheets from
412 current session, active and inactive
413 Alt number jump to sheet number
414 (sheet-specific commands)
415 Enter jump to sheet referenced in current row
416 gEnter push selected sheets to top of sheet stack
417 a add row to reference a new blank sheet
418 gC gI open Columns Sheet/Describe Sheet with all visible
419 columns from selected sheets
420 g^R reload all selected sheets
421 z^C gz^C abort async threads for current/selected sheets(s)
422 g^S save selected or all sheets
423 & jointype merge selected sheets with visible columns from all,
424 keeping rows according to jointype:
425 . inner keep only rows which match keys on all
426 sheets
427 . outer keep all rows from first selected sheet
428 . full keep all rows from all sheets (union)
429 . diff keep only rows NOT in all sheets
430 . append keep all rows from all sheets
431 (concatenation)
432 . extend copy first selected sheet, keeping all rows
433 and sheet type, and extend with columns from other
434 sheets
435 . merge mostly keep all rows from first selected
436 sheet, except prioritise cells with non-null/non-
437 error values
438
439 Options Sheet (Shift+O)
440 (global commands)
441 Shift+O edit global options (apply to all sheets)
442 zO edit sheet options (apply to current sheet only)
443 gO open options.config as TextSheet
444 (sheet-specific commands)
445 Enter e edit option at current row
446 d remove option override for this context
447
448 CommandLog (Shift+D)
449 (global commands)
450 D open current sheet's CommandLog with all other loose
451 ends removed; includes commands from parent sheets
452 gD open global CommandLog for all commands executed in
453 the current session
454 zD open current sheet's CommandLog with the parent
455 sheets commands' removed
456 (sheet-specific commands)
457 x replay command in current row
458 gx replay contents of entire CommandLog
459 ^C abort replay
460
461 DERIVED SHEETS
462 Frequency Table (Shift+F)
463 A Frequency Table groups rows by one or more columns, and includes
464 summary columns for those with aggregators.
465 (global commands)
466 gF open Frequency Table, grouped by all key columns on
467 source sheet
468 zF open one-line summary for all rows and selected rows
469 (sheet-specific commands)
470 s t u select/toggle/unselect these entries in source sheet
471 Enter gEnter open copy of source sheet with rows that are grouped
472 in current cell / selected rows
473
474 Describe Sheet (Shift+I)
475 A Describe Sheet contains descriptive statistics for all visible columns.
476 (global commands)
477 gI open Describe Sheet for all visible columns on all
478 sheets
479 (sheet-specific commands)
480 zs zu select/unselect rows on source sheet that are being
481 described in current cell
482 ! toggle/unset current column as a key column on source
483 sheet
484 Enter open a Frequency Table sheet grouped on column
485 referenced in current row
486 zEnter open copy of source sheet with rows described in cur‐
487 rent cell
488
489 Pivot Table (Shift+W)
490 Set key column(s) and aggregators on column(s) before pressing Shift+W on
491 the column to pivot.
492 (sheet-specific commands)
493 Enter open sheet of source rows aggregated in current pivot
494 row
495 zEnter open sheet of source rows aggregated in current pivot
496 cell
497
498 Melted Sheet (Shift+M)
499 Open Melted Sheet (unpivot), with key columns retained and all non-key
500 columns reduced to Variable-Value rows.
501 (global commands)
502 gM regex open Melted Sheet (unpivot), with key columns
503 retained and regex capture groups determining how the
504 non-key columns will be reduced to Variable-Value
505 rows.
506
507 Python Object Sheet (^X ^Y g^Y z^Y)
508 (sheet-specific commands)
509 Enter dive further into Python object
510 v toggle show/hide for methods and hidden properties
511 gv zv show/hide methods and hidden properties
512
514 Add -n/--nonglobal to make subsequent CLI options sheet-specific
515 (applying only to paths specified directly on the CLI). By default, CLI
516 options apply to all sheets.
517
518 Options can also be set via the Options Sheet or a .visidatarc (see
519 FILES).
520
521 -P=longname preplay longname before replay or regular
522 launch; limited to Base Sheet bound commands
523 +toplevel:subsheet:col:row launch vd with subsheet of toplevel at
524 top-of-stack, and cursor at col and row; all
525 arguments are optional
526
527 -f, --filetype=filetype tsv set loader to use for
528 filetype instead of file extension
529 -y, --confirm-overwrite=F True overwrite existing files
530 without confirmation
531 --mouse-interval=int 1 max time between
532 press/release for click
533 (ms)
534 --null-value=NoneType None a value to be counted as
535 null
536 --undo=bool True enable undo/redo
537 --col-cache-size=int 0 max number of cache en‐
538 tries in each cached col‐
539 umn
540 --clean-names False clean column/sheet names
541 to be valid Python iden‐
542 tifiers
543 --default-width=int 20 default column width
544 --default-height=int 10 default column height
545 --textwrap-cells=bool True wordwrap text for multi‐
546 line rows
547 --quitguard False confirm before quitting
548 last sheet
549 --debug False exit on error and display
550 stacktrace
551 --skip=int 0 skip N rows before header
552 --header=int 1 parse first N rows as
553 column names
554 --load-lazy False load subsheets always
555 (False) or lazily (True)
556 --force-256-colors False use 256 colors even if
557 curses reports fewer
558 --note-pending=str ⌛ note to display for pend‐
559 ing cells
560 --note-format-exc=str ? cell note for an excep‐
561 tion during formatting
562 --note-getter-exc=str ! cell note for an excep‐
563 tion during computation
564 --note-type-exc=str ! cell note for an excep‐
565 tion during type conver‐
566 sion
567 --scroll-incr=int 3 amount to scroll with
568 scrollwheel
569 --name-joiner=str _ string to join sheet or
570 column names
571 --value-joiner=str string to join display
572 values
573 --wrap False wrap text to fit window
574 width on TextSheet
575 --save-filetype=str tsv specify default file type
576 to save as
577 --profile=str filename to save binary
578 profiling data
579 --min-memory-mb=int 0 minimum memory to con‐
580 tinue loading and async
581 processing
582 --input-history=str basename of file to store
583 persistent input history
584 --encoding=str utf-8 encoding passed to
585 codecs.open
586 --encoding-errors=str surrogateescape encoding_errors passed to
587 codecs.open
588 --bulk-select-clear False clear selected rows be‐
589 fore new bulk selections
590 --some-selected-rows False if no rows selected, if
591 True, someSelectedRows
592 returns all rows; if
593 False, fails
594 --delimiter=str field delimiter to use
595 for tsv/usv filetype
596 --row-delimiter=str " row delimiter to use
597 for tsv/usv filetype
598 --tsv-safe-newline=str replacement for newline
599 character when saving to
600 tsv
601 --tsv-safe-tab=str replacement for tab char‐
602 acter when saving to tsv
603 --visibility=int 0 visibility level (0=low,
604 1=high)
605 --expand-col-scanrows=int 1000 number of rows to check
606 when expanding columns (0
607 = all)
608 --json-indent=NoneType None indent to use when saving
609 json
610 --json-sort-keys False sort object keys when
611 saving to json
612 --default-colname=str column name to use for
613 non-dict rows
614 --filetype=str specify file type
615 --confirm-overwrite=bool True whether to prompt for
616 overwrite confirmation on
617 save
618 --safe-error=str #ERR error string to use while
619 saving
620 --clipboard-copy-cmd=str command to copy stdin to
621 system clipboard
622 --clipboard-paste-cmd=str command to get contents
623 of system clipboard
624 --fancy-chooser False a nicer selection inter‐
625 face for aggregators and
626 jointype
627 --describe-aggrs=str mean stdev numeric aggregators to
628 calculate on Describe
629 sheet
630 --histogram-bins=int 0 number of bins for his‐
631 togram of numeric columns
632 --numeric-binning False bin numeric columns into
633 ranges
634 --replay-wait=float 0.0 time to wait between re‐
635 played commands, in sec‐
636 onds
637 --replay-movement False insert movements during
638 replay
639 --visidata-dir=str ~/.visidata/ directory to load and
640 store additional files
641 --rowkey-prefix=str キ string prefix for rowkey
642 in the cmdlog
643 --cmdlog-histfile=str file to autorecord each
644 cmdlog action to
645 --regex-flags=str I flags to pass to re.com‐
646 pile() [AILMSUX]
647 --regex-maxsplit=int 0 maxsplit to pass to
648 regex.split
649 --default-sample-size=int 100 number of rows to sample
650 for regex.split
651 --show-graph-labels=bool True show axes and legend on
652 graph
653 --plot-colors=str list of distinct colors
654 to use for plotting dis‐
655 tinct objects
656 --zoom-incr=float 2.0 amount to multiply cur‐
657 rent zoomlevel when zoom‐
658 ing
659 --motd-url=str source of randomized
660 startup messages
661 --dir-recurse False walk source path recur‐
662 sively on DirSheet
663 --dir-hidden False load hidden files on
664 DirSheet
665 --config=str ~/.visidatarc config file to exec in
666 Python
667 --play=str file.vd to replay
668 --batch False replay in batch mode
669 (with no interface and
670 all status sent to std‐
671 out)
672 --output=NoneType None save the final visible
673 sheet to output at the
674 end of replay
675 --preplay=str longnames to preplay be‐
676 fore replay
677 --imports=str plugins imports to preload before
678 .visidatarc (command-line
679 only)
680 --incr-base=float 1.0 start value for column
681 increments
682 --csv-dialect=str excel dialect passed to
683 csv.reader
684 --csv-delimiter=str , delimiter passed to
685 csv.reader
686 --csv-quotechar=str " quotechar passed to
687 csv.reader
688 --csv-skipinitialspace=bool True skipinitialspace passed
689 to csv.reader
690 --csv-escapechar=NoneType None escapechar passed to
691 csv.reader
692 --csv-lineterminator=str " lineterminator passed
693 to csv.writer
694 --safety-first False sanitize input/output to
695 handle edge cases, with a
696 performance cost
697 --fixed-rows=int 1000 number of rows to check
698 for fixed width columns
699 --fixed-maxcols=int 0 max number of fixed-width
700 columns to create (0 is
701 no max)
702 --postgres-schema=str public The desired schema for
703 the Postgres database
704 --http-max-next=int 0 max next.url pages to
705 follow in http response
706 --html-title=str <h2>{sheet.name}</h2>
707 table header when saving
708 to html
709 --pcap-internet=str n (y/s/n) if save_dot in‐
710 cludes all internet hosts
711 separately (y), combined
712 (s), or does not include
713 the internet (n)
714 --graphviz-edge-labels=bool True whether to include edge
715 labels on graphviz dia‐
716 grams
717 --pdf-tables False parse PDF for tables in‐
718 stead of pages of text
719 --plugins-url=str https://visidata.org/plugins/plugins.jsonl
720 source of plugins sheet
721
722 DISPLAY OPTIONS
723 Display options can only be set via the Options Sheet or a .visidatarc
724 (see FILES).
725
726 disp_splitwin_pct 0 height of second sheet on screen
727 disp_currency_fmt %.02f default fmtstr to format for cur‐
728 rency values
729 disp_float_fmt {:.02f} default fmtstr to format for
730 float values
731 disp_int_fmt {:.0f} default fmtstr to format for int
732 values
733 disp_date_fmt %Y-%m-%d default fmtstr to strftime for
734 date values
735 disp_note_none ⌀ visible contents of a cell whose
736 value is None
737 disp_truncator … indicator that the contents are
738 only partially visible
739 disp_oddspace · displayable character for odd
740 whitespace
741 disp_more_left < header note indicating more col‐
742 umns to the left
743 disp_more_right > header note indicating more col‐
744 umns to the right
745 disp_error_val displayed contents for computa‐
746 tion exception
747 disp_ambig_width 1 width to use for unicode chars
748 marked ambiguous
749 disp_pending string to display in pending
750 cells
751 color_note_pending bold magenta color of note in pending cells
752 color_note_type 226 yellow color of cell note for non-str
753 types in anytype columns
754 color_note_row 220 yellow color of row note on left edge
755 disp_column_sep | separator between columns
756 disp_keycol_sep ║ separator between key columns and
757 rest of columns
758 disp_rowtop_sep |
759 disp_rowmid_sep ⁝
760 disp_rowbot_sep ⁝
761 disp_rowend_sep ║
762 disp_keytop_sep ║
763 disp_keymid_sep ║
764 disp_keybot_sep ║
765 disp_endtop_sep ║
766 disp_endmid_sep ║
767 disp_endbot_sep ║
768 disp_selected_note •
769 disp_sort_asc ↑↟⇞⇡⇧⇑ characters for ascending sort
770 disp_sort_desc ↓↡⇟⇣⇩⇓ characters for descending sort
771 color_default white on black the default fg and bg colors
772 color_default_hdr bold color of the column headers
773 color_bottom_hdr underline color of the bottom header row
774 color_current_row reverse color of the cursor row
775 color_current_col bold color of the cursor column
776 color_current_hdr bold reverse color of the header for the cur‐
777 sor column
778 color_column_sep 246 blue color of column separators
779 color_key_col 81 cyan color of key columns
780 color_hidden_col 8 color of hidden columns on
781 metasheets
782 color_selected_row 215 yellow color of selected rows
783 disp_rstatus_fmt {sheet.longname} {sheet.nRows:9d} {sheet.rowtype}
784 {sheet.options.disp_selected_note}{sheet.nSelectedRows}
785 right-side status format string
786 disp_status_fmt {sheet.shortcut}› {sheet.name}|
787 status line prefix
788 disp_lstatus_max 0 maximum length of left status
789 line
790 disp_status_sep | separator between statuses
791 color_keystrokes white color of input keystrokes on sta‐
792 tus line
793 color_status bold status line color
794 color_error red error message color
795 color_warning yellow warning message color
796 color_top_status underline top window status bar color
797 color_active_status bold active window status bar color
798 color_inactive_status 8 inactive window status bar color
799 color_working green color of system running smoothly
800 color_edit_cell white cell color to use when editing
801 cell
802 disp_edit_fill _ edit field fill character
803 disp_unprintable · substitute character for unprint‐
804 ables
805 disp_histogram * histogram element character
806 disp_histolen 50 width of histogram column
807 disp_replay_play ▶ status indicator for active re‐
808 play
809 disp_replay_pause ‖ status indicator for paused re‐
810 play
811 color_status_replay green color of replay status indicator
812 disp_pixel_random False randomly choose attr from set of
813 pixels instead of most common
814 color_graph_hidden 238 blue color of legend for hidden attri‐
815 bute
816 color_graph_selected bold color of selected graph points
817 color_graph_axis bold color for graph axis labels
818 color_add_pending green color for rows pending add
819 color_change_pending reverse yellow color for cells pending modifica‐
820 tion
821 color_delete_pending red color for rows pending delete
822 color_xword_active green color of active clue
823
825 vd foo.tsv
826 open the file foo.tsv in the current directory
827
828 vd -f sqlite bar.db
829 open the file bar.db as a sqlite database
830
831 vd foo.tsv -n -f sqlite bar.db
832 open foo.tsv as tsv and bar.db as a sqlite database
833
834 vd -f sqlite foo.tsv bar.db
835 open both foo.tsv and bar.db as a sqlite database
836
837 vd -b countries.fixed -o countries.tsv
838 convert countries.fixed (in fixed width format) to countries.tsv (in tsv
839 format)
840
841 vd postgres://username:password@hostname:port/database
842 open a connection to the given postgres database
843
844 vd --play tests/pivot.vd --replay-wait 1 --output tests/pivot.tsv
845 replay tests/pivot.vd, waiting 1 second between commands, and output the
846 final sheet to test/pivot.tsv
847
848 ls -l | vd -f fixed --skip 1 --header 0
849 parse the output of ls -l into usable data
850
851 ls | vd | lpr
852 interactively select a list of filenames to send to the printer
853
854 vd newfile.tsv
855 open a blank sheet named newfile if file does not exist
856
857 vd sample.xlsx +:sheet1:2:3
858 launch with sheet1 at top-of-stack, and cursor at column 2 and row 3
859
860 vd -P open-plugins
861 preplay longname open-plugins before starting the session
862
864 At the start of every session, VisiData looks for $HOME/.visidatarc, and
865 calls Python exec() on its contents if it exists. For example:
866
867 options.min_memory_mb=100 # stop processing without 100MB free
868
869 bindkey('0', 'go-leftmost') # alias '0' to go to first column, like vim
870
871 def median(values):
872 L = sorted(values)
873 return L[len(L)//2]
874
875 aggregator('median', median)
876
877 Functions defined in .visidatarc are available in python expressions
878 (e.g. in derived columns).
879
881 Core VisiData includes these sources:
882
883 tsv (tab-separated value)
884 Plain and simple. VisiData writes tsv format by default. See the
885 --tsv-delimiter option.
886
887 csv (comma-separated value)
888 .csv files are a scourge upon the earth, and still regrettably
889 common.
890 See the --csv-dialect, --csv-delimiter, --csv-quotechar, and
891 --csv-skipinitialspace options.
892 Accepted dialects are excel-tab, unix, and excel.
893
894 fixed (fixed width text)
895 Columns are autodetected from the first 1000 rows (adjustable with
896 --fixed-rows).
897
898 json (single object) and jsonl/ndjson/ldjson (one object per line).
899 Cells containing lists (e.g. [3]) or dicts ({3}) can be expanded
900 into new columns with ( and unexpanded with ).
901
902 sqlite
903 May include multiple tables. The initial sheet is the table
904 directory; Enter loads the entire table into memory. z^S saves
905 modifications to source.
906
907 URL schemes are also supported:
908 http (requires requests); can be used as transport for with another
909 filetype
910
911 For a list of all remaining formats supported by VisiData, see
912 https://visidata.org/formats.
913
914 In addition, .zip, .gz, .bz2, and .xz files are decompressed on the fly.
915
917 These are the supported savers:
918
919 tsv (tab-separated value)
920 csv (comma-separated value)
921 json (one object with all rows)
922 jsonl/ndjson/ldjson (one object per line/row)
923 All expanded subcolumns must be closed (with )) to retain the same
924 structure.
925 sqlite (save to source with z^S)
926 md (markdown table)
927
929 VisiData was made by Saul Pwanson <vd@saul.pw>.
930
931Linux/MacOS Apr 11, 2021 Linux/MacOS