ov is a terminal pager.
ovcan be used instead ofless,more,tail -f/-Fandwatch.ovalso has an effective function for tabular text.
-
- 1.1. Not supported
-
- 2.1. deb package
- 2.2. rpm package
- 2.3. MacPorts (macOS)
- 2.4. Homebrew(macOS or Linux)
- 2.5. winget(windows)
- 2.6. pkg (FreeBSD)
- 2.7. Arch Linux
- 2.8. nix (nixOS, Linux, or macOS)
- 2.9. Binary
- 2.10. go install
- 2.11. go get(details or developer version)
- 2.12. Completion
- 2.12.1. bash
- 2.12.2. zsh
- 2.12.3. fish
- 2.12.4. powershell
-
- 3.1. Basic usage
- 3.2. Config
- 3.3. Header
- 3.3.1. Skip
- 3.4. Column mode
- 3.5. Column rainbow mode
- 3.6. Column-width
- 3.7. Wrap/NoWrap
- 3.8. Alternate-Rows
- 3.9. Section
- 3.9.1. Section header
- 3.10. Multiple files
- 3.11. Follow mode
- 3.12. Follow name
- 3.13. Follow all mode
- 3.14. Follow section mode
- 3.15. Exec mode
- 3.16. Search
- 3.17. Pattern
- 3.18. Filter
- 3.19. caption
- 3.20. Mark
- 3.21. Watch
- 3.22. Mouse support
- 3.23. Multi color highlight
- 3.24. Plain
- 3.25. Jump target
- 3.26. View mode
- 3.27. Output on exit
- 3.28. Save
- Supports files larger than memory (v0.30.0 or later).
- Regular files can be opened quickly even if they are large (v0.30.0 or later).
- Supports fixed header line display (both wrap/nowrap).
- Supports column mode, which recognizes columns by delimiter.
- Also, in column mode, there is a column-rainbow mode that colors each column.
- Support columns with fixed widths instead of delimiters (v0.30.0 or later).
- 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). - Support follow mode by file name (like
tail -F) (v0.30.0 or later). - 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 stderr for display.
- Supports watch mode, which reads files on a regular basis.
- Support watch in exec mode (equivalent to
watchcommand) (v0.30.0 or later). - Supports incremental search and regular expression search.
- Supports multi-color to highlight multiple words individually.
- Better support for Unicode and East Asian Width.
- Supports compressed files (gzip, bzip2, zstd, lz4, xz).
- Suitable for tabular text. psql, mysql, csv, etc...
- Support filter function (
&patternequivalent ofless) (v0.34.0 or later).
- Does not support syntax highlighting for file types (source code, markdown, 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/ovwinget install -e --id noborus.ovpkg install ovYou can install ov using an AUR helper.
Choose an AUR package:
- https://aur.archlinux.org/packages/ov (build and install from latest stable source)
- https://aur.archlinux.org/packages/ov-bin (install pre-compiled binary)
- https://aur.archlinux.org/packages/ov-git (build and install from latest git commit)
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/binYou can generate completion scripts for bash, zsh, fish, and powershell.
Example:
ov --completion bash > /etc/bash_completion.d/ovov --completion zsh > /usr/share/zsh/site-functions/_ovFor zinit users.
zinit load 'https://github.com/noborus/ov/blob/master/ov.plugin.zsh'ov --completion fish > ~/.config/fish/completions/ov.fishov --completion powershell completion powershell | Out-String | Invoke-Expression(default key key) indicates the key that can be specified even after starting the same function as the command line option.
ov 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.
Note
If you like
lesskey bindings, copy ov-less.yaml and use it.
The --header (-H) (default key H) option fixedly displays the specified number of lines.
ov --header 1 README.mdWhen 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.mdSpecify 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.csvRegular expressions can be used for the --column-delimiter.
Enclose in '/' when using regular expressions.
ps aux | ov -H1 --column-delimiter "/\s+/" --column-rainbow --column-modeYou 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.
StyleColumnRainbow:
- Foreground: "white"
- Foreground: "aqua"
- Foreground: "lightsalmon"
- Foreground: "lime"
- Foreground: "blue"
- Foreground: "yellowgreen"
- Foreground: "red"Style specifications other than Foreground can also be specified.
StyleColumnRainbow:
- 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"For output like ps, using --column-width is a better way to separate columns than using spaces as delimiters.
You can specify the column width with --column-width (default key alt+o).
ps aux|ov -H1 --column-width --column-rainbowThis column-width feature is implemented using guesswidth.
Supports switching between wrapping and not wrapping lines.
The option is --wrap, specify --wrap=false (default key w, W) if you do not want to wrap.
Alternate row styles with the --alternate-rows(-C) (default key C) option
The style can be set with Style customization.
ov --alternate-rows test.csvYou specify --section-delimiter(default key alt+d), you can move up and down in section units.
The start of the section can be adjusted with --section-start(default key ctrl+F3, alt+s).
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.
If you specify --section-header, the section delimiter line is displayed as a header.
ov --section-delimiter "^#" --section-header README.mdIt is also useful as a pager for git.
The number of lines in section-header can be changed.
You can specify the number of lines using the --section-header-num option or key input(default key F7).
[pager]
diff = "ov -F --section-delimiter '^diff' --section-header"
log = "ov -F --section-delimiter '^commit' --section-header --section-header-num 3"ov can also open multiple files.
ov file1 file2Multiple files are each opened as a document and can be navigated using the Next Document ] key (default), Previous Document [ key (default).
--follow(-f)(default key ctrl+f) prints appended data and moves to the bottom line (like tail -f).
ov --follow-mode /var/log/syslog(while :; do echo random-$RANDOM; sleep 0.1; done;)|./ov --follow-modeYou can specify the file name to follow with --follow-name(like tail -F).
Monitor file names instead of file descriptors.
ov --follow-name /var/log/nginx/access.log--follow-all(-A)(default key ctrl+a) is the same as follow mode, it switches to the last updated file if there are multiple files.
ov --follow-all /var/log/nginx/access.log /var/log/nginx/error.logUse the --follow-section(default key F2) option to follow by section.
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.mdNote
Watch mode is a mode in which
--follow-sectionand--section-delimiter "^\f"are automatically set.
Use the --exec (-e) option to run the command and 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 -- makeIn exec mode (other than Windows) the output is opened by opening a pty.
Therefore, the command is likely to be printed in color.
ov --exec -- eza -lSearch by forward search / key(default) or the backward search ? key(default).
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 | config file |
|---|---|---|---|---|
| Incremental search | (I) | alt+i | --incremental | Incsearch |
| Regular expression search | (R) | alt+r | --regexp-search | RegexpSearch |
| Case-sensitive | (Aa) | alt+c | -i, --case-sensitive | CaseSensitive |
| Smart case-sensitive | (S) | alt+s | --smart-case-sensitive | SmartCaseSensitive |
Specify true/false in config file.
CaseSensitive: false
RegexpSearch: false
Incsearch: true
SmartCaseSensitive: trueThe pattern option allows you to specify a search at startup.
ov --pattern install README.mdFilter input is possible using the & key(default).
The filter input creates a new document only for the lines that match the filter.
Move next document ] and previous document [ key(default) allow you to move between the filter document and the original document.
The K key (default) closes all documents created by the filter.
You can also specify a filter using the command line option --filter.
ov --filter "install" README.mdThe filter is a regular expression.
ov --filter "^#" README.mdAlso, specify the non-matching line instead of the non-matching line.
If you press ! on & while inputting a filter, non-matching lines will be targeted.
The command line option for this can be specified with --non-match-filter.
ov --non-match-filter info /var/log/syslogYou can specify a caption instead of the file name in status line to display it.
ls -alF|ov --caption "ls -alF"It can also be specified as an environment variable.
export OV_CAPTION="ls -alF"
ls -alF|ovMark 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.
Use the --watch(-T) option.
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(default key ctrl+F3, ctrl+alt+r).
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).
Also, if mouse support is enabled, horizontal scrolling is possible with shift+wheel.
This feature styles multiple words individually.
.key(default) 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(-M)(default key .).
For command line options, pass them separated by ,(comma).
For example:
ov --multi-color "ERROR,WARN,INFO,DEBUG,not,^.{24}" access.logColor customization is possible. Please specify 7 or more colors in config.yaml.
StyleMultiColorHighlight:
- Foreground: "red"
Reverse: true
- Foreground: "aqua"
Underline: true
- Foreground: "yellow"
Background: "blue"
- Foreground: "fuchsia"
- Foreground: "lime"
- Foreground: "blue"
- Foreground: "#c0c0c0"Supports disable decoration ANSI escape sequences.
The option is --plain (or -p) (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) (default key j).
If section is specified as the --jump-target, the display will start from the beginning of the section as much as possible
and the jump-target will be changed.
ov --section-delimiter "^#" --jump-target section README.mdYou can also use a combination of modes using the --view-mode(default key p) option.
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.csvMode:
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--exit-write -X(default key Q) option prints the current screen on exit.
This looks like the display remains on the console after the ov is over.
By default, it outputs the amount of the displayed screen and exits.
ov -X README.mdYou can change how much is written using --exit-write-before and --exit-write-after(default key ctrl+q).
--exit-write-before
--exit-write-before specifies the number of lines before the current position(top of screen).
--exit-write-before 3 will output from 3 lines before.
--exit-write-after specifies the number of lines after the current position (top of screen).
--exit-write-before 3 --exit-write-after 3 outputs 6 lines.
If the file input is via a pipe, you can save it by pressing the save buffer (default S) key.
This will put you in input mode, so enter the file name. Only the buffer currently in memory is saved.
(Save)file:savefile.txt
If the file name already exists, select Overwrite, Append, or Cancel.
overwrite? (O)overwrite, (A)append, (N)cancel
Since v0.30.0 it no longer loads everything into memory. The first chunk from the beginning to the 10,000th line is loaded into memory and never freed. Therefore, files with less than 10,000 lines do not change behavior.
The --memory-limit option can be used to limit the chunks loaded into memory.
Memory limits vary by file type.
Also, go may use a lot of memory until the memory is freed by GC.
Also consider setting the environment variable GOMEMLIMIT.
export GOMEMLIMIT=100MiBNormally large (10,000+ lines) files are loaded in chunks when needed. It also frees chunks that are no longer needed.
If --memory-limit is not specified, it will be limited to 100.
ov --memory-limit-file 3 /var/log/syslogSpecify MemoryLimit in the configuration file.
MemoryLimitFile: 3You can also use the --memory-limit-file option and the MemoryLimitFile setting for those who think regular files are good memory saving.
Non-seekable files and pipes cannot be read again, so they must exist in memory.
If you specify the upper limit of chunks with --memory-limit or MemoryLimit,
it will read up to the upper limit first, but after that,
when the displayed position advances, the old chunks will be released.
Unlimited if --memory-limit is not specified.
cat /var/log/syslog | ov --memory-limit 10It is recommended to put a limit in the config file as you may receive output larger than memory.
MemoryLimit: 1000| short | long | purpose |
|---|---|---|
| -C, | --alternate-rows | alternately change the line color |
| --caption string | caption | |
| -i, | --case-sensitive | case-sensitive in search |
| -d, | --column-delimiter character | column delimiter character (default ",") |
| -c, | --column-mode | column mode |
| --column-rainbow | column mode to rainbow | |
| --column-width | column mode for width | |
| --completion string | generate completion script [bash|zsh|fish|powershell] | |
| --config file | config file (default is $XDG_CONFIG_HOME/ov/config.yaml) | |
| --debug | debug mode | |
| --disable-column-cycle | disable column cycling | |
| --disable-mouse | disable mouse support | |
| -e, | --exec | command execution result instead of file |
| -X, | --exit-write | output the current screen when exiting |
| -a, | --exit-write-after int | number after the current lines when exiting |
| -b, | --exit-write-before int | number before the current lines when exiting |
| --filter string | filter search pattern | |
| -A, | --follow-all | follow mode to switch to updated files |
| -f, | --follow-mode | follow mode |
| --follow-name | file name follow mode | |
| --follow-section | section-by-section follow mode | |
| -H, | --header int | number of header lines to be displayed constantly |
| -h, | --help | help for ov |
| --help-key | display key bind information | |
| --hscroll-width [int|int%|.int] | width to scroll horizontally [int|int%|.int] (default "10%") | |
| --incsearch[=true|false] | incremental search (default true) | |
| -j, | --jump-target [int|int%|.int|'section'] | jump target [int|int%|.int|'section'] |
| -n, | --line-number | line number mode |
| --memory-limit int | number of chunks to limit in memory (default -1) | |
| --memory-limit-file int | number of chunks to limit in memory for the file (default 100) | |
| -M, | --multi-color strings | comma separated words(regexp) to color .e.g. "ERROR,WARNING" |
| --non-match-filter string | filter non match search pattern | |
| --pattern string | search pattern | |
| -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 regexp | regexp for section delimiter .e.g. "^#" | |
| --section-header | enable section-delimiter line as Header | |
| --section-header-num int | number of header lines (default 1) | |
| --section-start int | section start position | |
| --skip-extract | skip extracting compressed files | |
| --skip-lines int | skip the number of lines | |
| --smart-case-sensitive | smart case-sensitive in search | |
| -x, | --tab-width int | tab stop width (default 8) |
| -v, | --version | display version information |
| --view-mode string | view mode | |
| -T, | --watch seconds | watch mode interval(seconds) |
| -w, | --wrap[=true|false] | wrap mode (default true) |
It can also be changed after startup.
| key | action |
|---|---|
| [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 |
| [S] | * save buffer to file |
| 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 |
| [ctrl+shift+left] | * scroll left specified width |
| [ctrl+shift+right] | * scroll right specified width |
| [shift+Home] | * go to beginning of line |
| [shift+End] | * go to end of line |
| [g] | * go to line(input number or .n or n% allowed) |
| Move document | |
| []] | * next document |
| [[] | * previous document |
| [ctrl+k] | * close current document |
| [K] | * close all filtered documents |
| 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 |
| [&] | * filter search mode |
| Change display | |
| [w], [W] | * wrap/nowrap toggle |
| [c] | * column mode toggle |
| [alt+o] | * column width toggle |
| [ctrl+r] | * column rainbow toggle |
| [C] | * alternate rows of style toggle |
| [G] | * line number toggle |
| [ctrl+e] | * original decoration toggle(plain) |
| 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(.n or n% or section allowed) |
| 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 |
| [F7] | * section header number |
| 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+s] | * smart case-sensitive toggle |
| [alt+r] | * regular expression search toggle |
| [alt+i] | * incremental search toggle |
| [!] | * non-match toggle |
| [Up] | * previous candidate |
| [Down] | * next candidate |
| [ctrl+c] | * copy to clipboard. |
| [ctrl+v] | * paste from clipboard |
You can customize the following items.
- StyleAlternate
- StyleHeader
- StyleOverStrike
- StyleOverLine
- StyleLineNumber
- StyleSearchHighlight
- StyleColumnHighlight
- StyleMarkLine
- StyleSectionLine
- StyleMultiColorHighlight
- StyleColumnRainbow
- 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 |
Specify StyleMultiColorHighlight and StyleColumnRainbow in an array.
StyleMultiColorHighlight
- Foreground: "red"
Reverse: true
- Foreground: "aqua"
Underline: trueStyleColumnRainbow:
- Foreground: "white"
Background: "black"
- Foreground: "aqua"
Background: "black"
Underline: true
- Background: "lightsalmon"You can customize the bottom status line.
[Example]
Prompt
Normal:
ShowFilename: false
InvertColor: false
ProcessOfCount: false| item name | description | default |
|---|---|---|
| ShowFilename | Display file name | true |
| InvertColor | Display file name inverted and changed color | true |
| ProcessOfCount | Update the progress while counting the number of lines | true |
You can customize key bindings.
[Example]
down:
- "Enter"
- "Down"
- "ctrl+N"
up:
- "Up"
- "ctrl+p"See ov.yaml for more information.
The following software can be used instead. If you are not satisfied with ov, you should try it.
- less
lessis versatile, feature-rich, and the de facto standard for pagers.
- most
mostis a general-purpose pager with split-window capabilities.
- pspg
pspgis a pager suitable for output of psql etc.
- moar
moaris a pager with code highlighting.
- slit
slitis a pager suitable for viewing logs.
- lnav
lnavanalyzes logs and can be used as a viewer.
- peep
peepis a pager that can work in a small pane.
The following are not actually pagers and do not conflict. can work together.
- bat
batis an alternative to cat. It supports a lot of highlighting and automatically calls the pager.
- delta
deltaprocesses the diff for easy viewing and displays it. Call the pager automatically.
Please look at the documentation portal to configure them.
We welcome contributions to this project! Here are some ways you can contribute:
- Submit bugs and feature requests in the issue tracker.
- Review and test open pull requests.
- Improve or translate the documentation.
- Write code to fix bugs or add new features.
Before contributing, please read our Code of Conduct. We expect all contributors to follow these guidelines to ensure a welcoming and friendly environment for everyone.
To start contributing:
- Fork the repository.
- Create a new branch for your changes.
- Make your changes in your branch.
- Submit a pull request with your changes.
We will review your pull request as soon as possible. Thank you for your contribution!