umatraduçãoemportuguêsestádisponível。
OpenVI - 便携式OpenBSD vi / ex
OpenVI是Bill Joy最初开发的Berkeley vi / ex文本编辑器的增强且便携式实施。
OpenVI是OpenBSD中包含的vi / ex编辑器的叉子,该叉子源自nvi编辑器的1.79版,最初是作为第四伯克利软件分发( 4BSD )的一部分分发的。
nvi编辑是由加利福尼亚大学,伯克利大学, Sven Verdoolaege和其他贡献者的计算机系统研究小组( CSRG )的Keith Bostic开发的。 Nvi本身源自Steve Kirkendall的Elvis编辑。
您为什么要使用OpenVI而不是另一个Vi ?
strlcpy , snprintf , mkstemp , pledge )bserase , expandtab , imctrl , visibletab等延伸词那么,为什么您不想使用OpenVI呢?
这些要点中的一些可能是理想的特征,具体取决于您的观点。
exsh )和实用程序,尴尬( mawk , nawk ),等等。xlc , suncc , clang , gcc等)ncurses , Netbsd curses V8+, PDCurses v2.8+, PDCursesMod等) csh , tcsh等)nroff , groff等OpenVI很容易移植到大多数具有类似Unix的操作系统的平台,这些平台主要符合IEEE STD 1003.1-2008所描述的编程接口以及由IEEE STD 1003.2-2008所描述的用户环境,分别为POSIX.1-2008和POSIX.2-2008 。
使用IX86/AMD64,ARM/AARCH64,M68K,MIPS,POWER和RISC-V处理器对以下操作系统得到充分支持并定期测试:
以下编译器得到充分支持并定期测试:
较新或以上的操作系统和编译器发行在合理中应起作用。上面列出的版本是经常测试和已知工作的版本。
欢迎对增强平台支持的用户贡献。
gmake或make )来执行汇编。-j N标志可用于并行化汇编,其中N是一个积极的整数,代表所请求的并行作业数。CC -C编译器要使用CC=gcc )OPTLEVEL优化标志OPTLEVEL=-O2 )CFLAGS旗帜传递给C编译器CFLAGS="-Wall -pipe" )LIBS库(覆盖默认值)以传递到链接器LIBS="-lpdcurses -lflock" )LDFLAGS旗帜传递给链接器LDFLAGS="-L/lib/path -static" )V设置以启用详细汇编输出V=1 )DEBUG - 设定编译调试构建DEBUG=1 )LGC设置启用链接时间垃圾收集LGC=1 )LTO设置启用链接时间优化LTO=1 )EXTRA_LIBS用于链接的额外库EXTRA_LIBS=-lmtmalloc )PREFIX - 目录前缀用于install和uninstall目标PREFIX=/opt/OpenVi )all , strip , superstrip , clean , distclean , install , install-strip , uninstall , upx等);查看GNUmakefile ,以查看所有可用的目标和选项。例如,要使用GCC明确地汇编大小优化的构建,启用链接时间优化和链接时间垃圾收集:
env CC=gcc OPTLEVEL=-Os LGC=1 LTO=1 gmake sstrip或者,要言行地编译调试构建,请使用clang明确地:
env CC=clang DEBUG=1 V=1 gmake对于具有GNU make的系统(例如GNU/Linux ),基本汇编应成功,而无需任何选项或其他配置:
make有了适当的特权来操纵所选PREFIX中的文件(使用doas , sudo , su等),可以使用诸如:
doas gmake install-strip或者
sudo env PREFIX=/usr/local make install以下各节仅记录平台特定的差异,并且不打算是一般或详尽的参考。要安装先决条件软件包或其他系统配置,请咨询供应商的文档。
在AIX上构建OpenVI之前,请安装ncurses库和标题。 IBM以RPM格式提供了必要的软件包, ncurses和ncurses-devel ,作为Linux和开源软件的AIX工具箱的一部分。有了适当的权限(例如root ),这些软件包可以在大多数系统上使用dnf或yum实用程序安装:例如:
dnf install ncurses ncurses-devel或者
yum install ncurses ncurses-devel IBM AIX基本系统(以及I, IBM I操作系统上AIX应用程序的集成运行时环境的PASE )提供了libxcurses , XPG4 / XSI扩展的诅咒实现来自AT&T System V的实现,该实现尚未支持与OpenVI一起使用。
使用IBM XL C / C ++ V16.1+( gxlc或xlclang ), IBM OPEN XL C / C ++ V17.1+( ibm-clang )或GNU GCC (通常是gcc , gcc-8 ,GCC-8, gcc-9 , gcc-10 , gcc-11 ):
LTO=1 )需要打开XL C / C ++ V17.1+。 IBM ( AIX工具箱)和Bull / Atos ( Bull Freeware ) GCC软件包和IBM XL C / C / C ++版本早于V17.1不启用LTO。LGC=1 )。MAIXBITS环境变量的值设置为32 (例如export MAIXBITS=32 )。CC environment variable must be set to the full path of the compiler ( eg /opt/freeware/bin/gcc , /opt/IBM/xlC/16.1.0/bin/gxlc , /opt/IBM/openxlC/17.1.0/bin/ibm-clang , etc.) unless the compiler directory is already part of the current PATH .文件锁定( AIX libbsd库提供的通过flock() )是非功能的;这将在以后的发布中进行调查和纠正。
OpenVi Man页面由mandoc撰写,并且需要在与AIX man软件一起使用之前进行转换(该软件来自AT&T Unix System v 。)
在NetBSD安装上,默认的OpenVI构建使用NetBSD基本系统提供的BSD curses库。 ncurses ,要适当地设置CFLAGS , LDFLAGS和CURSESLIB环境变量的值( IE CFLAGS=-I/usr/pkg/include LDFLAGS=-L/usr/pkg/lib CURSESLIB=-lncurses )。
使用clang需要LLVM LLD链接器才能进行链接时间优化( LTO=1 )。它可作为可安装软件包(即pkgin install lld )提供。
在以Illumos分发( IE OpenIndiana )进行OpenVI构建之前,请安装ncurses库和标题。 OpenIndiana发行版以IPS格式提供必要的ncurses软件包。有了适当的权限(例如root ),可以使用OpenIndiana pkg实用程序安装软件包,例如:
pkg install ncurses OpenIndiana基本系统提供libcurses , XPG4 / XSI扩展诅咒实现了从AT&T系统V派生的,该实现尚未支持与OpenVI一起使用。
OpenIndiana不支持Link时间垃圾收集( LGC=1 )。
在Oracle Solaris 11上构建OpenVI之前,请安装ncurses库和标题。 Oracle提供了IPS格式的Solaris 11的必要ncurses软件包。有了适当的权限(例如root ),可以使用Solaris pkg实用程序安装软件包,例如:
pkg install ncurses基本的Oracle Solaris系统提供libcurses , XPG4 / XSI扩展的诅咒实现了从AT&T System V派生的,该实现尚未支持与OpenVI一起使用。
使用Oracle Developer Studio , GCC和Clang支持汇编:
suncc调用,或将_OSLCC环境变量的值设置为1 。LTO=1 )当前仅在使用GCC或CLANG时才支持。LGC=1 )。suncc )编译器时,在64位模式下运行的系统的默认值是64位的构建。对于32位的构建,将SUNBITS环境变量的值设置为32 (例如export SUNBITS=32 )。由于Solaris上没有flock()因此无法使用文件锁定。这将通过支持系统v -style fcntl()锁定在以后的版本中来解决。
apt-cyg )安装软件包的,这可能会导致缺少文件以及悬挂或丢失的符号链接。setup.exe应用程序更新为最新的可用版本。setup.exe应用程序更新所有安装的软件包。setup.exe应用程序安装所需的先决条件软件包(即make , gcc , ncurses , ncurses-devel )。cygcheck实用程序(即cygcheck -cv | grep -v "OK$" )来验证当前安装的所有软件包的完整性。 Linux和MacOS用户可以通过Homebrew Package Manager使用OpenVI 。
brew install openvi可以提供其他(非正式)分销软件包。
OpenVI版本编号基于相应的OpenBSD版本的版本,其次是OpenVI发行号。 version命令可用于以下面显示的格式显示此信息。
Version 7.0.1 (OpenVi) 10/25/2021.
此消息表明,使用的编辑器是OpenVI ,版本1 ,源自OpenBSD版本7.0 ,并与vi ,EX, ex , db和regex的OpenBSD版本完全同步,截至2021年10月25日( 2021年10月25日)。
未从OpenBSD委员会得出的更改不会提前此日期。新的OpenBSD版本不会重置OpenVI发布编号。
Openvi
ChangeLogOpenBSD vi
vi / exdbregexLICENSE.md文件。 vi致谢( Bill Joy & Mark Horton ):Xvi ,蒂姆·汤普森(Tim Thompson )的STEVIE的增强叉Sivle , Steve Kirkendall的Elvis的清理叉Vim57 , Bram Moolenaar的Vim的5.7版的简化叉vi是vi / ex EDITOR的原始( 1BSD / 2BSD )分支的叉子,该分支来自Gunnar Ritter的增强版本的传统vi编辑器。Nvi2是nvi / nex编辑器的新( 4BSD )版本的当前维护功能分支,重点是扩展性和新功能。Nvi1 ( 1.8+版本)是nvi / nex编辑器的新( 4BSD )版本的当前维护的传统分支,该分支现在由Sven Verdoolaege开发。