{"id":13577023,"url":"https://github.com/johnsonjh/OpenVi","last_synced_at":"2025-04-05T09:30:44.937Z","repository":{"id":43275605,"uuid":"451329808","full_name":"johnsonjh/OpenVi","owner":"johnsonjh","description":"OpenVi: Portable OpenBSD vi for UNIX systems","archived":false,"fork":false,"pushed_at":"2024-10-23T07:26:20.000Z","size":2974,"stargazers_count":166,"open_issues_count":8,"forks_count":12,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-04T10:04:02.199Z","etag":null,"topics":["bsd","c","editor","nvi","openbsd","openvi","vi","vim"],"latest_commit_sha":null,"homepage":"https://github.com/johnsonjh/OpenVi","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/johnsonjh.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-24T05:34:24.000Z","updated_at":"2024-12-16T14:45:33.000Z","dependencies_parsed_at":"2023-11-14T02:30:18.165Z","dependency_job_id":"97a80bcd-59bf-42b2-86ce-5c66a027096a","html_url":"https://github.com/johnsonjh/OpenVi","commit_stats":{"total_commits":455,"total_committers":6,"mean_commits":75.83333333333333,"dds":0.01538461538461533,"last_synced_commit":"d18a46fac330d11e55e9af10b950e9692e3cadea"},"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnsonjh%2FOpenVi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnsonjh%2FOpenVi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnsonjh%2FOpenVi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnsonjh%2FOpenVi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/johnsonjh","download_url":"https://codeload.github.com/johnsonjh/OpenVi/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247317984,"owners_count":20919448,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bsd","c","editor","nvi","openbsd","openvi","vi","vim"],"created_at":"2024-08-01T15:01:17.019Z","updated_at":"2025-04-05T09:30:44.928Z","avatar_url":"https://github.com/johnsonjh.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"\u003c!-- SPDX-License-Identifier: BSD-3-Clause --\u003e\n\u003c!-- Copyright (c) 2021-2024 Jeffrey H Johnson \u003ctrnsz@pobox.com\u003e --\u003e\n[Uma tradução em português está disponível.](README_pt_BR.md)\n\n# OpenVi\n\n***OpenVi*** — Portable *OpenBSD* **`vi`** / **`ex`**\n\n## Table of Contents\n\n\u003c!-- toc --\u003e\n\n- [Overview](#overview)\n  * [Why?](#why)\n    + [Why not?](#why-not)\n- [Building](#building)\n  * [Prerequisites](#prerequisites)\n    + [Required prerequisites](#required-prerequisites)\n    + [Optional prerequisites](#optional-prerequisites)\n    + [Supported platforms](#supported-platforms)\n      - [Unsupported platforms](#unsupported-platforms)\n  * [Compilation](#compilation)\n    + [Platform Specifics](#platform-specifics)\n      - [AIX](#aix)\n      - [NetBSD](#netbsd)\n      - [illumos](#illumos)\n      - [Solaris](#solaris)\n      - [Windows](#windows)\n        * [Cygwin](#cygwin)\n- [Availability](#availability)\n  * [Source Code](#source-code)\n  * [Packages](#packages)\n- [Versioning](#versioning)\n- [History](#history)\n- [License](#license)\n- [Acknowledgements](#acknowledgements)\n- [Similar Projects](#similar-projects)\n- [See Also](#see-also)\n\n\u003c!-- tocstop --\u003e\n\n## Overview\n\n***OpenVi*** is an enhanced and portable implementation of the Berkeley\n**`vi`** / **`ex`** text editor, originally developed by *Bill Joy*.\n\n***OpenVi*** is a fork of the **`vi`** / **`ex`** editor included with\n*OpenBSD*, which is derived from version 1.79 of the `nvi` editor originally\ndistributed as part of the *Fourth Berkeley Software Distribution* (**4BSD**).\n\nThe **`nvi`** editor was developed by *Keith Bostic* of the *Computer Systems\nResearch Group* (**CSRG**) at the *University of California, Berkeley*, *Sven\nVerdoolaege*, and other contributors. **`Nvi`** itself was derived from *Steve\nKirkendall*'s **`Elvis`** editor.\n\n### Why?\n\nWhy would you want to use ***OpenVi*** instead of ***AnotherVi***?\n\n- Derived from the (extensively audited) *OpenBSD* base system code\n  - Focus on readability, simplicity, and correctness of implementation\n  - Adherence to *OpenBSD*'s standard secure coding practices\n    - Uses secure functions (*e.g.* `strlcpy`, `snprintf`, `mkstemp`, `pledge`)\n  - Reduced complexity for hopefully fewer program defects\n- Clean source code, distributed under a permissive 3-clause BSD license\n  - Some support code is distributed under the (more permissive) ISC license\n- Mostly conforming to relevant standards (*POSIX*, *SUS*), where applicable\n  - Enhancements, non-standard behaviors, and new features are conservatively\n    and sanely implemented with care taken to balance user expectations,\n    complexity, and historical accuracy\n- Extensions such as `bserase`, `expandtab`, `imctrl`, `visibletab`, etc.\n- Build requires only *GNU Make* and standard *POSIX* utilities\n  - Easy integration with embedded, minimal, or iteratively bootstrapped\n    environments and distributions (such as *Linux From Scratch* builds)\n- No compile-time or build-time configuration options\n  - Single standard build configuration with no incompatible variants\n  - No configuration-specific bugs resulting from untested combinations or\n    rarely exercised code paths\n  - Concise and understandable documentation; no subtle platform variations\n- Consistent user interface, script, and map behavior across all platforms\n- Utilizes *OpenBSD*'s extended *Spencer*-based regular expression engine\n  (also adopted by *LLVM*, *Tcl*, etc.) on all supported systems\n- Single, compact, self-contained binary\n  - No external data files required at run-time\n  - No external library dependencies (other than curses)\n    - Suitable for static linking and emergency “rescue” usage\n- All the various tweaks, fixes, improvements, and clean-ups accumulated\n  over 25+ years as part of the *OpenBSD* base system\n\n#### Why not?\n\nSo, why might you **not** want to use ***OpenVi***, then?\n\nSome of these points might be desirable features, depending on your point of\nview.\n\n- Internationalization support is currently lacking\n  - No support for Unicode / UTF-8 / wide character display\n    - Multibyte characters are shown as individual bytes, rather than glyphs\n    - Multibyte support is planned, but is unfortunately non-trivial, see:\n      - Schwarze, I. (2016, September 25). *Keep multibyte character support\n        simple* [Conference presentation]. EuroBSDCon 2016 Convention,\n        Belgrade, Serbia.\n        [[pdf:OpenBSD](https://openbsd.org/papers/eurobsdcon2016-utf8.pdf)]\n      - Jun-ichiro itojun Hagino [*KAME Project*] and Yoshitaka Tokugawa\n        [*WIDE Project*]. (1999, 6 June). *Multilingual vi clones: past, now\n        and the future* [Conference presentation]. In Proceedings of the\n        annual conference on USENIX, Annual Technical Conference\n        (*USENIX ATEC '99*). USENIX Association, Monterey, CA, USA, Page 45.\n        [[doi:10.5555/1268708.1268753](https://dl.acm.org/doi/10.5555/1268708.1268753)],\n        [[abstract:USENIX](https://www.usenix.org/conference/1999-usenix-annual-technical-conference/multilingual-vi-clones-past-now-and-future)]\n        (*legacy*)\n  - No support for bidirectional text\n  - No support for regional localization or message translation\n- Inefficient handling of extremely large (*e.g.* multi-GB) files\n- No support for syntax highlighting, context-aware code completion, code\n  folding, or “*language server*” integrations\n- No interactive macro recording and debugging functionality\n- No advanced scripting support (no *BASIC*, *COBOL*, *JavaScript*, *Lua*,\n  *Perl*, *PHP*, *Python*, *REXX*, *Ruby*, *S-Lang*, *Tcl*, or anything else)\n- Only curses-based visual-mode and line-based `ex`-mode interfaces available\n  - No support for X11/Wayland, OpenGL/Vulkan, Neuralink, augmented / virtual\n    reality, or any other graphical user interfaces\n\n## Building\n\n### Prerequisites\n\n#### Required prerequisites\n\n- **POSIX.1**-**2008** environment: *POSIX* shell (`sh`) and utilities,\n  **Awk** (`mawk`, `nawk`), etc.\n- **GNU Make** (version *3.81* or later)\n- **C99** compiler (*e.g.* `xlc`, `suncc`, `clang`, `gcc`, etc.)\n- **Curses** (`ncurses`, *NetBSD* `curses` V8+, `PDCurses` V2.8+,\n  `PDCursesMod`, etc.)\n\n#### Optional prerequisites\n\n- **Perl** 5+\n- **C shell** (`csh`, `tcsh`, etc.)\n- `nroff`, `groff`, etc.\n\n#### Supported platforms\n\n- **OpenVi** is easily portable to most platforms with *UNIX*-like operating\n  systems that are mostly conforming to the programming interface described by\n  *IEEE Std 1003.1-2008* and user environment described by *IEEE Std\n  1003.2-2008*, also known as *POSIX.1-2008* and *POSIX.2-2008*, respectively.\n\n- The following operating systems are fully supported and regularly tested\n  using ix86/AMD64, ARM/AArch64, m68k, MIPS, POWER, and RISC-V processors:\n  - *IBM* **AIX** 7.1+\n  - *Apple* **Darwin** (**macOS** / **Mac OS X**) (*ARM64*, *Intel*, *PowerPC*)\n  - **FreeBSD** 12.3+\n  - **GNU**/**Linux** distributions (*glibc*, *musl*)\n  - *illumos* **OpenIndiana** Hipster\n  - **NetBSD** 9+\n  - **OpenBSD** 6.9+\n  - *Oracle* **Solaris** 11+\n  - *Microsoft* **Windows** (*Cygwin*, *Midipix*, *MSYS2*, *WSL*)\n\n- The following compilers are fully supported and regularly tested:\n  - *LLVM* **Clang** (*BSD*, *Darwin*, *illumos*, *Linux*, *Solaris*,\n    *Windows*) V6+\n  - *AMD* **Optimizing C**/**C++** (*Linux*) V3+\n  - *GNU* **GCC** (*AIX*, *BSD*, *Darwin*, *illumos*, *Linux*, *Solaris*,\n    *Windows*) V4.6+\n  - *IBM* **Advance Toolchain** (*Linux on POWER*) V14.0+\n  - *IBM* **Open XL C**/**C++** (*AIX*) V17.1+\n  - *IBM* **XL C**/**C++** (*AIX*, *Linux*) V16.1+\n  - *Intel* **oneAPI DPC++**/**C++** (*Linux*) V2021+\n  - *Intel* **C Compiler Classic** (*Darwin*, *Linux*) V19.1+\n  - *Oracle* **Developer Studio** (*Linux*, *Solaris*) V12.6+\n  - *PCC* **Portable C Compiler** (*NetBSD*) V1.0.0+\n\nNewer or older operating system and compiler releases, within reason, should\nwork. The versions listed above are those regularly tested and known working.\n\n##### Unsupported platforms\n\n- The following platforms are **not** currently supported, but **support is\n  planned** for a future release:\n  - **Haiku** Walter\n  - *SGI* **IRIX**\n\nUser contributions to enhance platform support are welcomed.\n\n### Compilation\n\n- Compilation can be performed by invoking GNU Make (usually `gmake` or `make`)\n  from the top-level directory of a source release or git checkout.\n- GNU Make's `-j N` flag may be used to parallelize the compilation, where `N`\n  is a positive integer representing the number of parallel jobs requested.\n- The following environment variables influence compilation and installation:\n  - `CC` - C compiler to use\n    - (*e.g.* `CC=gcc`)\n  - `OPTLEVEL` - Optimization flags\n    - (*e.g.* `OPTLEVEL=-O2`)\n  - `CFLAGS` - Flags to pass to the C compiler\n    - (*e.g.* `CFLAGS=\"-Wall -pipe\"`)\n  - `LIBS` - Libraries (overriding defaults) to pass to the linker\n    - (*e.g.* `LIBS=\"-lpdcurses -lflock\"`)\n  - `LDFLAGS` - Flags to pass to the linker\n    - (*e.g.* `LDFLAGS=\"-L/lib/path -static\"`)\n  - `V` - Set to enable verbose compilation output\n    - (*e.g.* `V=1`)\n  - `DEBUG` - Set to compile a debugging build\n    - (*e.g.* `DEBUG=1`)\n  - `LGC` - Set to enable link-time garbage collection\n    - (*e.g.* `LGC=1`)\n  - `LTO` - Set to enable link-time optimization\n    - (*e.g.* `LTO=1`)\n  - `EXTRA_LIBS` - Extra libraries for linking\n    - (*e.g.* `EXTRA_LIBS=-lmtmalloc`)\n  - `PREFIX` - Directory prefix for use with `install` and `uninstall` targets\n    - (*e.g.* `PREFIX=/opt/OpenVi`)\n- The usual targets (`all`, `strip`, `superstrip`, `clean`, `distclean`,\n  `install`, `install-strip`, `uninstall`, `upx`, etc.) are available; review\n  the `GNUmakefile` to see all the available targets and options.\n\nFor example, to compile an aggressively size-optimized build, enabling\nlink-time optimization and link-time garbage collection, explicitly using\n*GCC*:\n```sh\nenv CC=gcc OPTLEVEL=-Os LGC=1 LTO=1 gmake sstrip\n```\nor, to verbosely compile a debugging build, explicitly using *Clang*:\n```sh\nenv CC=clang DEBUG=1 V=1 gmake\n```\nFor systems with *GNU Make* as `make` (*e.g.* *GNU/Linux*), basic compilation\nshould succeed without any options or additional configuration needed:\n```sh\nmake\n```\nWith the appropriate privileges to manipulate files within the chosen `PREFIX`\n(using `doas`, `sudo`, `su`, etc.), the compiled executable may be installed —\nas-is or stripped — using an invocation such as:\n```sh\ndoas gmake install-strip\n```\nor\n```sh\nsudo env PREFIX=/usr/local make install\n```\n\n#### Platform Specifics\n\nThe following sections document ***only*** platform specific differences, and\nare not intended to be a general or exhaustive reference. For installation of\nprerequisite software packages or other system configuration, consult the\nvendor's documentation.\n\n##### AIX\n\n- Before building ***OpenVi*** on **AIX**, install the `ncurses` libraries and\n  headers. *IBM* provides the necessary packages, `ncurses` and\n  `ncurses-devel`, in *RPM* format as part of the *AIX Toolbox for Linux and\n  Open Source Software*. With the appropriate permissions (*e.g.* `root`), these\n  packages are installable on most systems using the `dnf` or `yum` utilities,\n  for example:\n  ```sh\n  dnf install ncurses ncurses-devel\n  ```\n  or\n  ```sh\n  yum install ncurses ncurses-devel\n  ```\n  The *IBM* **AIX** base system (and **PASE for i**, an integrated runtime\n  environment for **AIX** applications on the **IBM i** operating system)\n  provides `libxcurses`, an *XPG4*/*XSI* Extended Curses implementation\n  derived from *AT\u0026T System V*, which is **not** yet supported for use with\n  ***OpenVi***.\n\n- Compilation is supported using *IBM* **XL C**/**C++** V16.1+ (`gxlc` or\n  `xlclang`), *IBM* **Open XL C**/**C++** V17.1+ (`ibm-clang`), or *GNU*\n  **GCC** (usually `gcc`, `gcc-8`, `gcc-9`, `gcc-10`, `gcc-11`):\n  - Link-time optimization (`LTO=1`) requires **Open XL C**/**C++** V17.1+.\n    The *IBM* (*AIX Toolbox*) and *Bull*/*Atos* (*Bull Freeware*) **GCC**\n    packages, and *IBM* **XL C**/**C++** versions earlier than V17.1 are\n    **not** LTO-enabled.\n  - Link-time garbage collection (`LGC=1`) is **not** supported on *IBM*\n    **AIX**.\n  - A 64-bit build is the default on systems operating in 64-bit mode; for a\n    32-bit build, set the value of the `MAIXBITS` environment variable to\n    `32` (*e.g.* `export MAIXBITS=32`).\n  - The value of the `CC` environment variable must be set to the full path\n    of the compiler (*e.g.* `/opt/freeware/bin/gcc`,\n    `/opt/IBM/xlC/16.1.0/bin/gxlc`, `/opt/IBM/openxlC/17.1.0/bin/ibm-clang`,\n    etc.) unless the compiler directory is already part of the current `PATH`.\n\n- File locking (via `flock()` as provided by the **AIX** `libbsd` library) is\n  non-functional; this will be investigated and corrected in a future release.\n\n- ***OpenVi*** man pages are authored with `mandoc` and require conversion\n  before use with the **AIX** `man` software (which is derived from *AT\u0026T\n  UNIX System V*.)\n\n##### NetBSD\n\n- On **NetBSD** installations, the default ***OpenVi*** builds use the BSD\n  `curses` library provided by the NetBSD base system. To use `ncurses`\n  instead, set the values of the `CFLAGS`, `LDFLAGS`, and `CURSESLIB`\n  environment variables appropriately (*i.e.* `CFLAGS=-I/usr/pkg/include`\n  `LDFLAGS=-L/usr/pkg/lib` `CURSESLIB=-lncurses`).\n\n- The *LLVM* **LLD** linker is required for link-time optimization (`LTO=1`)\n  using **Clang**. It is available as an installable package (*i.e.* `pkgin\n  install lld`).\n\n##### illumos\n\n- Before building ***OpenVi*** on an **illumos** distribution (*i.e.*\n  **OpenIndiana**), install the `ncurses` libraries and headers. The\n  **OpenIndiana** distribution provides the necessary `ncurses` package in\n  *IPS* format. With the appropriate permissions (*e.g.* `root`), the package\n  can be installed using the **OpenIndiana** `pkg` utility, for example:\n  ```sh\n  pkg install ncurses\n  ```\n  The **OpenIndiana** base system provides `libcurses`, an *XPG4*/*XSI*\n  Extended Curses implementation derived from *AT\u0026T System V*, which is **not**\n  yet supported for use with ***OpenVi***.\n\n- Link-time garbage collection (`LGC=1`) is **not** supported on\n  **OpenIndiana**.\n\n##### Solaris\n\n- Before building ***OpenVi*** on *Oracle* **Solaris** 11, install the\n  `ncurses` libraries and headers. *Oracle* provides provides the necessary\n  `ncurses` package for **Solaris** 11 in *IPS* format. With the appropriate\n  permissions (*e.g.* `root`), the package can be installed using the **Solaris**\n  `pkg` utility, for example:\n  ```sh\n  pkg install ncurses\n  ```\n  The base *Oracle* **Solaris** system provides `libcurses`, an *XPG4*/*XSI*\n  Extended Curses implementation derived from *AT\u0026T System V*, which is **not**\n  yet supported for use with ***OpenVi***.\n\n- Compilation is supported using *Oracle* **Developer Studio**, **GCC**, and\n  **Clang**:\n  - When using *Oracle* **Developer Studio**, invoke the compiler as `suncc`\n    or set the value of the `_OSLCC` environment variable to `1`.\n  - Link-time optimization (`LTO=1`) is currently supported **only** when using\n    **GCC** or **Clang**.\n  - Link-time garbage collection (`LGC=1`) is **not** supported on **Solaris**.\n  - When using the *Oracle* **Developer Studio** (`suncc`) compiler, a 64-bit\n    build is the default on systems operating in 64-bit mode; for a 32-bit\n    build, set the value of the `SUNBITS` environment variable to `32` (*e.g.*\n    `export SUNBITS=32`).\n\n- File locking is unavailable due to the absence of `flock()` on **Solaris**.\n  This will be addressed by supporting *System V*-style `fcntl()` locking in a\n  future release.\n\n##### Windows\n\n- *Microsoft* **Windows** supports various development and runtime\n  environments, including *MSVC*, *Cygwin*, *Midipix*, *MSYS2*, *UWIN*, the\n  *Git Bash* environment, and others. Care must be taken to avoid mixing\n  incompatible libraries and tools.\n\n###### Cygwin\n\n- Compilation problems in the **Cygwin** environment are often caused by\n  incomplete or interrupted package installations, or by the installation of\n  packages using non-standard tools (*e.g.* `apt-cyg`), which can result in\n  missing files and dangling or missing symbolic links.\n- **Before** compiling ***OpenVi*** under **Cygwin**, it is *highly*\n  recommended to:\n  - Update the **Cygwin** `setup.exe` application to the latest available\n    version.\n  - Update all installed packages using the new **Cygwin** `setup.exe`\n    application.\n  - Install the required prerequisite packages (*i.e.* `make`, `gcc`, `ncurses`,\n    `ncurses-devel`) using the **Cygwin** `setup.exe` application.\n  - Invoke the `cygcheck` utility (*i.e.* `cygcheck -cv | grep -v \"OK$\"`) to\n    verify the integrity of all currently installed packages.\n\n## Availability\n\n### Source Code\n\n- [GitHub source repository](https://github.com/johnsonjh/OpenVi)\n- [Latest source release](http://github.com/johnsonjh/OpenVi/releases/latest)\n\n### Packages\n\n**OpenVi** is available to Linux and macOS users via the\n[Homebrew](https://formulae.brew.sh/formula/openvi) package manager.\n\n[![Homebrew](https://repology.org/badge/version-for-repo/homebrew/openvi.svg)](https://repology.org/project/openvi/versions)\n\n```sh\nbrew install openvi\n```\n\nOther (unofficial) distribution packages may be available.\n\n[![Packaging status](https://repology.org/badge/vertical-allrepos/openvi.svg)](https://repology.org/project/openvi/versions)\n\n## Versioning\n\nThe ***OpenVi*** version number is based on the version of the corresponding\n*OpenBSD* release, followed by the ***OpenVi*** release number. The `version`\ncommand can be used to display this information in the format shown below.\n\n```text\nVersion 7.0.1 (OpenVi) 10/25/2021.\n```\n\nThis message indicates the editor in use is ***OpenVi***, release **1**,\nderived from *OpenBSD* version **7.0**, and is fully synchronized with the\n*OpenBSD* versions of ***`vi`***, ***`ex`***, ***`db`***, and ***`regex`***\nas of **10/25/2021** (*October 25th 2021*).\n\nChanges **not** derived from *OpenBSD* commits do not advance this date.\nNew *OpenBSD* releases do not reset the ***OpenVi*** release number.\n\n## History\n\n- ***OpenVi***\n  - [`ChangeLog`](/ChangeLog)\n  - [Release history](http://github.com/johnsonjh/OpenVi/releases/)\n  - [Commit history](https://github.com/johnsonjh/OpenVi/commits/master)\n\n- *OpenBSD* ***`vi`***\n  - *OpenBSD* ***`vi`*** / ***`ex`***\n    - [Commit history](https://github.com/openbsd/src/commits/master/usr.bin/vi)\n  - *OpenBSD* ***`db`***\n    - [Commit history](https://github.com/openbsd/src/commits/master/lib/libc/db)\n  - *OpenBSD* ***`regex`***\n    - [Commit history](https://github.com/openbsd/src/commits/master/lib/libc/regex)\n\n## License\n\n- ***OpenVi*** is distributed under the terms of a **3-clause BSD** license.\n- See the [`LICENSE.md`](/LICENSE.md) file for the full license and\n  distribution terms.\n\n## Acknowledgements\n\n- *rqsd* of *Libera.Chat* for the idea that inspired the project and testing.\n- [*S. V. Nickolas*](https://github.com/buricco/),\n  [*Jason Stevens*](https://virtuallyfun.com/), and the\n  [***Virtually Fun*** *Discord*](https://discord.gg/HMwevcN) community, for\n  support and feedback.\n- From the original **`vi`** acknowledgements (by *Bill Joy* \u0026 *Mark Horton*):\n  - *Bruce Englar* encouraged the early development of this display editor.\n  - *Peter Kessler* helped bring sanity to version 2's command layout.\n  - *Bill Joy* wrote version **1**, versions **2.0** through **2.7**, and\n    created the framework that users see in the present editor.\n  - *Mark Horton* added macros and other features, and made the editor work on\n    a large number of terminals and *UNIX* systems.\n  - The financial support of *UUNET Communications Services* is gratefully\n    acknowledged.\n\n## Similar Projects\n\n- *Martin Guy*'s [**`Xvi`**](http://martinwguy.github.io/xvi/), an enhanced\n  fork of *Tim Thompson*'s [**`STEVIE`**](https://timthompson.com/tjt/stevie/)\n- *S. V. Nickolas*'\n  [**`Sivle`**](https://github.com/buricco/lunaris/tree/main/src/usr.bin/ex), a\n  cleaned-up fork of *Steve Kirkendall*'s\n  [**`Elvis`**](http://elvis.the-little-red-haired-girl.org/)\n- *Andy Valencia*'s [**`Vim57`**](https://sources.vsta.org:7100/vim57/tree), a\n  simplified fork of version 5.7 of *Bram Moolenaar*'s\n  [**`Vim`**](https://www.vim.org/)\n\n## See Also\n\n- [*Carsten Kunze*'s **`vi`**](https://github.com/n-t-roff/heirloom-ex-vi/)\n  is a currently maintained fork of the original (**1BSD**/**2BSD**) branch\n  of the **`vi`** / **`ex`** editor, derived from *Gunnar Ritter*'s enhanced\n  version of the [**traditional** **`vi`**](http://ex-vi.sourceforge.net/)\n  editor.\n- [**`Nvi2`**](https://github.com/lichray/nvi2) is a currently maintained\n  *feature branch* of the new (**4BSD**) version of the **`nvi`** / **`nex`**\n  editor, with a focus on extensibility and new features.\n- [**`Nvi1`**](https://repo.or.cz/nvi.git) (*version* *1.8+*) is the\n  currently maintained *traditional branch* of the new (**4BSD**) version of\n  the **`nvi`** / **`nex`** editor, now developed by *Sven Verdoolaege*.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnsonjh%2FOpenVi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjohnsonjh%2FOpenVi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnsonjh%2FOpenVi/lists"}