Popularity
7.5
Growing
Activity
9.2
-
1,327
6
37

Description

ov provides a more convenient function by separating text, not only the pager function to display at the terminal size.

* Specify a fixed line to be displayed as a header. * Table-formatted text can be interpreted as a column by the delimiter. * Text can be interpreted as a section by splitting the line with a delimiter. * Supports files larger than memory.

Programming language: Go
License: MIT License
Tags: Command Line     CLI     Tail     Terminal     Pager    

ov alternatives and similar packages

Based on the "Command Line" category.
Alternatively, view ov alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of ov or a related project?

Add another 'Command Line' Package

README

ov - feature rich terminal pager

PkgGoDev Actions Status Go Report Card

ov is a terminal pager.

  • Can be used instead of less or more. It can also be used instead of tail -f.
  • ov also has an effective function for tabular text.

ov1.png

<!-- vscode-markdown-toc -->

<!-- vscode-markdown-toc-config numbering=true autoSave=true /vscode-markdown-toc-config --> <!-- /vscode-markdown-toc -->

1. Feature

  • Supports fixed header line display (both wrap/nowrap).
  • Supports column mode, which recognizes columns by delimiter.
  • Supports section-by-section movement, splitting sections by delimiter.
  • Dynamic wrap/nowrap switchable.
  • Supports alternating row styling.
  • Shortcut keys are customizable.
  • The style of the effect is customizable.
  • Supports follow-mode (like tail -f).
  • Supports follow-section, which is displayed when the section is updated.
  • Supports following multiple files and switching when updated(follow-all).
  • Supports the execution of commands that toggle both stdout and stder for display.
  • Supports watch mode, which reads files on a regular basis.
  • Supports incremental search and regular expression search.
  • Better support for Unicode and East Asian Width.
  • Support for compressed files (gzip, bzip2, zstd, lz4, xz).
  • Suitable for tabular text. psql, mysql, etc...

2. Install

2.1. deb package

You can download the package from releases.

curl -L -O https://github.com/noborus/ov/releases/download/vx.x.x/ov_x.x.x-1_amd64.deb
sudo dpkg -i ov_x.x.x-1_amd64.deb

2.2. rpm package

You can download the package from releases.

sudo rpm -ivh https://github.com/noborus/ov/releases/download/vx.x.x/ov_x.x.x-1_amd64.rpm

2.3. MacPorts (macOS)

sudo port install ov

2.4. Homebrew(macOS or Linux)

brew install noborus/tap/ov

2.5. pkg (FreeBSD)

pkg install ov

2.6. Binary

You can download the binary from releases.

curl -L -O https://github.com/noborus/ov/releases/download/vx.x.x/ov_x.x.x_linux_amd64.zip
unzip ov_x.x.x_linux_amd64.zip
sudo install ov /usr/local/bin

2.7. go install

It will be installed in $GOPATH/bin by the following command.

go install github.com/noborus/ov@latest

2.8. go get(details or developer version)

First of all, download only with the following command without installing it.

go get -d github.com/noborus/ov
cd $GOPATH/src/github.com/noborus/ov

Next, to install to $GOPATH/bin, run the make install command.

make install

Or, install it in a PATH location for other users to use (For example, in /usr/local/bin).

make
sudo install ov /usr/local/bin

3. Usage

3.1. Basic usage

ov supports open file name or standard input.

ov filename
cat filename|ov

Used by other commands by setting the environment variable PAGER.

export PAGER=ov

See the ov site for more use cases.

3.2. Config

You can set style and key bindings in the setting file.

Create a .ov.yaml file in your user's home directory.

for example.

$HOME/.ov.yaml

Windows.

%USERPROFILE%/.ov.yaml

Please refer to the sample ov.yaml configuration file.

If you like less key bindings, copy ov-less.yaml and use it.

3.3. Header

The --header (-H) option fixedly displays the specified number of lines.

ov --header 1 README.md

When used with the --skip-lines option, it hides the number of lines specified by skip and then displays the header.

ov --skip-lines 1 --header 1 README.md

3.4. Column Mode

Specify the delimiter with --column-delimiter and set it to --column-mode to highlight the column.

ov --column-delimiter "," --column-mode test.csv

3.5. Wrap/NoWrap

Supports switching between wrapping and not wrapping lines.

The option is --wrap, specify --wrap=false if you do not want to wrap. After startup, toggle display with wrap (default key w).

3.6. Alternate-Rows

Alternate row styles with the --alternate-rows(-C) option The style can be set with Style customization.

ov --alternate-rows test.csv

3.7. Section

You specify --section-delimiter, you can move up and down in section units. The start of the section can be adjusted with --section-start.

[section.png](docs/section.png)

The section-delimiter is written in a regular expression (for example: "#"). (Line breaks are not included in matching lines).

For example, if you specify "diff" for a diff that contains multiple files, you can move the diff for each file.

3.8. Follow mode

Output appended data and move it to the bottom line (like tail -f).

ov --follow-mode /var/log/syslog
(while :; do echo random-$RANDOM; sleep 0.1; done;)|./ov  --follow-mode

3.9. Follow all mode

Same as follow-mode, and switches to the last updated file when there are multiple files.

ov --follow-all /var/log/nginx/access.log /var/log/nginx/error.log

3.10. Follow section mode

Follow mode is line-by-line, while follow section mode is section-by-section. Follow section mode displays the bottom section. The following example is displayed from the header (#) at the bottom.

ov --section-delimiter "^#" --follow-section README.md

Watch mode is a mode in which --follow-section and --section-delimiter "^\f" are automatically set.

3.11. Exec mode

Execute the command to display stdout/stderr separately. Arguments after (--) are interpreted as command arguments.

Shows the stderr screen as soon as an error occurs, when used with --follow-all.

ov --follow-all --exec -- make

3.12. Search

Search by forward search / key(default) or the backward search ? key(defualt). Search can be toggled between incremental search, regular expression search, and case sensitivity. Displayed when the following are enabled in the search input prompt:

Function display (Default)key command option
Incremental search (I) alt+i --incremental
Regular expression search (R) alt+r --regexp-search
Case sensitive (Aa) alt+c -i, --case-sensitive

3.13. Mark

Mark the display position with the m key(default). The mark is decorated with StyleMarkLine and MarkStyleWidth.

Marks can be erased individually with the M key(default). It is also possible to delete all marks with the ctrl + delete key(default).

Use the >next and <previous (default) key to move to the marked position.

3.14. Watch

ov has a watch mode that reads the file every N seconds and adds it to the end. When you reach EOF, add '\f' instead. Go further to the last section. The default is'section-delimiter', so the last loaded content is displayed.

for example.

ov --watch 1 /proc/meminfo

3.15. Mouse support

The ov makes the mouse support its control. This can be disabled with the option --disable-mouse.

If mouse support is enabled, tabs and line breaks will be interpreted correctly when copying.

Copying to the clipboard uses atotto/clipboard. For this reason, the 'xclip' or 'xsel' command is required in Linux/Unix environments.

Selecting the range with the mouse and then left-clicking will copy it to the clipboard.

Pasting in ov is done with the middle button. In other applications, it is pasted from the clipboard (often by pressing the right-click).

4. Command option

$ ov --help
ov is a feature rich pager(such as more/less).
It supports various compressed files(gzip, bzip2, zstd, lz4, and xz).

Usage:
  ov [flags]

Flags:
  -C, --alternate-rows             alternately change the line color
  -i, --case-sensitive             case-sensitive in search
  -d, --column-delimiter string    column delimiter (default ",")
  -c, --column-mode                column mode
      --completion string          generate completion script [bash|zsh|fish|powershell]
      --config string              config file (default is $HOME/.ov.yaml)
      --debug                      debug mode
      --disable-mouse              disable mouse support
  -e, --exec                       exec command
  -X, --exit-write                 output the current screen when exiting
  -a, --exit-write-after int       NUM after the current lines when exiting
  -b, --exit-write-before int      NUM before the current lines when exiting
  -A, --follow-all                 follow all
  -f, --follow-mode                follow mode
      --follow-section             follow section
  -H, --header int                 number of header rows to fix
  -h, --help                       help for ov
      --help-key                   display key bind information
      --incsearch                  incremental search (default true)
  -n, --line-number                line number mode
  -F, --quit-if-one-screen         quit if the output fits on one screen
      --regexp-search              regular expression search
      --section-delimiter string   section delimiter
      --section-start int          section start position
      --skip-lines int             skip the number of lines
  -x, --tab-width int              tab stop width (default 8)
  -v, --version                    display version information
  -T, --watch int                  watch mode interval
  -w, --wrap                       wrap mode (default true)

It can also be changed after startup.

5. Key bindings

 [Escape], [q]                * quit
 [ctrl+c]                     * cancel
 [Q]                          * output screen and quit
 [ctrl+q]                     * set output screen and quit
 [ctrl+z]                     * suspend
 [h], [ctrl+F1], [ctrl+alt+c] * display help screen
 [ctrl+F2], [ctrl+alt+e]      * display log screen
 [ctrl+l]                     * screen sync
 [ctrl+f]                     * follow mode toggle
 [ctrl+a]                     * follow all mode toggle
 [ctrl+alt+r]                 * enable/disable mouse

    Moving

 [Enter], [Down], [ctrl+N]    * forward by one line
 [Up], [ctrl+p]               * backward by one line
 [Home]                       * go to top of document
 [End]                        * go to end of document
 [PageDown], [ctrl+v]         * forward by page
 [PageUp], [ctrl+b]           * backward by page
 [ctrl+d]                     * forward a half page
 [ctrl+u]                     * backward a half page
 [left]                       * scroll to left
 [right]                      * scroll to right
 [ctrl+left]                  * scroll left half screen
 [ctrl+right]                 * scroll right half screen
 [g]                          * go to line(input number)

    Move document

 []]                          * next document
 [[]                          * previous document
 [ctrl+k]                     * close current document

    Mark position

 [m]                          * mark current position
 [M]                          * remove mark current position
 [ctrl+delete]                * remove all mark
 [>]                          * move to next marked position
 [<]                          * move to previous marked position

    Search

 [/]                          * forward search mode
 [?]                          * backward search mode
 [n]                          * repeat forward search
 [N]                          * repeat backward search

    Change display

 [w], [W]                     * wrap/nowrap toggle
 [c]                          * column mode toggle
 [C]                          * alternate rows of style toggle
 [G]                          * line number toggle

    Change Display with Input

 [p], [P]                     * view mode selection
 [d]                          * column delimiter string
 [H]                          * number of header lines
 [ctrl+s]                     * number of skip lines
 [t]                          * TAB width

    Section

 [alt+d]                      * section delimiter regular expression
 [ctrl+F3], [alt+s]           * section start position
 [space]                      * next section
 [^]                          * previous section
 [9]                          * last section
 [F2]                         * follow section mode toggle

    Close and reload

 [ctrl+F9], [ctrl+alt+s]      * close file
 [F5], [ctrl+alt+l]           * reload file
 [F4], [ctrl+alt+w]           * watch mode
 [ctrl+w]                     * set watch interval

    Key binding when typing

 [alt+c]                      * case-sensitive toggle
 [alt+r]                      * regular expression search toggle
 [alt+i]                      * incremental search toggle

6. Customize

6.1. Style customization

You can customize the following items.

  • StyleAlternate
  • StyleHeader
  • StyleOverStrike
  • StyleOverLine
  • StyleLineNumber
  • StyleSearchHighlight
  • StyleColumnHighlight
  • StyleMarkLine
  • StyleSectionLine

Specifies the color name for the foreground and background colors. Specify bool values for Reverse, Bold, Blink, Dim, Italic, and Underline.

[Example]

StyleAlternate:
  Background: "gray"
  Bold: true
  Underline: true
item name value example
Foreground "color name" or "rgb" "red"
Background "color name" or "rgb" "#2a2a2a"
Reverse true/false true
Bold true/false true
Blink true/false true
Dim true/false false
Italic true/false false
Underline true/false false

6.2. Key binding customization

You can customize key bindings.

[Example]

    down:
        - "Enter"
        - "Down"
        - "ctrl+N"
    up:
        - "Up"
        - "ctrl+p"

See ov.yaml for more information.