Uma tradução em Português Está Disponível.
Openvi - Portable OpenBSD vi / ex
O Openvi é uma implementação aprimorada e portátil do editor de texto de Berkeley vi / ex , originalmente desenvolvido por Bill Joy .
O OpenVI é um fork do editor vi / ex incluído no OpenBSD , que é derivado da versão 1.79 do editor nvi originalmente distribuído como parte da quarta distribuição de software de Berkeley ( 4BSD ).
O editor nvi foi desenvolvido por Keith Bostic, do Grupo de Pesquisa em Sistemas de Computadores ( CSRG ) na Universidade da Califórnia, Berkeley , Sven Verdoolaege e outros colaboradores. O próprio Nvi foi derivado do editor Elvis de Steve Kirkendall .
Por que você gostaria de usar o Openvi em vez de outro ?
strlcpy , snprintf , mkstemp , pledge )bserase , expandtab , imctrl , visibletab , etc.Então, por que você pode não querer usar o Openvi , então?
Alguns desses pontos podem ser recursos desejáveis, dependendo do seu ponto de vista.
ex -medidas baseadas em linha disponíveissh ) e Utilitários, Awk ( mawk , nawk ), etc.xlc , suncc , clang , gcc , etc.)ncurses , NETBSD curses V8+, PDCurses v2.8+, PDCursesMod , etc.) csh , tcsh , etc.)nroff , groff , etc. O Openvi é facilmente portátil para a maioria das plataformas com sistemas operacionais do tipo UNIX que estão em conformidade principalmente com a interface de programação descrita pelo IEEE STD 1003.1-2008 e pelo ambiente do usuário descrito por IEEE STD 1003.2-2008 , também conhecido como Posix.1-2008 e POSIX.2-2008 , respectivamente.
Os seguintes sistemas operacionais são totalmente suportados e testados regularmente usando processadores IX86/AMD64, ARM/AARCH64, M68K, MIPS, POWER e RISC-V:
Os seguintes compiladores são totalmente suportados e testados regularmente:
Sistema operacional e mais antigo e mais antigos lançamentos de compiladores, dentro da razão, devem funcionar. As versões listadas acima são aquelas testadas regularmente e trabalho conhecido.
As contribuições do usuário para aprimorar o suporte da plataforma são bem -vindas.
gmake ou make ) a partir do diretório de nível superior de uma liberação de fonte ou checkout git.-j N da GNU Make pode ser usado para paralelizar a compilação, onde N é um número inteiro positivo que representa o número de trabalhos paralelos solicitados.CC - C para usarCC=gcc )OPTLEVEL - sinalizadores de otimizaçãoOPTLEVEL=-O2 )CFLAGS - Sinalizadores para passar para o compilador CCFLAGS="-Wall -pipe" )LIBS - Bibliotecas (substituindo padrões) para passar para o vinculadorLIBS="-lpdcurses -lflock" )LDFLAGS - sinalizadores para passar para o liganteLDFLAGS="-L/lib/path -static" )V - Defina para ativar a saída de compilação detalhadaV=1 )DEBUG - definido para compilar uma construção de depuraçãoDEBUG=1 )LGC - Defina para ativar a coleta de lixo -tempo de linkLGC=1 )LTO - Defina para ativar a otimização do tempo de linkLTO=1 )EXTRA_LIBS - bibliotecas extras para vincularEXTRA_LIBS=-lmtmalloc )PREFIX - Prefixo de diretório para uso com alvos install e uninstallPREFIX=/opt/OpenVi )all , strip , superstrip , clean , distclean , install , install-strip , uninstall , upx , etc.) estão disponíveis; Revise o GNUmakefile para ver todas as metas e opções disponíveis.Por exemplo, para compilar uma compilação otimizada de tamanho agressivo, permitindo a otimização do tempo de ligação e a coleta de lixo no tempo de ligação, usando explicitamente o GCC :
env CC=gcc OPTLEVEL=-Os LGC=1 LTO=1 gmake sstripOu, para compilar verbosamente uma construção de depuração, usando explicitamente Clang :
env CC=clang DEBUG=1 V=1 gmake Para sistemas com GNU Make As make ( por exemplo, GNU/Linux ), a compilação básica deve ter sucesso sem nenhuma opção ou configuração adicional necessária:
make Com os privilégios apropriados para manipular arquivos dentro do PREFIX escolhido (usando doas , sudo , su , etc.), o executável compilado pode ser instalado-como é ou despojado-usando uma invocação como:
doas gmake install-stripou
sudo env PREFIX=/usr/local make installAs seções a seguir apenas documentam diferenças específicas da plataforma e não se destinam a ser uma referência geral ou exaustiva. Para instalação de pacotes de software de pré -requisito ou outra configuração do sistema, consulte a documentação do fornecedor.
Antes de construir o Openvi no AIX , instale as bibliotecas e cabeçalhos ncurses . A IBM fornece os pacotes, ncurses e ncurses-devel necessários, no formato RPM como parte da caixa de ferramentas AIX para o software Linux e de código aberto . Com as permissões apropriadas ( por exemplo, root ), esses pacotes são instaláveis na maioria dos sistemas usando os utilitários dnf ou yum , por exemplo:
dnf install ncurses ncurses-develou
yum install ncurses ncurses-devel O sistema base IBM AIX (e o PASE para I , um ambiente de tempo de execução integrado para aplicativos AIX no sistema operacional IBM I ) fornece libxcurses , um XPG4 / XSI estendido a implementação derivada do System V AT&T , que ainda não é suportado para uso no OpenVI .
A compilação é suportada usando o IBM XL C / C ++ V16.1+ ( gxlc ou xlclang ), IBM OPEN XL C / C ++ V17.1+ ( ibm-clang ) ou GNU GCC (geralmente gcc , gcc-8 , gcc-9 , gcc-10 , GC gcc-11 ):
LTO=1 ) requer XL C / C ++ V17.1+aberto. Os pacotes IBM ( AIX Toolbox ) e Bull / Atos ( Bull Freeware ) GCC e as versões IBM XL C / C ++ antes do V17.1 não são ativadas por LTO.LGC=1 ) não é suportada no IBM AIX .MAIXBITS como 32 ( por exemplo, export MAIXBITS=32 ).CC deve ser definido para o caminho completo do compilador ( por exemplo , /opt/freeware/bin/gcc , /opt/IBM/xlC/16.1.0/bin/gxlc , /opt/IBM/openxlC/17.1.0/bin/ibm-clang , etc.), a menos que seja o PATH . O bloqueio de arquivos (via flock() fornecido pela biblioteca AIX libbsd ) não é funcional; Isso será investigado e corrigido em uma versão futura.
As páginas do Openvi Man são de autoria com mandoc e requerem conversão antes de usar com o software AIX man (que é derivado do Sistema AT&T Unix v .)
Nas instalações do NetBSD , as compilações OpenVI padrão usam a biblioteca curses do BSD fornecida pelo sistema Base NetBSD. Para usar ncurses , defina os valores das variáveis de ambiente CFLAGS , LDFLAGS e CURSESLIB apropriadamente ( ou seja, CFLAGS=-I/usr/pkg/include LDFLAGS=-L/usr/pkg/lib CURSESLIB=-lncurses ).
O ligante LLVM LLD é necessário para a otimização do tempo de ligação ( LTO=1 ) usando o CLANG . Está disponível como um pacote instalável ( por pkgin install lld ).
Antes de construir o Openvi em uma distribuição Illumos ( ou seja, Openindiana ), instale as bibliotecas e cabeçalhos ncurses . A distribuição Openindiana fornece o pacote ncurses necessário em formato IPS . Com as permissões apropriadas ( por exemplo, root ), o pacote pode ser instalado usando o utilitário Openindiana pkg , por exemplo:
pkg install ncurses O sistema de base Openindiana fornece libcurses , uma implementação de maldições estendidas XPG4 / XSI derivada do sistema AT&T V , que ainda não é suportado para uso no Openvi .
A coleta de lixo-tempo de link ( LGC=1 ) não é suportada no Openindiana .
Antes de construir o Openvi no Oracle Solaris 11, instale as bibliotecas e cabeçalhos ncurses . O Oracle fornece o pacote ncurses necessário para o Solaris 11 em formato IPS . Com as permissões apropriadas ( por exemplo, root ), o pacote pode ser instalado usando o utilitário Solaris pkg , por exemplo:
pkg install ncurses O sistema básico Oracle Solaris fornece libcurses , uma implementação de maldições estendidas XPG4 / XSI derivada do sistema AT&T V , que ainda não é suportado para uso no Openvi .
A compilação é suportada usando o Oracle Developer Studio , GCC e Clang :
suncc ou defina o valor da variável de ambiente _OSLCC como 1 .LTO=1 ) é suportada apenas ao usar o GCC ou o CLANG .LGC=1 ) não é suportada no Solaris .suncc ), uma compilação de 64 bits é o padrão em sistemas que operam no modo de 64 bits; Para uma compilação de 32 bits, defina o valor da variável de ambiente SUNBITS como 32 ( por exemplo, export SUNBITS=32 ). O bloqueio de arquivos não está disponível devido à ausência de flock() no Solaris . Isso será abordado pelo bloqueio de suporte do sistema V -style fcntl() em uma versão futura.
apt-cyg ), que podem resultar em arquivos ausentes e links simbólicos em falta ou ausentes.setup.exe para a versão mais recente disponível.setup.exe .make , gcc , ncurses , ncurses-devel ) usando o aplicativo Cygwin setup.exe .cygcheck ( ou seja, cygcheck -cv | grep -v "OK$" ) para verificar a integridade de todos os pacotes atualmente instalados. O Openvi está disponível para usuários do Linux e MacOS através do Homebrew Package Manager.
brew install openviOutros pacotes de distribuição (não oficiais) podem estar disponíveis.
O número da versão Openvi é baseado na versão da versão OpenBSD correspondente, seguida pelo número de versão do Openvi . O comando version pode ser usado para exibir essas informações no formato mostrado abaixo.
Version 7.0.1 (OpenVi) 10/25/2021.
Esta mensagem indica que o editor em uso é Openvi , Release 1 , derivado do OpenBSD versão 7.0 e é totalmente sincronizado com as versões OpenBSD de vi , ex , db e regex a partir de 25/10/2021 ( 25 de outubro de 2021 ).
As alterações não derivadas do OpenBSD Commits não avançam nesta data. Novos lançamentos OpenBSD não redefiniram o número de liberação do Openvi .
Openvi
ChangeLog OpenBSD vi
vi / exdbregexLICENSE.md para obter os termos completos de licença e distribuição. vi originais (de Bill Joy & Mark Horton ):Xvi de Martin Guy , um garfo aprimorado do STEVIE de Tim ThompsonSivle , de SV Nickolas , um garfo limpo do Elvis de Steve KirkendallVim57 de Andy Valencia , um garfo simplificado da versão 5.7 do Vim de Bram Moolenaar vi de Carsten Kunze é atualmente mantido fork da filial original ( 1BSD / 2BSD ) do editor vi / ex , derivado da versão aprimorada do Gunnar Ritter do editor tradicional vi .Nvi2 é um ramo de recursos atualmente mantido da nova versão ( 4BSD ) do editor nvi / nex , com foco na extensibilidade e novos recursos.Nvi1 ( versão 1.8+ ) é a filial tradicional atualmente mantida da nova versão ( 4BSD ) do editor nvi / nex , agora desenvolvido por Sven Verdoolaege .