ov is a terminal pager.
ovcan be used instead oflessormoreortail -f.ovalso has an effective function for tabular text.
-
- 2.1. deb package
- 2.2. rpm package
- 2.3. MacPorts (macOS)
- 2.4. Homebrew(macOS or Linux)
- 2.5. pkg (FreeBSD)
- 2.6. Arch Linux
- 2.7. nix (nixOS, Linux, or macOS)
- 2.8. Binary
- 2.9. go install
- 2.10. go get(details or developer version)
-
- 3.1. Basic usage
- 3.2. Config
- 3.3. Header
- 3.4. Column mode
- 3.5. Column rainbow mode
- 3.6. Wrap/NoWrap
- 3.7. Alternate-Rows
- 3.8. Section
- 3.9. Follow mode
- 3.10. Follow all mode
- 3.11. Follow section mode
- 3.12. Exec mode
- 3.13. Search
- 3.14. Mark
- 3.15. Watch
- 3.16. Mouse support
- 3.17. Multi color highlight
- 3.18. Plain
- 3.19. Jump target
- 3.20. View mode
-
- 6.1. Style customization
- 6.2. Key binding customization
- 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...
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.debYou 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.rpmsudo port install ovbrew install noborus/tap/ovpkg install ovYou can install ov using an AUR helper.
AUR package: https://aur.archlinux.org/packages/ov-bin
ov is available as a nix package. You can install it with
nix profile install nixpkgs#ovif you use flakes, or using nix-env otherwise:
nix-env -iA nixpkgs.ovYou 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/binIt will be installed in $GOPATH/bin by the following command.
go install github.com/noborus/ov@latestFirst of all, download only with the following command without installing it.
go get -d github.com/noborus/ov
cd $GOPATH/src/github.com/noborus/ovNext, to install to $GOPATH/bin, run the make install command.
make installOr, install it in a PATH location for other users to use (For example, in /usr/local/bin).
make
sudo install ov /usr/local/binov supports open file name or standard input.
ov filenamecat filename|ovUsed by other commands by setting the environment variable PAGER.
export PAGER=ovSee the ov site for more use cases.
You can set style and key bindings in the configuration file.
ov will look for a configuration file in the following paths in descending order:
$XDG_CONFIG_HOME/ov/config.yaml
$HOME/.config/ov/config.yaml
$HOME/.ov.yaml
On Windows:
%USERPROFILE%/.config/ov/config.yaml
%USERPROFILE%/.ov.yaml
Create a config.yaml file in one of the above directories. If the file is in the user home directory, it should be named .ov.yaml.
Please refer to the sample ov.yaml configuration file.
If you like less key bindings, copy ov-less.yaml and use it.
The --header (-H) option fixedly displays the specified number of lines.
ov --header 1 README.mdWhen 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.mdSpecify the delimiter with --column-delimiter and set it to --column-mode to highlight the column.
After startup, switch the display in column mode (default key is c).
You can also enter a column-delimiter after startup (default key is d).
ov --column-delimiter "," --column-mode test.csvYou can also color each column individually in column mode.
Specify --column-rainbow in addition to the --column-mode option.
After startup, switch the display with column rainbow (default key is ctrl+r).
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).
Alternate row styles with the --alternate-rows(-C) option
The style can be set with Style customization.
ov --alternate-rows test.csvYou specify --section-delimiter, you can move up and down in section units.
The start of the section can be adjusted with --section-start.
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.
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-modeSame 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.logFollow 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.mdWatch mode is a mode in which --follow-section and
--section-delimiter "^\f" are automatically set.
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 -- makeSearch 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 |
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.
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/meminfoThe 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).
This feature styles multiple words individually.
.key(defualt) enters multi-word input mode.
Enter multiple words (regular expressions) separated by spaces.
For example, error info warn debug will color errors red, info cyan, warn yellow, and debug magenta.
It can also be specified with the command line option --multi-color(or -M).
For command line options, pass them separated by ,(comma).
For example:
ov --multi-color "ERROR,WARN,INFO,DEBUG,not,^.{24}" access.logSupports undecorating ANSI escape sequences.
The option is --plain (or -p).
After startup, toggle the original decoration (default key ctrl+e).
You can specify the lines to be displayed in the search results.
This function is similar to --jump-target of less.
Positive numbers are displayed downwards by the number of lines from the top(1).
Negative numbers are displayed up by the number of lines from the bottom(-1).
. (dot) can be used to specify a percentage. .5 is the middle of the screen(.5).
You can also specify a percentage, such as (50%).
This option can be specified with --jump-target(or -j).
It can be entered after startup (default key j).
You may want to use some modes in combination. In that case, you can set it in advance and specify the combined mode at once.
For example, if you write the following settings in ov.yaml,
the csv mode will be set with --view-mode csv.
ov --view-mode csv test.csvAfter startup, you can enter view-mode with (default key p).
Mode:
p:
Header: 2
AlternateRows: true
ColumnMode: true
LineNumMode: false
WrapMode: true
ColumnDelimiter: "|"
ColumnRainbow: true
m:
Header: 3
AlternateRows: true
ColumnMode: true
LineNumMode: false
WrapMode: true
ColumnDelimiter: "|"
csv:
Header: 1
AlternateRows: true
ColumnMode: true
LineNumMode: false
WrapMode: true
ColumnDelimiter: ","
ColumnRainbow: true$ 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
--column-rainbow column rainbow
--completion string generate completion script [bash|zsh|fish|powershell]
--config string config file (default is $XDG_CONFIG_HOME/ov/config.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)
-j, --jump-target string jump-target
-n, --line-number line number mode
-M, --multi-color strings multi-color
-p, --plain disable original decoration
-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
--view-mode string view mode
-T, --watch int watch mode interval
-w, --wrap wrap mode (default true)It can also be changed after startup.
[Escape], [q] * quit
[ctrl+c] * cancel
[Q] * output screen and quit
[ctrl+q] * set output screen and quit
[ctrl+z] * suspend
[h], [ctrl+alt+c], [ctrl+f1] * 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+f3], [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
[ctrl+r] * column rainbow toggle
[C] * alternate rows of style toggle
[G] * line number toggle
[ctrl+e] * original decoration 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
[.] * multi color highlight
[j] * jump target
Section
[alt+d] * section delimiter regular expression
[ctrl+F3], [alt+s] * section start position
[space], [ctrl+down] * next section
[^], [ctrl+up] * previous section
[9] * last section
[F2] * follow section mode toggle
Close and reload
[ctrl+F9], [ctrl+alt+s] * close file
[ctrl+alt+l], [F5] * reload file
[ctrl+alt+w], [F4] * 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 toggleYou can customize the following items.
- StyleAlternate
- StyleHeader
- StyleOverStrike
- StyleOverLine
- StyleLineNumber
- StyleSearchHighlight
- StyleColumnHighlight
- StyleMarkLine
- StyleSectionLine
- StyleMultiColorHighlight
- StyleJumpTargetLine
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 |
You can customize key bindings.
[Example]
down:
- "Enter"
- "Down"
- "ctrl+N"
up:
- "Up"
- "ctrl+p"See ov.yaml for more information.