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
12 VisiData is a multipurpose tool built on the vdtui platform that can be
13 used to explore, clean, edit, and restructure data. Rows can be selected,
14 filtered, and grouped; columns can be rearranged, transformed, and
15 derived via regex or Python expressions; and workflows can be saved, doc‐
16 umented, 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 Tab execute next row in replaying sheet
30 ^K cancel current replay
31
32 GLOBAL COMMANDS
33 In most cases, commands that affect selected rows will affect all rows if
34 no rows are selected.
35
36 Keystrokes for the Cautious
37 ^H view this man page
38 z^H view sheet of commands and keybindings
39 ^Q abort program immediately
40 ^C cancel user input or abort all async threads on current
41 sheet
42 q quit current sheet
43 gq quit all sheets (clean exit)
44
45 Cursor Movement
46 Arrow PgUp Home move as expected
47 h j k l move left/down/up/right
48 gh gj gk gl move all the way to the left/bottom/top/right of sheet
49 G gg move all the way to the bottom/top of sheet
50 ^B ^F scroll one page back/forward
51
52 ^^ (Ctrl-^) jump to previous sheet (swaps with current sheet)
53
54 / ? regex search for regex forward/backward in current column
55 g/ g? regex search for regex forward/backward over all visible
56 columns
57 z/ z? expr search by Python expr forward/backward in current column
58 (with column names as variables)
59 n N move to next/previous match from last search
60
61 < > move up/down to next value in current column
62 z< z> move up/down to next null in current column
63 { } move up/down to next selected row
64
65 c regex move to next column with name matching regex
66 r regex move to next row with key matching regex
67 zc zr number move to column/row number (0-based)
68
69 H J K L slide current row/column left/down/up/right
70 gH gJ gK gL slide current row/column all the way to the left/bot‐
71 tom/top/right of sheet
72
73 zh zj zk zl scroll one left/down/up/right
74
75 Column Manipulation
76 _ (underscore) adjust width of current column
77 g_ adjust width of all visible columns
78 z_ number adjust width of current column to number
79
80 - (hyphen) hide current column
81 z- reduce width of current column by half
82 gv unhide all columns
83
84 ! z! toggle/unset current column as a key column
85 ~ # % $ @ z#
86 set type of current column to str/int/float/cur‐
87 rency/date/len
88 ^ edit name of current column
89 g^ set names of all unnamed visible columns to contents of
90 selected rows (or current row)
91 z^ set name of current column to combined contents of cur‐
92 rent cell in selected rows (or current row)
93 gz^ set name of all visible columns to combined contents of
94 current column for selected rows (or current row)
95
96 = expr create new column from Python expr, with column names as
97 variables
98 g= expr set current column for selected rows to result of Python
99 expr
100 gz= expr set current column for selected rows to the items in
101 result of Python sequence expr
102 z= expr evaluate Python expression on current row and show
103 result on status line
104 ' (tick) add a frozen copy of current column with all cells eval‐
105 uated
106 g' open a frozen copy of current sheet with all visible
107 columns evaluated
108 z' gz' reset cache for current/all visible column(s)
109
110 : regex add new columns from regex split; number of columns
111 determined by example row at cursor
112 ; regex add new columns from capture groups of regex (also
113 requires example row)
114 z; expr add new column from bash expr, with $columnNames as
115 variables
116 * regex/subst add column derived from current column, replacing regex
117 with subst (may include \1 backrefs)
118 g* gz* regex/subst
119 modify selected rows in current/all visible column(s),
120 replacing regex with subst (may include \1 backrefs)
121
122 ( g( expand current/all visible column(s) of lists (e.g. [3])
123 or dicts (e.g. {3}) fully
124 z( gz( depth expand current/all visible column(s) of lists (e.g. [3])
125 or dicts (e.g. {3}) to given depth (0= fully)
126 ) unexpand current column; restore original column and
127 remove other columns at this level
128
129 Row Selection
130 s t u select/toggle/unselect current row
131 gs gt gu select/toggle/unselect all rows
132 zs zt zu select/toggle/unselect rows from top to cursor
133 gzs gzt gzu select/toggle/unselect rows from cursor to bottom
134 | \ regex select/unselect rows matching regex in current column
135 g| g\ regex select/unselect rows matching regex in any visible
136 column
137 z| z\ expr select/unselect rows matching Python expr in any visible
138 column
139 , (comma) select rows matching current cell in current column
140 g, select rows matching current row in all visible columns
141
142 Row Sorting/Filtering
143 [ ] sort ascending/descending by current column
144 g[ g] sort ascending/descending by all key columns
145 " open duplicate sheet with only selected rows
146 g" open duplicate sheet with all rows
147 gz" open duplicate sheet with deepcopy of selected rows
148
149 Editing Rows and Cells
150 a za append a blank row/column
151 ga gza number append number blank rows/columns
152 d gd delete (cut) current/selected row(s) and move to clip‐
153 board
154 y gy yank (copy) current/all selected row(s) to clipboard
155 zy gzy yank (copy) contents of current column for cur‐
156 rent/selected row(s) to clipboard
157 zd gzd delete (cut) contents of current column for cur‐
158 rent/selected row(s) and move to clipboard
159 p P paste clipboard rows after/before current row
160 zp gzp set contents of current column for current/selected
161 row(s) to last clipboard value
162 Y gY yank (copy) current/all selected row(s) to system
163 clipboard (using options.clipboard_copy_cmd)
164 zY gzY yank (copy) contents of current column for
165 current/selected row(s) to system clipboard (using
166 options.clipboard_copy_cmd)
167 f fill null cells in current column with contents of non-
168 null cells up the current column
169 e text edit contents of current cell
170 ge text set contents of current column for selected rows to text
171
172 Commands While Editing Input
173 Enter ^C accept/abort input
174 ^O open external $EDITOR to edit contents
175 ^R reload initial value
176 ^A ^E move to beginning/end of line
177 ^B ^F move back/forward one character
178 ^H ^D delete previous/current character
179 ^T transpose previous and current characters
180 ^U ^K clear from cursor to beginning/end of line
181 Backspace Del delete previous/current character
182 Insert toggle insert mode
183 Up Down set contents to previous/next in history
184 Tab Shift+Tab autocomplete input (when available)
185
186 Data Toolkit
187 o input open input in VisiData
188 ^S g^S filename save current/all sheet(s) to filename in format
189 determined by extension (default .tsv)
190 Note: if the format does not support multisave, or the
191 filename ends in a /, a directory will be created.
192 z^S filename save key columns and current column only to filename in
193 format determined by extension (default .tsv)
194 ^D filename.vd save CommandLog to filename.vd file
195 A number open new blank sheet with number columns
196 R number pushes sheet with random population subset of number
197 rows
198 T open new sheet with rows and columns transposed
199
200 + aggregator add aggregator to current column (see Frequency Table)
201 z+ aggregator display result of aggregator over values in selected
202 rows for current column
203
204 Data Visualization
205 . (dot) plot current numeric column vs key columns. The numeric
206 key column is used for the x-axis; categorical key column
207 values determine color.
208 g. plot a graph of all visible numeric columns vs key
209 columns.
210
211 If rows on the current sheet represent plottable coordinates (as in .shp
212 or vector .mbtiles sources), . plots the current row, and g. plots all
213 selected rows (or all rows if none selected).
214
215 Canvas-specific Commands
216 + - increase/decrease zoom level, centered on cursor
217 _ (underscore) zoom to fit full extent
218 s t u select/toggle/unselect rows on source sheet con‐
219 tained within canvas cursor
220 gs gt gu select/toggle/unselect rows on source sheet visi‐
221 ble on screen
222 d delete rows on source sheet contained within can‐
223 vas cursor
224 gd delete rows on source sheet visible on screen
225 Enter open sheet of source rows contained within canvas
226 cursor
227 gEnter open sheet of source rows visible on screen
228 1 - 9 toggle display of layers
229 ^L redraw all pixels on canvas
230 v toggle show_graph_labels option
231 mouse scrollwheel zoom in/out of canvas
232 left click-drag set canvas cursor
233 right click-drag scroll canvas
234
235 Other Commands
236 Q quit current sheet and remove it from the CommandLog
237 V view contents of current cell in a new TextSheet
238 v toggle sheet-specific visibility (text wrap on
239 TextSheet, legends/axes on Graph)
240
241 Space longname execute command by its longname
242
243 ^E view traceback for most recent error
244 g^E view traceback for most recent errors
245 z^E view traceback for error in current cell
246
247 ^L refresh screen
248 ^R reload current sheet
249 z^R clear cache for current column
250 ^Z suspend VisiData process
251 ^G show cursor position and bounds of current sheet on sta‐
252 tus line
253 ^V show version and copyright information on status line
254 ^P open Status History
255
256 ^Y z^Y g^Y open current row/cell/sheet as Python object
257 ^X expr evaluate Python expr and opens result as Python object
258 z^X expr evaluate Python expr on current row and shows result on
259 status line
260 g^X stmt execute Python stmt in the global scope
261
262 Internal Sheets List
263 . Directory Sheet browse and modify properties of files in
264 a directory
265
266 Metasheets
267 . Columns Sheet (Shift+C) edit column properties
268 . Sheets Sheet (Shift+S) jump between sheets or join them together
269 . Options Sheet (Shift+O) edit configuration options
270 . Commandlog (Shift+D) modify and save commands for replay
271 . Error Sheet (^E) view last error
272 . Status History (^P) view history of status messages
273 . Threads Sheet (^T) view, cancel, and profile asynchronous
274 threads
275
276 Derived Sheets
277 . Frequency Table (Shift+F) group rows by column value, with
278 aggregations of other columns
279 . Describe Sheet (Shift+I) view summary statistics for each column
280 . Pivot Table (Shift+W) group rows by key and summarize current
281 column
282 . Melted Sheet (Shift+M) unpivot non-key columns into
283 variable/value columns
284
285 INTERNAL SHEETS
286 Directory Sheet
287 (sheet-specific commands)
288 Modifying any cell changes the in-memory value. Changes are only applied
289 to the filesystem with ^S
290 Enter gEnter open current/selected file(s) as new sheet(s)
291 ^O g^O open current/selected file(s) in external $EDITOR
292 d gd schedule current/selected file(s) for deletion
293 ^R z^R gz^R reload information for all/current/selected file(s),
294 undoing any pending changes
295 z^S ^S apply all deferred changes to current/all file(s)
296
297 METASHEETS
298 Columns Sheet (Shift+C)
299 Properties of columns on the source sheet can be changed with standard
300 editing commands (e ge g= Del) on the Columns Sheet. Multiple aggregators
301 can be set by listing them (separated by spaces) in the aggregators
302 column. The 'g' commands affect the selected rows, which are the literal
303 columns on the source sheet.
304 (global commands)
305 gC open Columns Sheet for all visible columns on all
306 sheets
307 (sheet-specific commands)
308 & add column from concatenating selected source columns
309 g! gz! toggle/unset selected columns as key columns on
310 source sheet
311 g+ aggregator add Ar aggregator No to selected source columns
312 g- (hyphen) hide selected columns on source sheet
313 g~ g# g% g$ g@ gz#
314 set type of selected columns on source sheet to
315 str/int/float/currency/date/len
316 Enter open a Frequency Table sheet grouped by column
317 referenced in current row
318
319 Sheets Sheet (Shift+S)
320 (global commands)
321 gS open Sheets Graveyard which includes references to
322 closed sheets
323 (sheet-specific commands)
324 Enter jump to sheet referenced in current row
325 a add row to reference a new blank sheet
326 gC open Columns Sheet with all columns from selected
327 sheets
328 gI open Describe Sheet with all columns from selected
329 sheets
330 g^R reload all selected sheets
331 z^C gz^C abort async threads for current/selected sheets(s)
332 & jointype merge selected sheets with visible columns from all,
333 keeping rows according to jointype:
334 . inner keep only rows which match keys on all
335 sheets
336 . outer keep all rows from first selected sheet
337 . full keep all rows from all sheets (union)
338 . diff keep only rows NOT in all sheets
339 . append keep all rows from all sheets
340 (concatenation)
341 . extend copy first selected sheet, keeping all rows
342 and sheet type, and extend with columns from other
343 sheets
344
345 Options Sheet (Shift+O)
346 (global commands)
347 Shift+O edit global options (apply to all sheets)
348 zO edit sheet options (apply to this sheet only)
349 gO open ~/.visidatarc
350 (sheet-specific commands)
351 Enter e edit option at current row
352
353 CommandLog (Shift+D)
354 (global commands)
355 gD open Directory Sheet for options.visidata_dir
356 (default: ~/.visidata/), which contains saved
357 commandlogs and macros
358 (sheet-specific commands)
359 x replay command in current row
360 gx replay contents of entire CommandLog
361 ^C abort replay
362 z^S keystroke save selected rows to macro mapped to keystroke
363 Macros are saved to
364 .visidata/macro/command-longname.vd. The list of
365 macros is saved at .visidata/macros.vd (keystroke,
366 filename).
367
368 DERIVED SHEETS
369 Frequency Table (Shift+F)
370 A Frequency Table groups rows by one or more columns, and includes
371 summary columns for those with aggregators.
372 (global commands)
373 gF open Frequency Table, grouped by all key columns on
374 source sheet
375 zF open one-line summary for selected rows
376 (sheet-specific commands)
377 s t u select/toggle/unselect these entries in source sheet
378 Enter open sheet of source rows that are grouped in current
379 cell
380
381 Describe Sheet (Shift+I)
382 (global commands)
383 gI open Describe Sheet for all visible columns on all
384 sheets
385 (sheet-specific commands)
386 zs zu select/unselect rows on source sheet that are being
387 described in current cell
388 ! toggle/unset current column as a key column on source
389 sheet
390 Enter open a Frequency Table sheet grouped on column
391 referenced in current row
392 zEnter open copy of source sheet with rows described in cur‐
393 rent cell
394
395 Pivot Table (Shift+W)
396 Set key column(s) and aggregators on column(s) before pressing Shift+W on
397 the column to pivot.
398 (sheet-specific commands)
399 Enter open sheet of source rows aggregated in current pivot
400 row
401 zEnter open sheet of source rows aggregated in current pivot
402 cell
403
404 Melted Sheet (Shift+M)
405 Open melted sheet (unpivot), with key columns retained and all non-key
406 columns reduced to Variable-Value rows.
407 (global commands)
408 gM regex open melted sheet (unpivot), with key columns
409 retained and regex capture groups determining how the
410 non-key columns will be reduced to Variable-Value
411 rows.
412
413 Python Object Sheet (^X ^Y g^Y z^Y)
414 (sheet-specific commands)
415 Enter dive further into Python object
416 e edit contents of current cell
417 v toggle show/hide for methods and hidden properties
418 gv zv show/hide methods and hidden properties
419
421 -f, --filetype=filetype tsv set loader to use for
422 filetype instead of file extension
423 -y, --confirm-overwrite=F True overwrite existing files
424 without confirmation
425 --diff=base None add colorizer for all
426 sheets against base
427 --encoding=str utf-8 encoding passed to
428 codecs.open
429 --encoding-errors=str surrogateescape encoding_errors passed to
430 codecs.open
431 --regex-flags=str I flags to pass to re.com‐
432 pile() [AILMSUX]
433 --default-width=int 20 default column width
434 --wrap False wrap text to fit window
435 width on TextSheet
436 --bulk-select-clear False clear selected rows
437 before new bulk selec‐
438 tions
439 --cmd-after-edit=str go-down command longname to exe‐
440 cute after successful
441 edit
442 --col-cache-size=int 0 max number of cache
443 entries in each cached
444 column
445 --quitguard False confirm before quitting
446 last sheet
447 --null-value=NoneType None a value to be counted as
448 null
449 --force-valid-colnames False clean column names to be
450 valid Python identifiers
451 --debug False exit on error and display
452 stacktrace
453 --curses-timeout=int 100 curses timeout in ms
454 --force-256-colors False use 256 colors even if
455 curses reports fewer
456 --use-default-colors False curses use default termi‐
457 nal colors
458 --note-pending=str ⌛ note to display for pend‐
459 ing cells
460 --note-format-exc=str ? cell note for an excep‐
461 tion during formatting
462 --note-getter-exc=str ! cell note for an excep‐
463 tion during computation
464 --note-type-exc=str ! cell note for an excep‐
465 tion during type conver‐
466 sion
467 --note-unknown-type=str cell note for unknown
468 types in anytype column
469 --scroll-incr=int 3 amount to scroll with
470 scrollwheel
471 --skip=int 0 skip first N lines of
472 text input
473 --confirm-overwrite=bool True whether to prompt for
474 overwrite confirmation on
475 save
476 --safe-error=str #ERR error string to use while
477 saving
478 --header=int 1 parse first N rows of
479 certain formats as column
480 names
481 --delimiter=str delimiter to use for tsv
482 filetype
483 --filetype=str specify file type
484 --save-filetype=str tsv specify default file type
485 to save as
486 --tsv-safe-newline=str replacement for tab char‐
487 acter when saving to tsv
488 --tsv-safe-tab=str replacement for newline
489 character when saving to
490 tsv
491 --clipboard-copy-cmd=str command to copy stdin to
492 system clipboard
493 --visibility=int 0 visibility level (0=low,
494 1=high)
495 --min-memory-mb=int 0 minimum memory to con‐
496 tinue loading and async
497 processing
498 --replay-wait=float 0.0 time to wait between
499 replayed commands, in
500 seconds
501 --replay-movement False insert movements during
502 replay
503 --visidata-dir=str ~/.visidata/ directory to load and
504 store macros
505 --rowkey-prefix=str キ string prefix for rowkey
506 in the cmdlog
507 --cmdlog-histfile=str file to autorecord each
508 cmdlog action to
509 --regex-maxsplit=int 0 maxsplit to pass to
510 regex.split
511 --show-graph-labels=bool True show axes and legend on
512 graph
513 --plot-colors=str list of distinct colors
514 to use for plotting dis‐
515 tinct objects
516 --zoom-incr=float 2.0 amount to multiply cur‐
517 rent zoomlevel when zoom‐
518 ing
519 --motd-url=str source of randomized
520 startup messages
521 --profile=str filename to save binary
522 profiling data
523 --csv-dialect=str excel dialect passed to
524 csv.reader
525 --csv-delimiter=str , delimiter passed to
526 csv.reader
527 --csv-quotechar=str " quotechar passed to
528 csv.reader
529 --csv-skipinitialspace=bool True skipinitialspace passed
530 to csv.reader
531 --csv-escapechar=NoneType None escapechar passed to
532 csv.reader
533 --safety-first False sanitize input/output to
534 handle edge cases, with a
535 performance cost
536 --json-indent=NoneType None indent to use when saving
537 json
538 --fixed-rows=int 1000 number of rows to check
539 for fixed width columns
540 --pcap-internet=str n (y/s/n) if save_dot
541 includes all internet
542 hosts separately (y),
543 combined (s), or does not
544 include the internet (n)
545 --graphviz-edge-labels=bool True whether to include edge
546 labels on graphviz dia‐
547 grams
548
549 DISPLAY OPTIONS
550 Display options can only be set via the Options Sheet or a .visidatarc
551 (see FILES).
552
553 disp_note_none ⌀ visible contents of a cell whose
554 value is None
555 disp_truncator … indicator that the contents are
556 only partially visible
557 disp_oddspace · displayable character for odd
558 whitespace
559 disp_unprintable . substitute character for unprint‐
560 ables
561 disp_column_sep | separator between columns
562 disp_keycol_sep ‖ separator between key columns and
563 rest of columns
564 disp_status_fmt {sheet.name}| status line prefix
565 disp_lstatus_max 0 maximum length of left status
566 line
567 disp_status_sep | separator between statuses
568 disp_edit_fill _ edit field fill character
569 disp_more_left < header note indicating more col‐
570 umns to the left
571 disp_more_right > header note indicating more col‐
572 umns to the right
573 disp_error_val displayed contents for computa‐
574 tion exception
575 disp_ambig_width 1 width to use for unicode chars
576 marked ambiguous
577 color_default normal the default color
578 color_default_hdr bold underline color of the column headers
579 color_current_row reverse color of the cursor row
580 color_current_col bold color of the cursor column
581 color_current_hdr bold reverse underline
582 color of the header for the cur‐
583 sor column
584 color_column_sep 246 blue color of column separators
585 color_key_col 81 cyan color of key columns
586 color_hidden_col 8 color of hidden columns on
587 metasheets
588 color_selected_row 215 yellow color of selected rows
589 color_keystrokes white color of input keystrokes on sta‐
590 tus line
591 color_status bold status line color
592 color_error red error message color
593 color_warning yellow warning message color
594 color_edit_cell normal cell color to use when editing
595 cell
596 disp_pending string to display in pending
597 cells
598 color_note_pending bold magenta color of note in pending cells
599 color_note_type 226 yellow cell note for numeric types in
600 anytype columns
601 disp_date_fmt %Y-%m-%d default fmtstr to strftime for
602 date values
603 color_change_pending reverse yellow color for file attributes pending
604 modification
605 color_delete_pending red color for files pending delete
606 disp_histogram * histogram element character
607 disp_histolen 50 width of histogram column
608 color_working green color of system running smoothly
609 disp_replay_play ▶ status indicator for active
610 replay
611 disp_replay_pause ‖ status indicator for paused
612 replay
613 color_status_replay green color of replay status indicator
614 disp_pixel_random False randomly choose attr from set of
615 pixels instead of most common
616 color_graph_hidden 238 blue color of legend for hidden
617 attribute
618 color_graph_selected bold color of selected graph points
619 color_graph_axis bold color for graph axis labels
620 color_diff red color of values different from
621 --diff source
622 color_diff_add yellow color of rows/columns added to
623 --diff source
624
626 vd foo.tsv
627 open the file foo.tsv in the current directory
628
629 vd -f sqlite bar.db
630 open the file bar.db as a sqlite database
631
632 vd -b countries.fixed -o countries.tsv
633 convert countries.fixed (in fixed width format) to countries.tsv (in tsv
634 format)
635
636 vd postgres://username:password@hostname:port/database
637 open a connection to the given postgres database
638
639 vd --play tests/pivot.vd --replay-wait 1 --output tests/pivot.tsv
640 replay tests/pivot.vd, waiting 1 second between commands, and output the
641 final sheet to test/pivot.tsv
642
643 ls -l | vd -f fixed --skip 1 --header 0
644 parse the output of ls -l into usable data
645
647 At the start of every session, VisiData looks for $HOME/.visidatarc, and
648 calls Python exec() on its contents if it exists. For example:
649
650 options.min_memory_mb=100 # stop processing without 100MB free
651
652 bindkey('0', 'go-leftmost') # alias '0' to move to first column, like vim
653
654 def median(values):
655 L = sorted(values)
656 return L[len(L)//2]
657
658 aggregator('median', median)
659
660 Functions defined in .visidatarc are available in python expressions
661 (e.g. in derived columns).
662
664 These are the supported sources:
665
666 tsv (tab-separated value)
667 Plain and simple. VisiData writes tsv format by default. See the
668 --delimiter option.
669
670 csv (comma-separated value)
671 .csv files are a scourge upon the earth, and still regrettably
672 common.
673 See the --csv-dialect, --csv-delimiter, --csv-quotechar, and
674 --csv-skipinitialspace options.
675 Accepted dialects are excel-tab, unix, and excel.
676
677 fixed (fixed width text)
678 Columns are autodetected from the first 1000 rows (adjustable with
679 --fixed-rows).
680
681 json (single object) and jsonl (one object per line).
682 Cells containing lists (e.g. [3]) or dicts ({3}) can be expanded
683 into new columns with ( and unexpanded with ).
684
685 yaml/yml (requires PyYAML)
686
687 pcap (requires xpkt, dnslib)
688 View and investigate captured network traffic in a tabular format.
689
690 png (requires pypng)
691 Pixels can be edited and saved in data form. Images can be plotted
692 with . (dot).
693
694 The following URL schemes are supported:
695 http (requires requests); can be used as transport for with another
696 filetype
697 postgres (requires psycopg2)
698
699 The following sources may include multiple tables. The initial sheet is
700 the table directory; Enter loads the entire table into memory.
701
702 sqlite
703 xlsx (requires openpyxl)
704 xls (requires xlrd)
705 hdf5 (requires h5py)
706 ttf/otf (requires fonttools)
707 mbtiles (requires mapbox-vector-tile)
708 htm/html (requires lxml)
709 xml (requires lxml)
710 v show only columns in current row attributes
711 za add column for xml attributes
712 xpt (SAS; requires xport)
713 sas7bdat (SAS; requires sas7bdat)
714 sav (SPSS; requires savReaderWriter)
715 dta (Stata; requires pandas)
716 shp (requires pyshp)
717
718 In addition, .zip, .gz, .bz2, and .xz files are decompressed on the fly.
719
720 VisiData has an adapter for pandas. To load a file format which is
721 supported by pandas, pass -f pandas data.foo. This will call
722 pandas.read_foo().
723
724 For example, vd -f pandas data.parquet loads a parquet file. Note that
725 when using the pandas loader, the .fileformat file extension is mandatory
726
728 These are the supported savers:
729
730 tsv (tab-separated value)
731 csv (comma-separated value)
732 json (one object with all rows)
733 All expanded subcolumns must be closed (with )) to retain the same
734 structure.
735 .shp files can be saved as geoJSON.
736 md (org-mode compatible markdown table)
737 htm/html (requires lxml)
738 png (requires pypng)
739
740 Multisave is supported by html, md, and txt; g^S will save all sheets
741 into a single output file.
742
744 VisiData was made by Saul Pwanson <vd@saul.pw>.
745
746Linux/MacOS January 12, 2019 Linux/MacOS