Bug 215349 - [PATCH] Restore default tab file completion behavior for nvi
Summary: [PATCH] Restore default tab file completion behavior for nvi
Status: New
Alias: None
Product: Base System
Classification: Unclassified
Component: bin (show other bugs)
Version: CURRENT
Hardware: Any Any
: --- Affects Only Me
Assignee: freebsd-bugs (Nobody)
Keywords: patch
Depends on:
Reported: 2016-12-16 22:14 UTC by Craig Leres
Modified: 2016-12-16 22:14 UTC (History)
0 users

See Also:

patch (1.04 KB, text/plain)
2016-12-16 22:14 UTC, Craig Leres
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Craig Leres freebsd_committer 2016-12-16 22:14:46 UTC
Created attachment 178017 [details]

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:


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:


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

Here is the github issue about this problem:


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.