id = "visidata"
name = "VisiData"
homepage = "https://www.visidata.org/"
description = "Terminal spreadsheet multitool for discovering and arranging data"
executables = ["vd"]
[dotfiles]
paths = ["[configHome]/visidata/"]
secret = [
"~/.visidatarc",
"[configHome]/visidata/config.py",
]
[commands]
format = 1
label = "Explore tabular data"
description = "Open CSV, TSV, JSON, Excel and other data files in VisiData, or run in batch mode to save the result. Per-option overrides beyond header/skip are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false }
[[commands.source]]
id = "man"
kind = "manual"
url = "https://manpages.debian.org/bookworm/visidata/vd.1.en.html"
revision = "Debian bookworm 2.11"
evidence = """vd [options] [input ...]
-f, --filetype=filetype set loader to use for filetype instead of file extension
-d, --delimiter=delimiter field delimiter to use for tsv/usv filetype
-p, --play=cmdlog replay a saved cmdlog within the interface
-b, --batch replay in batch mode (with no interface)
-o, --output=file save final visible sheet to file as .tsv
--skip=int skip N rows before header
--header=int parse first N rows as column names
-N, --nothing=T disable loading .visidatarc and plugin addons"""
[[commands.field]]
id = "inputs"
label = "Input files"
type = "path"
position = 0
multiple = true
path = { kind = "file", role = "input", must_exist = true }
sources = ["man"]
[[commands.field]]
id = "filetype"
label = "File type"
description = "Force a loader instead of detecting by file extension."
type = "string"
option = ["--filetype", "-f"]
suggestions = [{ value = "csv", label = "CSV" }, { value = "tsv", label = "TSV" }, { value = "json", label = "JSON" }, { value = "jsonl", label = "JSON Lines" }]
sources = ["man"]
[[commands.field]]
id = "delimiter"
label = "Field delimiter"
description = "For tsv/usv file types."
type = "string"
option = ["--delimiter", "-d"]
sources = ["man"]
[[commands.field]]
id = "header"
label = "Header rows"
description = "Number of rows to parse as column names (0 for none)."
type = "integer"
option = ["--header"]
sources = ["man"]
[[commands.field]]
id = "skip"
label = "Skip rows"
description = "Rows to skip before the header."
type = "integer"
option = ["--skip"]
sources = ["man"]
[[commands.field]]
id = "batch"
label = "Batch mode (no interface)"
description = "Useful with --play and an output file."
type = "boolean"
option = ["--batch", "-b"]
sources = ["man"]
[[commands.field]]
id = "play"
label = "Replay cmdlog"
type = "path"
option = ["--play", "-p"]
path = { kind = "file", role = "input", must_exist = true }
sources = ["man"]
[[commands.field]]
id = "output"
label = "Output file"
description = "Save the final visible sheet to this file."
type = "path"
option = ["--output", "-o"]
path = { kind = "file", role = "output", must_exist = false }
effect = "overwrite"
sources = ["man"]
[[commands.field]]
id = "nothing"
label = "Skip .visidatarc and plugins"
type = "boolean"
option = ["-N"]
sources = ["man"]
[[commands.task]]
id = "open"
label = "Open files"
fields = ["inputs", "filetype", "delimiter"]
required = ["inputs"]
[[commands.task]]
id = "convert"
label = "Convert to a file (batch)"
fields = ["inputs", "batch", "output"]
required = ["inputs", "batch", "output"]
set = { batch = [true] }
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["inputs", "filetype", "delimiter", "header", "skip"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["batch", "play", "output", "nothing"]