Bug 215349

Summary: [PATCH] Restore default tab file completion behavior for nvi
Product: Base System Reporter: Craig Leres <leres>
Component: binAssignee: freebsd-bugs (Nobody) <bugs>
Status: New ---    
Severity: Affects Only Me Keywords: patch
Priority: ---    
Version: CURRENT   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
patch none

Description Craig Leres freebsd_committer freebsd_triage 2016-12-16 22:14:46 UTC
Created attachment 178017 [details]
patch

Prior to FreeBSD 10 and nvi version 2.0.3 the filec option was undefined by default. For example you could change blanks to tabs from vi mode with:

    :%s/ /^I/g

This is the behavior for vi in System V, all versions of BSD vi, nvi up to and including 1.79 and the vi/nvi that shipped with all versions of FreeBSD prior to 10.

Head r254225 upgraded nvi from 1.79 to 2.1.1-4334a8297f which added:

    filec=\t

to opts_init() changing the default. This means to use a tab in a substitution while in vi mode you must escape it with ^V. In most cases typing a bare ^I results in the terminal bell sound.

Note that tab works the old way when editing in ex mode. This means doing substitutions is currently different between vi mode and ex mode.

The upstream repo for nvi is here:

    https://github.com/lichray/nvi2

r322 is the version that added the filec default to opts_init().

Here is the github issue about this problem:

    https://github.com/lichray/nvi2/issues/15

I believe the plan is to either remove this default or apply it contextually.

The attached patch against head/308461 restores the old filec default of undefined.