vd(1)
โจ vd(1) โ Quick Reference Guide โจ
okay bestie, welcome to the vd(1) man page โ VisiData, the terminal utility that absolutely ate ๐ this is part 1, and itโs giving โmultipurpose data iconโ energy fr fr.
๐ธ NAME ๐ธ
VisiData โ a terminal utility for exploring and arranging tabular data ๐ซถ
๐ฆ SYNOPSIS ๐ฆ
vd [options] [input ...]
visidata [options] [input ...]
vd [options] --play cmdlog [-w waitsecs] [--batch] [-i] [-of filetype]
[-o output] [field=value]
vd [options] [input ...] +toplevel:subsheet:col:row
๐ DESCRIPTION ๐
VisiData is an easy-to-use multipurpose tool to explore, clean, edit, and restructure data ๐ฅ Rows can be selected, filtered, and grouped; columns can be rearranged, transformed, and derived via regex or Python expressions; and workflows can be saved, documented, and replayed. No cap, itโs iconic.
๐ฌ REPLAY MODE ๐ฌ
-p,--play=cmdlogโ replay a saved cmdlog within the interface ๐-w,--replay-wait=secondsโ wait seconds between commands-b,--batchโ replay in batch mode (with no interface) ๐-i,--interactiveโ launch VisiData in interactive mode after batch-o,--output=fileโ save final visible sheet to file as.tsv๐field=valueโ replace"{field}"in cmdlog contents with value
๐ฌ Commands During Replay ๐ฌ
^Kโ cancel current replay
๐ GLOBAL COMMANDS ๐
All keystrokes are case sensitive. The ^ prefix is shorthand for Ctrl. periodt.
๐ Keystrokes to start off with ๐
^Qโ abort program immediately^Cโ cancel user input or abort all async threads on current sheetg^Cโ abort all secondary threadsqโ quit current sheet or menuQโ quit current sheet and free associated memorygqโ quit all sheets (clean exit)Alt+Hโ activate help menu (Enter/left-mouse to expand submenu or execute command)g^Hโ view this man page ๐ซถz^Hโ view sheet of command longnames and keybindings for current sheetgbโ open sidebar in a new sheetbโ toggle sidebarUโ undo the most recent modification (requires enabledoptions.undo)Rโ redo the most recent undo (requires enabledoptions.undo)zUโ undo the most recent modification and rerun it, editing its previous input (requires enabledoptions.undo)Spacelongname โ open command palette; execute top command by its longname
๐๏ธ Command Palette ๐๏ธ
Tabโ Move to command palette, and cycle through commands0-9โ Execute numbered commandEnterโ Execute highlighted command
๐งญ Cursor Movement ๐งญ
Arrow PgUpโ go as expectedh,j,k,lโ go left/down/up/rightgh,gj,gk,glโ go all the way to the left/bottom/top/right of sheetG,ggโ go all the way to the bottom/top of sheetIc. End Homeโ go all the way to the bottom/top of sheet^B,^Fโ scroll one page back/forward^Left,^Rightโ scroll one page left/rightzzโ scroll current row to center of screen^^(Ctrl+^) โ jump to previous sheet (swaps with current sheet)/,?regex โ search for regex forward/backward in current columnโs displayed valuesg/,g?regex โ search for regex forward/backward over all visible columnsโ displayed valuesz/,z?expr โ search by Python expr forward/backward in current column (with column names as variables)n,Nโ go to next/previous match from last search
Search matches are highlighted when options.highlight_search is set (default: on). โจ
(highlight-col)โ highlight a regex in current column (without moving)(highlight-sheet)โ highlight a regex in all columns (without moving)(highlight-clear)โ clear all highlight patterns
Undoing a search does not clear the highlighting; use highlight-clear instead. ๐ซถ
<,>โ go up/down current column to next valuez<,z>โ go up/down current column to next null value{,}โ go up/down current column to next selected rowcregex โ go to next column with name matching regexrregex โ go to next row with key matching regexzc,zrnumber โ go to column/row number (0-based, negative from end); warn if clampedH,J,K,Lโ slide current row/column left/down/up/rightgH,gJ,gK,gLโ slide current row/column all the way to the left/bottom/top/right of sheetzH,zJ,zK,zKnumber โ slide current row/column number positions to the left/down/up/rightzh,zj,zk,zlโ scroll one left/down/up/right
๐ Column Manipulation ๐
_(underbar) โ toggle width of current column between full and default widthg_โ toggle widths of all visible columns between full and default widthz_number โ adjust width of current column to numbergz_number โ adjust widths of all visible columns to Ar numberresize-col-max-allโ toggle width of current column between default width and the widest value in all rows, not only those on screenresize-cols-max-allโ toggle widths of all visible columns between default width and the widest value in all rows-(hyphen) โ hide current columng-(hyphen) โ hide any column that has multiple rows but only one distinct valuez-โ reduce width of current column by halfgvโ unhide all columns!,z!โ toggle/unset current column as a key column~,#,%,$,@,z#โ set type of current column to str/int/float/currency/date/lenAlt++,Alt+-โ show more/less precision in current numerical column^โ rename current columng^โ rename all unnamed visible columns to contents of selected rows (or current row)z^โ rename current column to combined contents of current cell in selected rows (or current row)gz^โ rename all visible columns to combined contents of current column for selected rows (or current row)=[name=]exprโ create new column from Python expr, with column names, and attributes, as variables. Optionally specify column name.g=expr โ set current column for selected rows to result of Python exprgz=expr โ set current column for selected rows to the items in result of Python sequence exprz=expr โ evaluate Python expression on current row and set current cell with result of Python expriโ add column with incremental valuesaddcol-incr-keyโ add column with incremental values, restarting at each change in key columnsgiโ set current column for selected rows to incremental valueszistep โ add column with values at increment stepgzistep โ set current column for selected rows at increment step'(tick) โ add a frozen copy of current column with all cells evaluatedg'โ open a frozen copy of current sheet with all visible columns evaluatedz',gz'โ add/reset cache for current/all visible column(s)
Note that regex operations apply to the displayed value in a cell. ๐ง
:regex โ add new columns from regex split; number of columns determined by example row at cursor;regex โ add new columns from capture groups of regex (also requires example row)z;expr โ create new column from bash expr, with$columnNamesas variables*search Tab replace โ add column derived from current column, replacing search regex with replace (may include\1backrefs)g*,gz*search Tab replace โ modify selected rows in current/all visible column(s), replacing search with replace (may include\1backrefs)(,g(โ expand current/all visible column(s) of lists (e.g.[3]) or dicts (e.g.{3}) one levelz(,gz(depth โ expand current/all visible column(s) of lists (e.g.[3]) or dicts (e.g.{3}) to given depth (0= fully)),g(โ unexpand current/all visible column(s); restore original column and remove other columns at this levelz),gz)depth โ contract current/all visible column(s) of former lists (e.g.[3]) or dicts (e.g.{3}) to given depth (0= fully)zMโ row-wise expand current column of lists (e.g.[3]) or dicts (e.g.{3}) within that column
๐ Row Selection ๐
s,t,uโ select/toggle/unselect current rowgs,gt,guโ select/toggle/unselect all rowszs,zt,zuโ select/toggle/unselect all rows from top to cursorgzs,gzt,gzuโ select/toggle/unselect all rows from cursor to bottom|,\regex โ select/unselect rows matching regex in current columng|,g\regex โ select/unselect rows matching regex in any visible columnz|,z\expr โ select/unselect rows matching Python expr in any visible column,(comma) โ select rows matching display value of current cell in current columng,โ select rows matching display value of current row in all visible columnsz,,gz,โ select rows matching typed value of current cell/row in current column/all visible columns
๐ธ Row Sorting/Filtering ๐ธ
[,]โ sort ascending/descending by current column; replace any existing sort criteriag[,g]โ sort ascending/descending by all key columns; replace any existing sort criteriaz[,z]โ sort ascending/descending by current column; keep higher priority sort criteriagz[,gz]โ sort ascending/descending by all key columns; add to existing sort criteria"โ open duplicate sheet with only selected rowsg"โ open duplicate sheet with all rowsgz"โ open duplicate sheet with deepcopy of selected rows
The rows in these duplicated sheets (except deepcopy) are references to rows on the original source sheets, and so edits to the filtered rows will naturally be reflected in the original rows. Use g' to freeze sheet contents in a deliberate copy. z' replace current column with a frozen copy, with all cells evaluated ๐ฆ
โจ Editing Rows and Cells โจ
okay bestie, this is where you actually touch the data โ rows, cells, clipboards, the whole little ecosystem. stay with me, itโs giving spreadsheet but make it fashion ๐
a,zaโ append blank row/column; appended columns cannot be copied to clipboard.ga,gza numberโ append number blank rows/columns.d,gdโ delete current/selected row(s).y,gyโ yank (copy) current/all selected row(s) to clipboard in Memory Sheet.x,gxโ cut (copy and delete) current/all selected row(s) to clipboard in Memory Sheet.zy,gzyโ yank (copy) contents of current column for current/selected row(s) to clipboard in Memory Sheet.zd,gzdโ set contents of current column for current/selected row(s) tooptions.null_value.zx,gzxโ cut (copy and delete) contents of current column for current/selected row(s) to clipboard in Memory Sheet.p,Pโ paste clipboard rows after/before current row.zp,gzpโ set cells of current column for current/selected row(s) to last clipboard value.zP,gzPโ paste to cells of current column for current/selected row(s) using the system clipboard.Y,gYโ yank (copy) current/all selected row(s) to system clipboard (usingoptions.clipboard_copy_cmd).zY,gzYโ yank (copy) contents of current column for current/selected row(s) to system clipboard (usingoptions.clipboard_copy_cmd).fโ fill null cells in current column with contents of non-null cells up the current column.e textโ edit contents of current cell.^Oโ edit contents of current cell in externalEDITOR.ge textโ set contents of current column for selected rows to text.
โจ๏ธ Commands While Editing Input โจ๏ธ
when youโre in an input box, these are the little keyboard goblins that keep you moving ๐ง
Enter,^Cโ accept/abort input.^O,g^Oโ open external$EDITORto edit contents of current/selected rows in current column.^Rโ reload initial value.^A,^Eโ go to beginning/end of line.^B,^Fโ go back/forward one character.^โ,^โ (arrow)โ go back/forward one word.^H,^Dโ delete previous/current character.^Tโ transpose previous and current characters.^U,^Kโ clear from cursor to beginning/end of line.^Yโ paste from cell clipboard.Backspace,Delโ delete previous/current character.Insertโ toggle insert mode.Up,Downโ set contents to previous/next in history.Tab,Shift+Tabโ move cursor left/right and re-enter edit mode.Shift+Arrowโ move cursor in direction of Arrow and re-enter edit mode.
๐งฐ Data Toolkit ๐งฐ
this is the power tools section. very โI came preparedโ energy ๐ฅ
oinput โ open input in VisiData.zoโ open file or url from path in current cell.^S,g^Sfilename โ save current/all sheet(s) to filename with given filetype. Note: if the format does not support multisave, or the filename ends in a/, a directory will be created.z^Sfilename โ save current column only to filename with given filetype.^Dfilename.vdj โ save CommandLog to filename.vdj file.Aโ open new blank sheet with one column.Tโ open new sheet that has rows and columns of current sheet transposed.+aggregator โ add aggregator to current column (see Frequency Table).z+aggregator โ display result of aggregator over values in selected rows for current column; store result in Memory Sheet.&โ append top two sheets in Sheets Stack.g&โ append all sheets in Sheets Stack.wnBefore nAfter โ add column where each row contains a list of that row, nBefore rows, and nAfter rows.
๐ Data Visualization ๐
plotting time, bestie. bring your numeric columns and your key columns, weโre making little pictures out of data ๐
.(dot) โ plot current numeric column vs key columns. The numeric key column is used for the x-axis; categorical key column values determine color.g.โ plot a graph of all visible numeric columns vs key columns.
If rows on the current sheet represent plottable coordinates (as in .shp or vector .mbtiles sources), . plots the current row, and g. plots all selected rows (or all rows if none selected).
๐ผ๏ธ Canvas-specific Commands ๐ผ๏ธ
+,-โ increase/decrease zoom level, centered on cursor._(underbar) โ zoom to fit full extent.z_(underbar) โ set aspect ratio.g_(underbar) โ Zoom y-axis to fit all visible data points.xxmin xmax โ set xmin/xmax on graph.yymin ymax โ set ymin/ymax on graph.s,t,uโ select/toggle/unselect rows on source sheet contained within canvas cursor.gs,gt,guโ select/toggle/unselect rows on source sheet visible on screen.dโ delete rows on source sheet contained within canvas cursor.gdโ delete rows on source sheet visible on screen.Enterโ open sheet of source rows contained within canvas cursor.gEnterโ open sheet of source rows visible on screen.1 - 9โ toggle display of layers.^Lโ redraw all pixels on canvas.vโ toggleshow_graph_labelsoption.mouse scrollwheelโ zoom in/out of canvas.left click-dragโ set canvas cursor.right click-dragโ scroll canvas.
๐ช Split Screen ๐ช
two panes, one vibe. split it, stack it, swap it โ very main character multitasking energy โจ
Zโ split screen in half, so that second sheet on the stack is visible in a second pane.zZโ split screen, and queries for height of second pane.
๐ช Split Window specific Commands ๐ช
gZโ close an already split screen, current pane full screens.Zโ push second sheet on current paneโs stack to the top of the other paneโs stack.Tabโ jump to other pane.gTabโ swap panes.g Ctrl+^โ cycle through sheets.
๐ Other Commands ๐
the miscellaneous little icons of the keyboard world. no cap, some of these are lowkey essential ๐
Qโ quit current sheet and remove it from the CommandLog.vโ toggle sheet-specific visibility (multi-line rows on Sheet, legends/axes on Graph).^E,g^Eโ view traceback for most recent error(s).z^Eโ view traceback for error in current cell.^Lโ refresh screen.^Rโ reload current sheet.^Zโ suspend VisiData process.^Gโ show cursor position and bounds of current sheet on status line.^Vโ show version and copyright information on status line.^Pโ open Status History.mkeystroke โ first, begin recording macro; second, prompt for keystroke, and complete recording. Macro can then be executed everytime provided keystroke is used. Will override existing keybinding. Macros will run on current row, column, sheet.gmโ open an index of all existing macros. Can be directly viewed withEnter, and then modified with^S.^Y,z^Y,g^Yโ open current row/cell/sheet as Python object.^Xexpr โ evaluate Python expr and opens result as Python object.z^Xexpr โ evaluate Python expr, in context of current row, and open result as Python object.g^Xmodule โ import Python module in the global scope.
๐๏ธ Internal Sheets List ๐๏ธ
these are the built-in little rooms you can walk into. very โwelcome to my data houseโ ๐
.Directory Sheet โ browse properties of files in a directory..Guide Index โ read documentation from within VisiData..Memory Sheet (Alt+Shift+M) โ browse saved values, including clipboard.
๐ง Metasheets ๐ง
.Columns Sheet (Shift+C) โ edit column properties..Sheets Sheet (Shift+S) โ jump between sheets or join them together..Options Sheet (Shift+O) โ edit configuration options..Commandlog (Shift+D) โ modify and save commands for replay..Error Sheet (Ctrl+E) โ view last error..Status History (Ctrl+P) โ view history of status messages..Threads Sheet (Ctrl+T) โ view, cancel, and profile asynchronous threads.
๐ฆ Derived Sheets ๐ฆ
.Frequency Table (Shift+F) โ group rows by column value, with aggregations of other columns..Describe Sheet (Shift+I) โ view summary statistics for each column..Pivot Table (Shift+W) โ group rows by key and summarize current column..Melted Sheet (Shift+M) โ unpivot non-key columns into variable/value columns..Transposed Sheet (Shift+T) โ open new sheet with rows and columns transposed.
๐ INTERNAL SHEETS ๐
๐ธ Directory Sheet ๐ธ
๐ global commands ๐
Space open-dir-currentโ open the Directory Sheet for the current directory.
๐ sheet-specific commands ๐
Enter,gEnterโ open current/selected file(s) as new sheet(s).^O,g^Oโ open current/selected file(s) in external$EDITOR.^R,z^R,gz^Rโ reload information for all/current/selected file(s).d,gdโ delete current/selected file(s) from filesystem, upon commit.y,gy directoryโ copy current/selected file(s) to given directory, upon commit.e,ge nameโ rename current/selected file(s) to name.`(backtick) โ open parent directory.z^Sโ commit changes to file system.
๐งญ Guide Index ๐งญ
Browse through a list of available guides. Each guide shows you how to use a particular feature. Gray guides have not been written yet.
๐ global commands ๐
Space open-guide-indexโ open the Guide Index.
๐ sheet-specific commands ๐
Enterโ open a guide.
๐ง Memory Sheet ๐ง
Browse through a list of stored values, referanceable in expressions through their name.
๐ global commands ๐
Alt+Shift+Mโ open the Memory Sheet.Alt+M nameโ store value in current cell in Memory Sheet under name.
๐ sheet-specific commands ๐
eโ edit either value or name, to edit reference.
๐ฆ METASHEETS ๐ฆ
๐ Columns Sheet (Shift+C) ๐
Okay so the properties of columns on the source sheet can be changed with standard editing commands (e, ge, g=, Del) right there on the Columns Sheet. Multiple aggregators can be set by listing them (separated by spaces) in the aggregators column. And bestie, the g commands affect the selected rows, which are the literal columns on the source sheet. Periodt.
๐ global commands
gCโ open Columns Sheet with all columns from all sheets
๐ฏ sheet-specific commands
&โ add column from appending selected source columnsg!,gz!โ toggle/unset selected columns as key columns on source sheetg+aggregator โ add an aggregator to selected source columnsg-(hyphen) โ hide selected columns on source sheetg~,g#,g%,g$,g@,gz#,z%โ set type of selected columns on source sheet tostr/int/float/currency/date/len/floatsiEnterโ open a Frequency Table sheet grouped by column referenced in current row
๐ Sheets Sheet (Shift+S) ๐
This opens the Sheets Stack, which contains only the active sheets on the current stack. Very main character energy, honestly.
๐ global commands
gSโ open Sheets Sheet, which contains all sheets from current session, active and inactiveAltnumber โ jump to sheet number
๐ฏ sheet-specific commands
Enterโ jump to sheet referenced in current rowgEnterโ push selected sheets to top of sheet stackaโ add row to reference a new blank sheetgCโ open Columns Sheet with all columns from selected sheetsgIโ open Describe Sheet with all visible columns from selected sheetsg^Rโ reload all selected sheetsz^C,gz^Cโ abort async threads for current/selected sheet(s)g^Sโ save selected or all sheets&jointype โ merge selected sheets with visible columns from all, keeping rows according to jointype:innerโ keep only rows which match keys on all sheetsouterโ keep all rows from first selected sheetfullโ keep all rows from all sheets (union)diffโ keep only rows NOT in all sheetsappendโ combine all rows from all sheets into a generic sheet, matching columns by nameconcatโ combine all rows from same-type sheets, matching columns by position, keeping first sheet type, column names and typesextendโ copy first selected sheet, keeping all rows and sheet type, and extend with columns from other sheetsmergeโ keep all rows from first sheet, updating any False-y cells with non-False-y values from second sheet; add unique rows from second sheet
๐ธ Options Sheet (Shift+O) ๐ธ
๐ global commands
Shift+Oโ edit global options (apply to all sheets)zOโ edit sheet options (apply to current sheet only)gOโ openoptions.configas TextSheet
๐ฏ sheet-specific commands
Enter,eโ edit option at current rowdโ remove option override for this context^Sโ save option configuration tofoo.visidatarcz^Sโ save option overrides to config file
๐ฆ CommandLog (Shift+D) ๐ฆ
๐ global commands
Dโ open current sheet's CommandLog with all other loose ends removed; includes commands from parent sheetsgDโ open global CommandLog for all commands executed in the current sessionzDโ open current sheet's CommandLog with the parent sheets commands' removedset-envvarname value โ set an environment variable and record it for replay; refresh locale forLANGandLC_*variables
๐ฏ sheet-specific commands
xโ replay command in current rowgxโ replay contents of entire CommandLog^Cโ abort replay
๐ง Threads Sheet (Ctrl+T) ๐ง
๐ global commands
^Tโ open global Threads Sheet for all asynchronous threads runningz^Tโ open current sheet's Threads Sheet
๐ฏ sheet-specific commands
^Cโ abort thread at current rowg^Cโ abort all threads on current Threads Sheet
๐ง DERIVED SHEETS ๐ง
๐ Frequency Table (Shift+F) ๐
A Frequency Table groups rows by one or more columns, and includes summary columns for those with aggregators. It's giving organized chaos, in the best way.
๐ global commands
gFโ open Frequency Table, grouped by all key columns on source sheetzFโ open one-line summary for all rows and selected rows
๐ฏ sheet-specific commands
s,t,uโ select/toggle/unselect these entries in source sheetEnter,gEnterโ open copy of source sheet with rows that are grouped in current cell / selected rows
๐ Describe Sheet (Shift+I) ๐
A Describe Sheet contains descriptive statistics for all visible columns.
๐ global commands
gIโ open Describe Sheet for all visible columns on all sheets
๐ฏ sheet-specific commands
zs,zuโ select/unselect rows on source sheet that are being described in current cell!โ toggle/unset current column as a key column on source sheetEnterโ open a Frequency Table sheet grouped on column referenced in current rowzEnterโ open copy of source sheet with rows described in current cell
๐ฆ Pivot Table (Shift+W) ๐ฆ
Set key column(s) and aggregators on column(s) before pressing Shift+W on the column to pivot. Trust the process, bestie.
๐ฏ sheet-specific commands
Enterโ open sheet of source rows aggregated in current pivot rowzEnterโ open sheet of source rows aggregated in current pivot cell
๐ Melted Sheet (Shift+M) ๐
Open Melted Sheet (unpivot), with key columns retained and all non-key columns reduced to Variable-Value rows.
๐ global commands
gMregex โ open Melted Sheet (unpivot), with key columns retained and regex capture groups determining how the non-key columns will be reduced to Variable-Value rows
๐ Python Object Sheet (^X ^Y g^Y z^Y) ๐
๐ฏ sheet-specific commands
Enterโ dive further into Python objectvโ toggle show/hide for methods and hidden propertiesgv,zvโ show/hide methods and hidden properties
๐ COMMANDLINE OPTIONS ๐
Add -n/--nonglobal to make subsequent CLI options sheet-specific (applying only to paths specified directly on the CLI). By default, CLI options apply to all sheets. Iykyk.
Options can also be set via the Options Sheet or a .visidatarc (see โFILESโ).
-P=longnameโ preplay longname before replay or regular launch; limited to Base Sheet bound commands+toplevel:subsheet:col:rowโ launchvdwith subsheet of toplevel at top-of-stack, and cursor at col and row; all arguments are optional--overwrite=cโ Overwrite with confirmation--guidesโ open Guide Index-f,--filetype=filetypeโ tells VisiData which loader to use for a given filetype instead of trusting the file extension (default:tsv). Aliases:-if,--input-filetype. Heads up bestie: this only affects input paths that come after it on the CLI โ it does not touch the-ooutput, and it doesn't touch files you open later in the session either. Timing matters ๐-of,--output-filetype=filetypeโ sets the saver that the-ooutput will use to filetype, instead of going off its extension.-d,--delimiter=delimiterโ the field delimiter to use for thetsv/usvfiletype (default:\t).-y,--confirm=yโ auto-accept all the confirmation prompts, file overwrite included (default:y). Zero interruptions, maximum chaos, we love her โจ-ro,--overwrite=nโ do not overwrite existing files (default:n). Your files stay safe, no cap ๐ซถ-N,--nothing=Tโ disables loading.visidatarcand plugin addons (default:False). It's giving "fresh start, no baggage."--visidata-dir=strโ the VisiData directory for plugins and other files (default:/build/.visidataโ actually/build/.config/visidata). You can set it with$VD_DIRor with--visidata-dir. Your call, main character ๐--debugโ exit on error and display the stacktrace (default:False). For when you really wanna see what went wrong ๐ญ--undo=boolโ enable undo/redo (default:True). Literally never turn this off, iykyk.--col-cache-size=intโ max number of cache entries in each cached column (default:0).--scroll-incr=intโ how much to scroll with the scrollwheel (default:-3).--force-256-colorsโ use 256 colors even when curses reports fewer (default:False). Fancy colors on a crusty terminal? Slay ๐--quitguardโ confirm before quitting a modified sheet (default:False). The "did you save??" bestie we all need ๐--default-width=intโ default column width (default:20).--default-height=intโ default column height (default:4).--name-joiner=strโ the string used to join sheet or column names (default:_).--value-joiner=strโ the string used to join display values (no default given).--max-rows=intโ number of rows to load from the source (default:1000000000). That's a billion, she's ambitious ๐ฅ--wrapโ wrap text to fit the window width on TextSheet (default:False).--save-filetype=strโ specify the default file type to save as (default:tsv).--profileโ enable profiling on threads (default:False).--min-memory-mb=intโ minimum memory to continue loading and async processing (default:0).--max-threads=intโ maximum number of concurrent processes foraddcol-shell(default:10).--encoding=strโ encoding passed tocodecs.openwhen reading a file (default:utf-8-sig).--encoding-errors=strโencoding_errorspassed tocodecs.open(default:surrogateescape).--tmp-prefix=strโ prefix for temporary files and directories (default:visidata-).--confirm=strโ confirm interactive prompts,{a=ask|y=yes}(default:a).--mouse-interval=intโ max time between press/release for a click, in ms (default:1).--bulk-select-clearโ clear selected rows before new bulk selections (default:False).--some-selected-rowsโ if no rows are selected: whenTrue,someSelectedRowsreturns all rows; whenFalse, it fails (default:False).--regex-skip=strโ regex of lines to skip in text sources.--regex-flags=strโ flags to pass tore.compile(),[AILMSUX](default:I).--load-lazyโ load subsheets always (False) or lazily (True) (default:False).--skip=intโ skip N rows before the header (default:0).--header=intโ parse the first N rows as column names (default:1).--delimiter=strโ field delimiter to use for thetsv/csvfiletype.--row-delimiter=strโ row delimiter to use for thetsv/csvfiletype.--tsv-safe-newline=strโ replacement for the newline character when saving totsv.--tsv-safe-tab=strโ replacement for the tab character when saving totsv.--visibility=intโ visibility level (default:0).--default-sample-size=intโ number of rows to sample forregex.split,0means all (default:100).--fmt-expand-dict=strโ format str to use for names of columns expanded from a dict,(colname, key)(default:%s.%s).--fmt-expand-list=strโ format str to use for names of columns expanded from a list,(colname, index)(default:%s[%s]).--json-indent=NoneTypeโ indent to use when savingjson(default:None).--json-sort-keysโ sort object keys when saving tojson(default:False).--json-ensure-ascii=boolโ ensure ascii encode when savingjson(default:True).--default-colname=strโ column name to use for non-dict rows.--filetype=strโ input filetype; overrides the file extension.--safe-error=strโ error string to use while saving (default:#ERR).--save-encoding=strโ encoding passed tocodecs.openwhen saving a file (default:utf-8).--clean-namesโ clean column/sheet names so they're valid Python identifiers (default:False).--replay-wait=floatโ time to wait between replayed commands, in seconds (default:0.0).--replay-ignore-errorsโ continue replay on error instead of aborting (default:False).--rowkey-prefix=strโ string prefix for rowkey in the cmdlog (default:ใญ). Iconic choice, honestly ๐--clipboard-copy-cmd=strโ command to copy stdin to the system clipboard (default:xclip -selection clipboard -filter).--clipboard-paste-cmd=strโ command to send the contents of the system clipboard to stdout (default:xclip -selection clipboard -o).--fancy-chooserโ use the nicer selection interface for aggregators and jointype (default:False).--null-value=NoneTypeโ a value to be counted as null (default:None).--histogram-bins=intโ number of bins for the histogram of numeric columns (default:0).--numeric-binningโ bin numeric columns into ranges (default:False).--plot-colors=strโ list of distinct colors to use for plotting distinct objects.--motd-url=strโ source of randomized startup messages. A little treat every time you launch โจ--dir-depth=intโ folder recursion depth on DirSheet (default:0).--dir-hiddenโ load hidden files on DirSheet (default:False). The secret files ๐--active-procs=intโ number of concurrent processes on DirSheet (default:10).--config=Pathโ config file to exec in Python (default:/build/.visidatarc).--play=strโ afile.vdjto replay.--batchโ replay in batch mode (with no interface and all status sent to
โฆstdout)
--output=NoneTypeโ defaultNone; saves the final visible sheet to output when replay ends. The grand finale exit moment ๐--output-filetype=strโ filetype for the output path; overrides the file extension. No default shown, bestie.--output-cell=NoneTypeโ defaultNone; outputs the cursor cellโs display value at exit.--preplay=strโ longnames to preplay before replay</em>.--imports=strโ defaultplugins; imports to preload before.visidatarc(command-line only).--nothingโ defaultFalse; no config, no plugins, nothing extra. Full ghost mode ๐ป--interactiveโ defaultFalse; run interactive mode after batch replay.--s3-anonโ defaultFalse; run S3 in anonymous mode.--overwrite=strโ defaultc; allow overwriting existing files, with{c=check|n=no/readonly}.--plugins-autoload=boolโ defaultTrue; do not autoload plugins ifFalse.--theme=strโ display/color theme to use. Serve the vibe check ๐จ--pandas-allow-pickleโ defaultFalse; pandas allow unpickling objects (unsafe).--airtable-auth-token=strโ Airtable API key fromhttps://airtable.com/account.--matrix-token=strโ matrix API token.--matrix-user-id=strโ matrix user ID associated with token.--matrix-device-id=strโ defaultVisiData; device ID associated with matrix login.--reddit-client-id=strโclient_idfor reddit API.--reddit-client-secret=strโclient_secretfor reddit API.--reddit-user-agent=strโ defaultVisiData v3.5;user_agentfor reddit API.--zulip-batch-size=intโ default-100; number of messages to fetch per call (<0to fetch before anchor).--zulip-anchor=intโ default1000000000; message id to start fetching from.--zulip-delay-s=floatโ default1e-05; seconds to wait between calls (0to stop after first).--zulip-api-key=strโ API key for Zulip.--zulip-email=strโ email address for use with Zulip API key.--csv-dialect=strโ defaultexcel; dialect passed tocsv.reader.--csv-delimiter=strโ default,; delimiter passed tocsv.reader.--csv-doublequote=boolโ defaultTrue; quote-doubling setting passed tocsv.reader.--csv-quotechar=strโ default"; quotechar passed tocsv.reader.--csv-quoting=intโ default0; quoting style passed tocsv.readerandcsv.writer.--csv-skipinitialspace=boolโ defaultTrue;skipinitialspacepassed tocsv.reader.--csv-escapechar=NoneTypeโ defaultNone; escapechar passed tocsv.reader.--csv-lineterminator=strโ default"; lineterminator passed tocsv.writer.--safety-firstโ defaultFalse; sanitize input/output to handle edge cases, with a performance cost. Safety slay, but bestie, it costs you ๐--duckdb-onconnect=strโ duckdb statement to execute after opening a connection.--f5log-object-regex=NoneTypeโ defaultNone; regex to apply to the object name. Useful where object names have a structure to extract. Use the(?P<foo>...)named groups form to get column names.--f5log-log-year=NoneTypeโ defaultNone; override the default year used for log parsing. Use all four digits of the year (e.g.,2022). By default (None) use the year from the ctime of the file, or failing that the current year.--f5log-log-timezone=strโ defaultUTC; timezone of the source file.--fixed-rows=intโ default1000; number of rows to check for fixed width columns.--fixed-maxcols=intโ default0; max number of fixed-width columns to create (0is no max).--graphviz-edge-labels=boolโ defaultTrue; whether to include edge labels on graphviz diagrams.--grep-base-dir=NoneTypeโ defaultNone; base directory for relative paths opened withsysopen-row.--hdf5-matrix-enumerateโ defaultFalse; enumerate matrix rows and columns.--html-title=strโ default<h2>{sheet.name}</h2>; table header when saving to html.--http-max-next=intโ default0; maxnext.urlpages to follow in http response.--http-req-headers=dictโ default{'User-Agent': 'VisiData v3.5'}; http headers to send to requests.--http-ssl-verify=boolโ defaultTrue; verify host and certificates for https.--npy-allow-pickleโ defaultFalse; numpy allow unpickling objects (unsafe).--npy-matrix-enumerateโ defaultFalse; enumerate matrix rows and columns.--pcap-internet=strโ defaultn; (y/s/n) ifsave_dotincludes all internet hosts separately (y), combined (s), or does not include the internet (n).--pdf-tablesโ defaultFalse; parse PDF for tables instead of pages of text.--postgres-schema=strโ defaultpublic; desired schema for the Postgres database.--s3-endpoint=strโ alternate S3 endpoint, used for local testing or alternative S3-compatible services.--s3-glob=boolโ defaultTrue; enable glob-matching for S3 paths.--s3-version-awareโ defaultFalse; show all object versions in a versioned bucket.--sqlite-onconnect=strโ sqlite statement to execute after opening a connection.--xlsx-meta-columnsโ defaultFalse; include columns for cell objects, font colors, and fill colors.--xlsx-color-cells=boolโ defaultTrue; color cells based on xlsx source.--xml-parser-huge-tree=boolโ defaultTrue; allow very deep trees and very long text content.--xml-parser-recover=boolโ defaultTrue; try hard to parse through broken XML.--plt-marker=strโ default.;matplotlib.markers.--plt-linestyle=strโ matplotlib linestyle forsave-svg;-to connect points as a line chart.--plot-palette=strโ defaultSet3; colorbrewer palette to use.--server-addr=strโ default127.0.0.1; IP address to listen for commands.--server-port=intโ default0; port to listen for commands.--server-socket=strโ path to Unix domain socket to listen for- โฆokay so this one's carrying on from the last part โ the name got cut off, but the tail end says:
commands(takes precedence overserver_port) --server-cursor-width=intโ max display width per cell in cursor row echo. default:200--fixer-api-key=strโ your API key forapi.apilayer.com/fixer๐ no key, no currency conversions bestie--fixer-cache-days=intโ how long to cache currency conversions, in days. default:1--describe-aggrs=strโ the numeric aggregators to calculate on the Describe sheet. default:mean stdev๐--highlight-search=boolโ whether to highlight strings in searches. default:True--incr-base=floatโ the start value for column increments. default:1.0--ping-count=intโ send this many pings to each host. default:3๐--ping-interval=floatโ wait between ping rounds, in seconds. default:0.1--regex-maxsplit=intโ themaxsplitto pass toregex.split. default:0--rename-cascadeโ cascade column renames into expressions. default:False--faker-locale=strโ default locale to use for Faker. default:en_US๐--faker-extra-providers=NoneTypeโ list of additionalProviderclasses to load viaadd_provider(). default:None--faker-salt=strโ makes your fakes deterministic, when the seed string is non-empty ๐ง--mailcap-mimetype=strโ force the mimetype forsysopen-mailcap--unfurl-emptyโ if unfurl includes rows for empty containers. default:False
๐ DISPLAY OPTIONS ๐
Okay so these ones are special โ display options can only be set via the Options Sheet or a .visidatarc (peep FILES for the deets ๐). No sneaking them in on the command line, bestie, that's just not how it works.
disp_menuโ defaultTrueโ shows the menu up on the top line whenever it's not the active thing. very "i'm here but not here here" of it โจdisp_menu_keysโ defaultTrueโ shows keystrokes inline inside submenus, so you can actually see what to press like a good little cheat sheet ๐color_menuโ defaultblack on 75 blueโ the general color of menu itemscolor_menu_activeโ default223 yellow on blackโ color of the menu items that are currently active, aka the main character ones ๐color_menu_specโ defaultblack on 34 greenโ color of the sheet-specific menu itemscolor_menu_helpโ defaultblack italic on 75 blueโ color of the helpbox. italic, because it's fancy ๐disp_menu_boxcharsโ defaultโโโโโโโโโโคโ the box characters used to draw menusdisp_menu_moreโ defaultยปโ the indicator for a command submenudisp_menu_pushโ defaultโโ indicator that a command pushes a sheet onto the sheet stackdisp_menu_inputโ defaultโฆโ indicator that the command needs inputdisp_menu_fmtโ default| VisiData {vd.version} | {vd.motd}โ the right-side menu format stringdisp_float_fmtโ default{:.2f}โ the default fmtstr used to format float valuesdisp_int_fmtโ default{:d}โ the default fmtstr used to format int valuesdisp_formatterโ defaultgenericโ the formatter that creates the text in each cell (also used by text savers, fyi)disp_displayerโ defaultgenericโ the displayer that renders the text in each celldisp_note_noneโ defaultโโ what you see in a cell whose value isNone๐ซฅdisp_truncatorโ defaultโฆโ indicator that the contents are only partially visibledisp_oddspaceโ defaultยทโ the displayable character standing in for odd whitespacedisp_more_leftโ default<โ header note indicating there are more columns to the leftdisp_more_rightโ default>โ header note indicating there are more columns to the rightdisp_error_valโ default (empty) โ the displayed contents for a computation exceptiondisp_ambig_widthโ default1โ the width to use for unicode chars that are marked ambiguousdisp_pendingโ default (empty) โ the string to display in pending cellsdisp_note_pendingโ default:โ the note to display for pending cellsdisp_note_fmtexcโ default?โ cell note for an exception during formattingdisp_note_getexcโ default!โ cell note for an exception during computationdisp_note_typeexcโ default!โ cell note for an exception during type conversioncolor_note_pendingโ defaultbold greenโ color of the note in pending cellscolor_note_typeโ default226 yellowโ color of the cell note for non-str types in anytype columnscolor_note_rowโ default220 yellowโ color of the row note on the left edgedisp_column_sepโ defaultโโ separator between columnsdisp_keycol_sepโ defaultโโ separator between key columns and the rest of the columnsdisp_rowtop_sepโ defaultโdisp_rowmid_sepโ defaultโdisp_rowbot_sepโ defaultโdisp_rowend_sepโ defaultโdisp_keytop_sepโ defaultโdisp_keymid_sepโ defaultโdisp_keybot_sepโ defaultโdisp_endtop_sepโ defaultโdisp_endmid_sepโ defaultโdisp_endbot_sepโ defaultโdisp_selected_noteโ defaultโขdisp_sort_ascโ defaultโโโโกโงโโ the characters for ascending sort, going up up up ๐ฆdisp_sort_descโ defaultโโกโโฃโฉโโ the characters for descending sort, gravity said hellocolor_defaultโ defaultwhite on blackโ the default fg and bg colorscolor_default_hdrโ defaultbold white on blackโ color of the column headerscolor_bottom_hdrโ defaultunderline white on blackโ color of the bottom header rowcolor_current_rowโ defaultreverseโ color of the cursor rowcolor_current_colโ defaultbold on 232โ color of the cursor columncolor_current_cellโ default (empty) โ color of the current cell, if it's different fromcolor_current_row+color_current_colcolor_current_hdrโ defaultbold reverseโ color of the header for the cursor columncolor_column_sepโ defaultwhite on blackโ color of column separatorscolor_key_colโ default81 cyanโ color of key columns ๐color_hidden_colโ default8โ color of hidden columns on metasheetscolor_selected_rowโ default215 yellowโ color of selected rowscolor_clickableโ defaultboldโ color of an internally clickable itemcolor_codeโ defaultbold white on 237โ color of a code samplecolor_headingโ defaultbold black on yellowโ color of a headercolor_guide_unwrittenโ default243 on blackโ color of unwritten guides in GuideGuidedisp_wrap_max_linesโ default3โ max lines for the multiline viewdisp_wrap_break_long_wordsโ defaultTrueโ break words longer than the column width in multilinedisp_wrap_replace_whitespaceโ defaultFalseโ replace whitespace with spaces in multilinedisp_wrap_placeholderโ defaultโฆโ the multiline string that indicates truncationdisp_multiline_focusโ defaultTrueโ only the multiline cursor row gets focus, everybody else sit downcolor_multiline_bottomโ default (empty) โ color of the bottom line of multiline rowscolor_aggregatorโ defaultbold 255 white on 240 blackโ color of the aggregator summary on the bottom rowdisp_splitwin_pctโ default0โ height of the second sheet on screendisp_rstatus_fmtโ default: this whole format string, on the right side of your status line. it's a lot. she's an icon:
{sheet.threadStatus} {sheet.keystrokeStatus}[:longname_status]{sheet.longname}[/] {sheet.nRows:9d} {sheet.rowtype} {sheet.modifiedStatus}{sheet.selectedStatus}{vd.replayStatus}{vd.sidebarStatus}
disp_status_fmtโ default{sheet.sheetlist}|โ the left-side status format stringdisp_lstatus_maxโ default0โ maximum length of the left status linedisp_status_sepโ defaultโโ separator between statusescolor_keystrokesโ defaultbold white on 237โ color of the input keystrokescolor_longname_guideโ default237โ color of command longnamescolor_longname_statusโ defaultwhiteโ color of command longnames in the status areacolor_keysโ defaultbold reverseโ color of keystrokes in helpcolor_statusโ defaultbold on 238โ status line colorcolor_errorโ default202 1โ error message color ๐ญcolor_warningโ default166 15โ warning message colorcolor_top_statusโ defaultunderlineโ top window status bar colorcolor_active_statusโ defaultblack on 68 blueโ active window status bar colorcolor_inactive_statusโ default8 on blackโ inactive window status bar colorcolor_highlight_statusโ defaultblack on greenโ color of highlighted elements in the statusbarcolor_workingโ default118 5โ color for when the system is running smoothly ๐ธcolor_edit_unfocusedโ default238 on 110โ display color for unfocused input in a formcolor_edit_cellโ default233 on 110โ the cell color to use when editing a celldisp_edit_fillโ default_โ the edit field fill characterdisp_unprintableโ defaultยทโ substitute character for unprintablesdisp_date_fmtโ default%Y-%m-%dโ the default fmtstr passed tostrftimefor date valuesdisp_currency_fmtโ default%.02fโ the default fmtstr to format currency valuescolor_currency_negโ defaultredโ color for negative values in the currency displayerdisp_replay_playโ defaultโถโ status indicator for an active replaydisp_replay_recordโ defaultโบโ status indicator for macro recordcolor_status_replayโ defaultgreenโ color of the replay status indicatordisp_histogramโ defaultโโ the histogram element characterdisp_graph_labelsโ defaultTrueโ show axes and legend on graphdisp_canvas_charsetโ default: the braille charset below (yeah, all of it, it's giving art ๐จ) โ charset to render 2x4 blocks on canvas:
โ โ โ โ โ โ
โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ กโ ขโ ฃโ คโ ฅโ ฆโ งโ จโ ฉโ ชโ ซโ ฌโ ญโ ฎโ ฏโ ฐโ ฑโ ฒโ ณโ ดโ ตโ ถโ ทโ ธโ นโ บโ ปโ ผโ ฝโ พโ ฟโกโกโกโกโกโก
โกโกโกโกโกโกโกโกโกโกโกโกโกโกโกโกโกโกโกโกโกโกโกโกโกโกโก โกกโกขโกฃโกคโกฅโกฆโกงโกจโกฉโกชโกซโกฌโกญโกฎโกฏโกฐโกฑโกฒโกณโกดโกตโกถโกทโกธโกนโกบโกปโกผโกฝโกพโกฟโขโขโขโขโขโข
โขโขโขโขโขโขโขโขโขโขโขโขโขโขโขโขโขโขโขโขโขโขโขโขโขโขโข โขกโขขโขฃโขคโขฅโขฆโขงโขจโขฉโขชโขซโขฌโขญโขฎโขฏโขฐโขฑโขฒโขณโขดโขตโขถโขทโขธโขนโขบโขปโขผโขฝโขพโขฟโฃโฃโฃโฃโฃโฃ
โฃโฃโฃโฃโฃโฃโฃโฃโฃโฃโฃโฃโฃโฃโฃโฃโฃโฃโฃโฃโฃโฃโฃโฃโฃโฃโฃ โฃกโฃขโฃฃโฃคโฃฅโฃฆโฃงโฃจโฃฉโฃชโฃซโฃฌโฃญโฃฎโฃฏโฃฐโฃฑโฃฒโฃณโฃดโฃตโฃถโฃทโฃธโฃนโฃบโฃปโฃผโฃฝโฃพโฃฟ
disp_graph_pixel_randomโ defaultFalseโ randomly choose an attr from the set of pixels instead of the most common onedisp_zoom_incrโ default2.0โ the amount to multiply the current zoomlevel by when zooming ๐color_graph_hiddenโ default238 blueโ color of the legend for a hidden attributecolor_graph_selectedโ defaultboldโ color of selected graph pointscolor_graph_axisโ defaultboldโ color for graph axis labelsdisp_graph_tick_xโ defaultโตโ character for graph x-axis tickscolor_graph_reflineโ the color used for the graph reference value lines โจdisp_graph_reflines_x_charset(default:โโโโ) โ charset for rendering the vertical reference lines on a graphdisp_graph_reflines_y_charset(default:โโโโ) โ charset for rendering the horizontal reference lines on a graphdisp_graph_multiple_reflines_char(default:โ) โ the char used to render multiple parallel reflinesdisp_help_flags(default:cmdpalette guides help hints inputfield inputkeys nometacols sidebar) โ space-separated list of the helper features you wanna enable, bestie:cmdpalette: exec-longname suggestionsguides: guides in the sidebarhelp: help sidebar collapsed by defaulthints: context-sensitive hints on the menu lineinputfield: context-sensitive help for each input fieldinputkeys: input quick reference in the sidebarnometacols: hide expert columns on metasheetssidebar: context-sensitive sheet help in the sidebarall: enable every helper feature at once (iconic behaviour tbh)
color_readonly(default:on 52) โ color for readonly columns ๐color_add_pending(default:green) โ color for rows that are pending addcolor_change_pending(default:reverse yellow) โ color for cells pending modificationcolor_delete_pending(default:red) โ color for rows pending deletedisp_sidebar(default:True) โ whether to display the sidebar at alldisp_sidebar_fmtโ format string for the default sidebardisp_sidebar_width(default:0) โ max width for the sidebardisp_sidebar_height(default:0) โ max height for the sidebarcolor_sidebar(default:black on 114 blue) โ base color of the sidebarcolor_sidebar_title(default:black on yellow) โ color of the sidebar titledisp_boxchars(default:โโโโโโโโ) โ box characters, in the order (ls rs ts bs tl tr bl br) ๐color_match(default:red) โ color for matching chars in the palette choosercolor_f5log_mon_up(default:green) โ color of f5log monitor status upcolor_f5log_mon_down(default:red) โ color of f5log monitor status downcolor_f5log_mon_unknown(default:blue) โ color of f5log monitor status unknowncolor_f5log_mon_checking(default:magenta) โ color of monitor status while it's checkingcolor_f5log_mon_disabled(default:black) โ color of monitor status disabledcolor_f5log_logid_alarm(default:red) โ color of alarmscolor_f5log_logid_warn(default:yellow) โ color of warningscolor_f5log_logid_notice(default:cyan) โ color of noticecolor_f5log_logid_info(default:green) โ color of infocolor_xlsx_auto_dark(default:16 black) โ color of Automatic xlsx text on light fillscolor_xlsx_auto_light(default:231 white) โ color of Automatic xlsx text on dark fillscolor_xword_active(default:green) โ color of the active clue ๐ธdisp_decimal_fmt(default:{}) โ default fmtstr for formatting decimal valuescolor_cmdpalette(default:black on 72) โ base color of the command palettedisp_cmdpal_max(default:10) โ max number of suggestions in the command palettecolor_highlight_search(default:21 blue on 15 white) โ color used for highlighting search resultsdisp_scroll_context(default:0) โ minimum number of lines to keep visible above/below the cursor when scrollingdisp_sparkline(default:โโโโโ โโ) โ the characters used to display a sparkline ๐ฅ
๐ฆ EXAMPLES ๐ฆ
okay so this is the part where it all clicks, fr fr. just vibe with these:
vd
launch DirSheet for the current directory
vd foo.tsv
open the file foo.tsv in the current directory
vd -f ddw
open a blank sheet of type ddw
vd new.tsv
open a new blank tsv sheet named new
vd -f sqlite bar.db
open the file bar.db as a sqlite database
vd foo.tsv -n -f sqlite bar.db
open foo.tsv as tsv and bar.db as a sqlite database
vd -f sqlite foo.tsv bar.db
open both foo.tsv and bar.db as a sqlite database
vd -b countries.fixed -o countries.tsv
convert countries.fixed (in fixed width format) to countries.tsv (in tsv format) โ glow-up complete โจ
vd postgres://username:password@hostname:port/database
open a connection to the given postgres database
vd --play tests/pivot.vdj --replay-wait 1 --output tests/pivot.tsv
replay tests/pivot.vdj, waiting 1 second between commands, and output the final sheet to test/pivot.tsv
ls -l | vd -f fixed --skip 1 --header 0
parse the output of ls -l into usable data
ls | vd | lpr
interactively select a list of filenames to send to the printer
vd newfile.tsv
open a blank sheet named newfile if the file does not exist
vd -P open-plugins
preplay longname open-plugins before starting the session
vd a.xlsx b.tsv c.tsv +0:3:1:2
launch with cursor for sheet 0 (a.xlsx) at subsheet 3 in sheet 0, col 1, row 2
vd a.xlsx b.tsv c.tsv +0:1:2
launch with cursor for sheet 0 (a.xlsx) at col 1, row 2
vd a.tsv b.tsv c.tsv +1:2
launch with cursor for the last sheet (c.tsv) at col 1, row 2
vd a.tsv b.tsv c.tsv +1:
launch with cursor for the last sheet (c.tsv) at col 1
vd a.tsv b.tsv c.tsv +:2
launch with cursor for the last sheet (c.tsv) at row 2
vd a.xlsx b.xlsx c.xlsx +0:annual:1:2 +1:sales:monthly:3:4
launch with cursor for sheet 0 (a.xlsx) in subsheet annual at col 1, row 2, and cursor for sheet 1 (b.xlsx), subsheet sales in subsheet monthly; col 3, row 4 โ yeah it's a whole journey, she contains multitudes ๐
vd a.tsv b.tsv c.tsv +1::
launch in sheet 1 (b.tsv), with cursor at col 0, row 0
vd a.tsv b.tsv c.tsv +-2::
launch in 2nd from last sheet (b.tsv), with cursor at col 0, row 0
vd a.tsv b.tsv c.tsv +:1:
launch with cursors for all sheets at col 1
vd a.tsv b.tsv c.tsv +::2
launch with cursors for all sheets at row 2
vd a.tsv b.tsv c.tsv +:1:2
launch with cursors for all sheets at col 1, row 2
vd a.xlsx b.xslx c.xlsx +:a:1:2
launch with cursors for all sheets at subsheet a, col 1, row 2
๐ง FILES ๐ง
okay so here's the tea. at the start of every session, VisiData looks for $HOME/.visidatarc, and if it exists, it calls Python exec() on its contents. like, it will run your code. for example:
options.min_memory_mb=100 # stop processing without 100MB free
bindkey('0', 'go-leftmost') # alias '0' to go to first column, like vim
def median(values):
L = sorted(values)
return L[len(L)//2]
vd.aggregator('median', median)
functions you define in .visidatarc are available in python expressions (e.g. in derived columns). so yes, you can absolutely build your own little toolbox in there ๐ซถ
the VisiData directory holds local plugins (in its plugins/ subdirectory), saved macros, and other files. it defaults to ~/.config/visidata on Linux and ~/Library/Preferences/visidata on macOS, or $XDG_CONFIG_HOME/visidata when XDG_CONFIG_HOME is set. set VD_DIR before starting vd or use --visidata-dir=directory to choose another directory. the command-line option takes precedence over VD_DIR.
heads up bestie: input history and the list of saved macros are in the data directory (~/.local/share/visidataon Linux), and cached downloads are in the cache directory (~/.cache/visidataon Linux); neither moves with the VisiData directory. so don't be shocked when they stay put ๐
๐ SUPPORTED SOURCES ๐
core VisiData includes these sources:
tsv(tab-separated value) โ plain and simple. VisiData writes tsv format by default. see the--tsv-delimiteroption.csv(comma-separated value) โ.csvfiles are a scourge upon the earth, and still regrettably common. see the--csv-dialect,--csv-delimiter,--csv-quotechar, and--csv-skipinitialspaceoptions. accepted dialects areexcel-tab,unix, andexcel.fixed(fixed width text) โ columns are autodetected from the first 1000 rows (adjustable with--fixed-rows).json(single object) andjsonl/ndjson/ldjson(one object per line). cells containing lists (e.g.[3]) or dicts ({3}) can be expanded into new columns with(and unexpanded with).sqliteโ may include multiple tables. the initial sheet is the table directory; Enter loads the entire table into memory. z+Ctrl+S saves modifications to source. (in the manpage that's writtenz^S, iykyk ๐ )
URL schemes are also supported too:
http(requiresrequests); can be used as transport for with another filetype
for a list of all remaining formats supported by VisiData, see https://visidata.org/formats. โจ
in addition, .zip, .gz, .bz2, .xz, ,zstd, and .zst files are decompressed on the fly. no cap, she just does it ๐ฆ
๐ AUTHOR ๐
VisiData was made by Saul Pwanson <vd@saul.pw>. absolute legend, honestly ๐ซถ
and that's the whole page, bestie โ vd(1), from the Linux/MacOS build, dated October 27, 2026. go forth and spreadsheet your heart out ๐โจ๐
๐ฆ where this page comes from
- arch rolling: visidata 3.5-1 ยท GPL-3.0-only
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms