Show HN: Ov – feature rich terminal pager
github.comI made a terminal pager that can be used instead of more, less, tail -f.
It has a mode that distinguishes between headers and columns. Suppose it is a technicality, but if it can't handle large (larger than available memory, that is) files [0], it's not a pager. It is a technicality and it is still a pager. You are right, of course, and I stand corrected, performance and/or ability to fully replace less have no bearing on whether a program is a pager. Nah I still wouldn't call it a pager. They used the correct term themselves as "text viewer". I see memory efficiency as an issue, but not as a priority issue as it was 30 years ago. In data science/industry it frequently happens for people to open files bigger then the available memory in less. "Big data" is a somewhat independent concept of the fact that RAM was smaller 30 years ago. I'm impressed by the documentation. Commonly used options with examples fairly high up, then a complete overview of all the options below that. Definitely going to give this a try. Thank you. ov looks really nice and probable deserves a try. I like the section thing, it's going to be useful for diffs to go file by file. One feature I discovered recently in less that I'm always using now is filtering: type '&' and then the thing you're looking for, and less will only show matching lines. using filtering in Less. That is a great tip.
This opens up a whole new way of reading logs for me. thanks Filtering in less is one of the features that ov doesn't have yet.
I will refer to it. thank you. Looks like posting this to Hacker News got it packaged for Nixpkgs¹! I had to add it via package override when the article came out, but it's since been added to Nixpkgs. :) If you're a NixOS newbie and you don't want to wait for the PR to land, you can add it with a package override by pasting in the function body from the PR and prepending a `with` expression for the original Nixpkgs used in the override, like: -- hey OP, nice tool. can we use $HOME/config/ for the config file? keeps the home clean. There is a --config flag to specify the location[1] but I agree it should be in $XDG_CONFIG_HOME by default. $XDG_CONFIG_HOME is now default. thank you. Anyone tried using this for a scrollback pager for kitty terminal? I have a convoluted nvim incantation right now I’d love to replace. Yes, it works by adding to kitty.conf: Yeah I experimented with it, seemed to work out of the box. I used `ov -f` so it starts at the end of the scrollback. Searching behaves strangely (different from vim). Seems to run fast but I haven't tried it on giant scrollbacks yet. I didn’t see any indication in the readme if this supports syntax highlighting. Any plans to add it? Any markdown support? I don't see any in the feature list. :( Does not support markdown. ov is a pager, so there is no rendering of specific files.
But it can be used as a bat(https://github.com/sharkdp/bat) pager.
It can also be created using the ov(oviewer) package. Here's a sample: https://github.com/noborus/mdviewer I tried testing this using /dev/random and I got a lot of flickering. ``` < /dev/random ov ``` I'm surprised there aren't more pagers besides `less` and `more`. Alternatives I've found online: - https://linux.die.net/man/1/most (multiple files/windows at once) - https://github.com/sharkdp/bat (uses `less` under the hood, syntax highlighting and git diffs) - https://linux.die.net/man/1/lesskey (add parameters to `less`) - https://github.com/ivanov/kanten (looks abandoned) - "Just use vim" (and vim's paging is really good, so this is viable, in fact probably the most viable so far) `less` is a great program, despite being old there aren't really many flaws. It's one of those tools that don't really need updates or improvements. But I do think there are a few features which would be nice to have (automatic ANSI coloring, tailing, syntax highlighting, support for files like sqlite and tar - which of which are in ov). The one thing which `less` may have over `ov` (besides already being on most distros) is speed. `less` takes in really large files, or forever terminal output, and is still really fast. And I find that when I use `less` I use it with large files or terminal output often. Though I don't actually know if `ov` is any slower, it's something the dev should watch out for (I don't see "speed" mentioned in the README). First of all please keep in mind that "less" is wonderfully updated https://github.com/gwsw/less
ov is built for speed, but "less" is often better.
"bat" is a nice application, but it's not a pager. I believe "bat" is not suitable for opening large files.
https://twitter.com/noborus/status/1610111558574804993?s=20&... ANSI coloring and tailing is supported by less. Press F to start tailing. Many programs detect if they are redirected to a pipe and then stop to emit ANSI color codes. There's also moar, written in go: linux.die.net man pages are horribly outdated. Better links: I find myself using cat or less even thought I have bat around because copying from cat or less works best and you don't get line breaks inserted. I'm a fan of lnav, more for log files but incredibly useful: pspg ( https://github.com/okbob/pspg ) is wonderful for tabular data. If the log-file viewing capabilities look interesting to you, check out lnav, which is built for that and excels at it: Nice! I've been in rapid-response situations where I had to pull logs from various sources (including embedded devices) that weren't unified in a central logging service. I could get the logs onto my workstation, but then manually lining up who-saw-what-when involved a headache, even with Emacs. lnav seems to have a few features to support this. One very useful feature for this I didn't see listed for lnav was to support adjusting for timestamps in different timezones, like maybe you have a desktop's log in local time that you're trying to reconcile with servers. (A related but less-important bonus would be to be able to specify smaller arbitrary clock drift/offsets for each log.) > One very useful feature for this I didn't see listed for lnav was to support adjusting for timestamps in different timezones, like maybe you have a desktop's log in local time that you're trying to reconcile with servers. (A related but less-important bonus would be to be able to specify smaller arbitrary clock drift/offsets for each log.) You can adjust the timestamps for a file using the ":adjust-log-time" command (https://docs.lnav.org/en/latest/commands.html#adjust-log-tim...). For example, if you wanted to shift the timestamps back an hour, you can do: If you want to do the shift programmatically, you can UPDATE the "time_offset" column of the "lnav_file" table directly (see https://docs.lnav.org/en/latest/sqltab.html#lnav-file) Thanks!
Hopefully in a week or two, Nixpkgs will provide another convenient way for Linux and macOS users to quickly try out this new pager! I know I'll be following along to see how it develops. :) nixpkgs.config.packageOverrides = superPkgs: {
ov = with superPkgs; buildGoModule rec {
pname = "ov";
version = "0.13.0";
<...>
meta = with lib; {
description = "Feature-rich terminal-based text viewer";
homepage = "https://noborus.github.io/ov";
license = licenses.mit;
platforms = platforms.linux ++ platforms.darwin;
};
};
};
scrollback_pager ov
The shift is applied to the messages in the file that the top line in the view belongs to. :adjust-log-time -1h