MCPcopy Index your code
hub / github.com/noborus/ov

github.com/noborus/ov @v0.53.0 sqlite

repository ↗ · DeepWiki ↗ · release v0.53.0 ↗
1,427 symbols 5,372 edges 114 files 997 documented · 70%
README

ov - feature rich terminal pager

PkgGoDev Actions Status Go Report Card

ov is a terminal pager.

ov-image.png

1. Feature

  • Quickly opens files larger than memory.
  • Supports fixed header lines and columns.
  • Optimized for tabular text with column mode and customizable column colors.
  • Fully customizable shortcut keys and styles.
  • Follow mode for real-time updates (like tail -f / tail -F).
  • Exec mode to display command output dynamically.
  • Watch mode to monitor file changes periodically.
  • Advanced search: incremental, regex, and filter functions.
  • Multi-color highlighting for multiple words.
  • Supports Unicode and East Asian Width characters.
  • Handles compressed files (gzip, bzip2, zstd, lz4, xz).

1.1. Not supported

  • Does not support syntax highlighting for file types (source code, markdown, 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 ov

2.5. winget(windows)

winget install -e --id noborus.ov

2.6. pkg (FreeBSD)

pkg install ov

2.7. Arch Linux

You can install ov using an AUR helper.

Choose an AUR package:

2.8. nix (nixOS, Linux, or macOS)

ov is available as a nix package. You can install it with

nix profile install nixpkgs#ov

if you use flakes, or using nix-env otherwise:

nix-env -iA nixpkgs.ov

2.9. 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.10. go install

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

go install github.com/noborus/ov@latest

Or to install the latest commit from master:

go install github.com/noborus/ov@master

2.11. Build from source

First of all, clone this repo with either git clone or gh repo clone, then cd to the directory, for example:

git clone https://github.com/noborus/ov.git
cd 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

2.12. Completion

You can generate completion scripts for bash, zsh, fish, and powershell.

2.12.1. bash

ov --completion bash > /etc/bash_completion.d/ov

2.12.2. zsh

ov --completion zsh > /usr/share/zsh/site-functions/_ov

For zinit users.

zinit load 'https://github.com/noborus/ov/blob/master/ov.plugin.zsh'

2.12.3. fish

ov --completion fish > ~/.config/fish/completions/ov.fish

2.12.4. powershell

ov --completion powershell | Out-String | Invoke-Expression

3. Basic usage

ov supports open file name or standard input.

ov filename
cat filename|ov

You can also explicitly specify standard input as -.

cat filename | ov -

Used by other commands by setting the environment variable PAGER.

export PAGER=ov

4. Usage

See the ov site for more use cases and examples.

[!NOTE] (default key key) indicates the key that can be specified even after starting the same function as the command line option.

4.1. Config

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.

v0.53.0 and later

You can generate a default configuration with:

ov --generate-config > ~/.config/ov/config.yaml

On Windows (PowerShell):

ov --generate-config > $env:USERPROFILE/.config/ov/config.yaml

[!NOTE] If you like less key bindings, generate it with --generate-config=less.

ov --generate-config=less > ~/.config/ov/config.yaml

4.2. Header

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

ov --header 1 README.md

Related styling: Header and HeaderBorder.

4.2.1. Skip

When used with the --skip-lines (default key Ctrl+s) option, it hides the number of lines specified by skip and then displays the header.

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

4.3. Vertical Header

The --vertical-header (-y) (default key y) option fixedly displays the specified number of characters.

ov --vertical-header=4 README.md

If you want to specify by column instead of character, see Header Column.

Related styling: VerticalHeader and VerticalHeaderBorder.

4.4. Column mode

Specify the delimiter with --column-delimiter(default key is d) and set it to --column-mode(default key is c) to highlight the column.

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

Regular expressions can be used for the --column-delimiter. Enclose in '/' when using regular expressions.

[!TIP] Use regex delimiters like /\s+/ for variable whitespace or /[,;]/ for multiple delimiter characters.

ps aux | ov -H1 --column-delimiter "/\s+/" --column-rainbow --column-mode

Related styling: ColumnHighlight,ColumnRainbow.

4.5. Header Column

The --header-column (-Y) (default key is Y) option fixedly displays the specified number of columns when column-mode is enabled.

ov --column-mode --column-delimiter="," --header-column=2 test.csv

When in column-mode, pressing F will switch to fixed display for the selected columns up to that point.

Related styling: VerticalHeader and VerticalHeaderBorder.

4.6. Column rainbow mode

You can also color each column individually in column mode. Specify --column-rainbow(default key is Ctrl+r) in addition to the --column-mode option.

Color customization is possible. Please specify 7 or more colors in config.yaml.

Style:
  ColumnRainbow:
    - Foreground: "white"
    - Foreground: "aqua"
    - Foreground: "lightsalmon"
    - Foreground: "lime"
    - Foreground: "blue"
    - Foreground: "yellowgreen"
    - Foreground: "red"

Style specifications other than Foreground can also be specified.

Style:
  ColumnRainbow:
    - Foreground: "white"
      Background: "red"
    - Foreground: "aqua"
      Underline: true
    - Foreground: "#ff7f00"
      Background: "blue"
      Bold: true
    - Foreground: "lime"
      Italic: true
    - Foreground: "blue"
      Dim: true
    - Foreground: "yellowgreen"
    - Foreground: "red"

Related styling: ColumnRainbow.

4.7. Column width

The --column-width option is designed for command output with irregular spaces, such as ps aux, df, etc. (default key Alt+o). It automatically detects and separates columns without needing a specific delimiter.

ps aux|ov -H1 --column-width --column-rainbow

ps-ov.png

This column-width featu

Extension points exported contracts — how you extend this code

Eventer (Interface)
Eventer is a generic interface for inputs. [20 implementers]
oviewer/input.go
Converter (Interface)
Converter is an interface for converting escape sequences, etc. [4 implementers]
oviewer/content.go
Searcher (Interface)
Searcher interface provides a match method that determines if the search word matches the argument string. [3 implementers]
oviewer/search.go

Core symbols most depended-on inside this repo

Run
called by 258
oviewer/oviewer.go
StrToContents
called by 100
oviewer/content.go
prepareScreen
called by 67
oviewer/prepare_draw.go
applyIfSet
called by 59
oviewer/runtime_settings.go
String
called by 58
oviewer/search.go
setMessagef
called by 51
oviewer/oviewer.go
regexpCompile
called by 45
oviewer/search.go
inputPrompt
called by 45
oviewer/status_line.go

Shape

Method 733
Function 535
Struct 140
TypeAlias 16
Interface 3

Languages

Go100%

Modules by API surface

oviewer/action.go74 symbols
oviewer/search.go64 symbols
oviewer/oviewer.go51 symbols
oviewer/action_test.go46 symbols
oviewer/mouse.go44 symbols
oviewer/event.go43 symbols
oviewer/document.go42 symbols
oviewer/input.go40 symbols
oviewer/prepare_draw.go37 symbols
oviewer/general.go37 symbols
oviewer/draw.go33 symbols
oviewer/move.go27 symbols

Dependencies from manifests, versioned

codeberg.org/tslocum/cbindv0.1.9 · 1×
github.com/atotto/clipboardv0.1.4 · 1×
github.com/clipperhouse/displaywidthv0.11.0 · 1×
github.com/clipperhouse/uax29/v2v2.7.0 · 1×
github.com/creack/ptyv1.1.24 · 1×
github.com/gdamore/encodingv1.0.1 · 1×
github.com/go-viper/mapstructure/v2v2.5.0 · 1×
github.com/google/shlexv0.0.0-2019120210045 · 1×
github.com/inconshreveable/mousetrapv1.1.0 · 1×

For agents

$ claude mcp add ov \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact