Skip to content


By Saul Pwanson

v2.5 (2021-07-08)

First off, some non-technical notices:

Since 2017 when VisiData was started, I've created a number of plugins and tools that take advantage of the VisiData "platform".
These have historically been separate from VisiData, but it became a fair amount of mental overhead tracking a dozen different repos when making changes to the VisiData core repo.
So a little while ago I migrated some of my older projects, like vsh and vgit, into the saulpw/visidata repo, aiming at a "mono-repo".
But they never really got integrated, because they didn't feel right either: some of them were wild experiments, some I don't want to release as open source, some I don't want to provide the level of support for, and some simply don't belong in the visidata repo (like galcon).

So now I'm migrating towards a "duo-repo" approach.
The saulpw/visidata repo can remain focused on providing a reliable and flexible platform, and a separate repo, "vdplus", is where I put all my VisiData plugins and extras.
(This vdplus repo is private and not open-source, but Patreon subscribers can get access to it and use it if they want.)

Secondly, the core VisiData repo now requires submitters to e-sign a Copyright Assignment Agreement (CAA).
The core repo will always be open-source, but as the author I should have the legal authority to release it under a different license if I choose.

Finally, our IRC channel has moved from Freenode to; come visit us on the new #visidata!

And now for the actual software changes:

Interface Changes

  • quitguard ux improvement

    • [quitguard] confirm quit/reload only if sheet modified (references #955, #844, #483; thanks @jvns, @frosencrantz)
    • not enabled by default yet
  • [quit] add Shift+Q/quit-sheet-free to quit and free associated memory (thanks @cwarden)

  • New major keybinding!

    • x is now "cut" (copy and delete), like in vim.
    • In v2.3 the delete family was changed to delete without copying to the clipboard (previously it acted like "cut").
  • [options] save to foo.visidatarc from OptionsSheet (thanks @njthomas #958)

    • note that you can't save directly to .visidatarc (call it a security feature).

Minor Improvements

  • [splitwin] push sheet in empty pane iff splitwin
  • [movement] bind Ctrl+Left/Right to go-left/right-page (thanks @davidwales #1002)
  • [unfurl] add options.unfurl_empty to include row for empty list/dict (thanks @frosencrantz #898)
  • [regex expand] deprecate expand_col_scanrows; standardize on options.default_sample_size (thanks @jsvine)
  • [canvas] add options.disp_canvas_charset to change displayed chars (thanks @albert-ying #963)
    • @albert-ying convinced me to make the canvas character set configurable. With options.disp_canvas_charset = ' o', any points on the graph become an o, which is hopefully big enough to see. You can set this to use different characters, just make sure that the first character is a space. This option can also be configured more precisely if you want to vary the character by how many/which points are present (like the braille characters).
  • [join] extend join columns now writable (and correct)

Loader-specific Improvements

  • [sqlite] rename or drop tables from the sqlite index sheet (edit the name or delete the row and then z Ctrl+S to commit as usual)
  • [DirSheet] add y/gy to copy file(s) to given directory
  • [zstd] support loading zstd-compressed files (thanks @lxcode #971)

Bugs fixed (34): #758 #895 #896 #898 #946 #952 #955 #958 #959 #961 #962 #963 #964 #966 #969 #971 #974 #975 #979 #982 #983 #987 #991 #1002 #1003 #1010 #1011 #1011 #1012 #1016 #1018 #1029 #1032 #1033

See the CHANGELOG for a comprehensive list of bugfixes and changes.

Corporate Sponsors

Sponsor saulpw on Github