Fun with nvi

Peter Wemm peter at wemm.org
Sat Aug 10 17:33:21 UTC 2013


I've been tinkering with the nvi refresh from the GSoC in 2011, aka nvi2.

https://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/zy/1
https://github.com/lichray/nvi2

The goal was to update the multibyte handling in nvi-1.79 (the one we
have in our tree) in such a way we could import it.

Anyway.. an early WIP:   http://people.freebsd.org/~peter/nvi2.tgz

peter at overcee[ 9:37AM]~/head/contrib/nvi/catalog-1643> echo $LANG
en_US.UTF-8
peter at overcee[ 9:38AM]~/head/contrib/nvi/catalog-1644> vi -c 'set
fileencoding=GB2312' zh_CN.GB2312.base

.. leads to fun things like:
http://people.freebsd.org/~peter/nvi2-transcoding.png
that's editing the file in GB2312 format, but converting to utf-8 on
the fly for my terminal.

This is with the WITH_ICONV=yes in make.conf.  nvi2 will build without
it but obviously won't be able to work with non-default encoding
methods.

In straight up UTF-8 mode: http://people.freebsd.org/~peter/nvi2-utf8-4.png

How to use the tarball..
1) rm -rf contrib/nvi usr.bin/vi
2) extract tarball into src tree
3) patch -p0 < nvi.diff  (this adds a built-tool to world)

Note that I haven't actually done a buildworld yet. I've just been
building it directly from src/usr.bin/vi with
make obj && make depend && make all && make install
.. to save time.

But you'll need to have WITH_ICONV=yes in make.conf to do the fancy
stuff.  Note that the ports tree is a long way from being
WITH_ICONV=yes safe, so don't do this on an important machine.  An
example of the tweaks to make ports happier:
http://people.freebsd.org/~peter/iconv.diff - that's not complete.
Most of the ports tree was updated to use Mk/Uses/iconv.mk but there's
still some oddballs scattered around in weird places.

-- 
Peter Wemm - peter at wemm.org; peter at FreeBSD.org; peter at yahoo-inc.com; KI6FJV
UTF-8: for when a ' just won\342\200\231t do.
<brueffer> ZFS must be the bacon of file systems. "everything's better with ZFS"


More information about the freebsd-current mailing list