VisiData is command-driven, which means that it only does something when you tell it to. It doesn't auto-save, or provide tool-tips on mouse-over, or show a paperclip asking if you need help after some amount of time. It just sits there waiting for your next command. You can leave it running for days, and it won't consume any of your precious battery-life idling in the background.
Commands are discrete units of behavior.
Given the same input, the same command will always produce the same result (with a few obvious exceptions, like random-rows
).
All state changes happen with a command. Any commands that will result in different data being saved, are appended to the command log.
This also means that there are a lot of commands. And while each command has a unique longname which identifies its semantics, you almost always execute commands by pressing its keybinding, which is a small number of keystrokes.
As of v2.0, there are over 300 built-in commands in VisiData. How can you remember them all?
Well the good news is, you don't have to.
Most people learn the 20 or so commands that they need for their specific workflow (which 20 commands will be different for each person), and these account for 80% of their use cases.
Because the keybindings are so short, they quickly become part of your muscle memory.
When you need another command, you can look it up in the manpage (whether via Ctrl+H
, or online), or in the commands sheet (z Ctrl+H
).
Or maybe you discover new commands in the online documentation (/docs), or from a friend, or any number of other sources.
To help you get over this learning curve quickly, the keybindings are deliberately chosen to be mnemonic; that is, they have a structure which is intended to be a lot easier to remember than if they were chosen purely at random. These mnemonics are drawn from various sources:
- existing data vocabulary, like
M
elt - command terminal usage, like
Ctrl+Z
for suspend - vim commands, like
hjkl
- keyboard layout, like the symbols above the number keys affecting column metadata