VisiData version 2.0

A lot of features have been added to VisiData. So many, in fact, that we are calling the next big release v2.0. But with so many changes, we need your help to test and find bugs.

If you can handle the sharp cutting edge of VisiData, then go ahead and install the pre-release version:

pip3 install git+git://github.com/saulpw/visidata@v2.-1

Then, play with the new features and file any issues you come across.

New Features

1. Alt+ layer for easier page-switching.

Alt+1 will go to the first loaded sheet, Alt+2 goes to the second etc. A sheet's number is in the lower left of the status line, and in the new shortcut column on the SheetsSheet.

The Alt (or Esc- prefix) layer is otherwise reserved for your personal bindings of builtin and/or custom commands. Use ^[x as the keybinding for Alt+x (or Esc x).

2. Undo/redo for modifying commands

By popular request, VisiData now has undo/redo for certain operations. Press Shift+U to undo the last modification on the current sheet, and then Shift+R to redo what you just undid.

[In general undo will only be available for commands that could change which data is saved, which means that hiding a column is undoable but changing its width is not.]

Please let us know if any command is missing an undo, or if there is anything about an undo or redo operation that feels "weird".

3. Deferred changes

When I made the DirSheet and gave it the power to delete files, and modify metadata, I quickly realized it needed to be a "deferred sheet". Modifications and deletions were staged instead of committed immediately. Then this concept transferred well to vgit, and now it seems like it might be generally useful.

Now, most sheets in VisiData will keep track of their additions/modifications/deletions, and color them accordingly. You can save the changes back to the source with the usual Ctrl+S and revert all changes back to the most recent save with Ctrl+R.

Please let us know how the modify/save/confirm process feels on any sheet, with particular attention to derived sheets and metasheets.

4. Multi-line rows

Previously, VisiData only had single-line rows; to expand long text you had to increase the width of the column.

Now, VisiData v2.x supports optional multi-line rows! Toggle it by pressing v on any sheet with truncated values, and cells in all columns will expand their height and wordwrap to show the full value.

Please let us know how multi-line rows looks and feels for you; in particular how scrolling with multi-line rows feels.

5. Range binning for numeric columns on frequency and pivot tables

Per user request, we have added a feature flag for range binning of numeric columns.

If you set the option numeric_binning to True, Freqency and Pivot tables with numeric columns will bin the values into ranges.

If you play with it, let us know how it feels, and if you find any issues with edge cases.

6. Plugin framework

Did you know that if you want VisiData to do something new or different, you can write a plugin and start using it right away? Some plugins have already been written for 1.5.2, like jsvine's vdnormcol and vddedupe.

2.0 will add a PluginsSheet, which fetches the list of known plugins from visidata.org/plugins.tsv, and allows you to easily install and activate (a), and/or deactivate (d) them. For instructions on how to manually incorporate plugin code, see our docs and dev checklist.

This plugin framework is what makes VisiData a platform, and not just a tool.

The API reworking that we're doing is substantial, so existing plugins and .visidatarc files may need to be changed in a bunch of small ways. With 2.0, we are going to refine and document a stable and reasonable API for plugin authors to rely on.

And we're doing this work, because the plugin and app ecosystem for VisiData very well might become more important than the VisiData core utility itself. Like some people use emacs mostly for magit or org-mode, or jupyter and pandas with python.

7. Lots more changes

There are also lots more changes! Even if you do not end up playing with any of the new features, just using VisiData as you usually do and filing issues as they come would be an enormous help.