Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.
For bugs related to Red Hat Enterprise Linux 3 product line. The current stable release is 3.9. For Red Hat Enterprise Linux 6 and above, please visit Red Hat JIRA https://issues.redhat.com/secure/CreateIssue!default.jspa?pid=12332745 to report new issues.

Bug 135406

Summary: /bin/vi isn't POSIX compliant
Product: Red Hat Enterprise Linux 3 Reporter: Kjetil T. Homme <kjetilho>
Component: vimAssignee: Karsten Hopp <karsten>
Status: CLOSED WONTFIX QA Contact: David Lawrence <dkl>
Severity: medium Docs Contact:
Priority: medium    
Version: 3.0   
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2005-09-07 15:33:50 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Kjetil T. Homme 2004-10-12 15:35:04 UTC
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.2)
Gecko/20040908

Description of problem:
vim does not enter complete compatibility mode when starting up as
"vi", specifically, it does not disable multi-level undo.

I expect /bin/vi to be an implementation of vi compliant with POSIX
1003.2, which is quite clear about the behaviour of "u"

  5.35.7.1.78 Undo

  Synopsis: u

  Reverse the last change made to the current buffer.  If repeated,
the command shall alternate between these two states, thus is its own
inverse. [...]

vim will not have this behaviour unless cp is set.


Version-Release number of selected component (if applicable):
vim-minimal-6.2.98-1

How reproducible:
Always

Steps to Reproduce:
1. start /bin/vi
2. enter i whatever ESC
3. press u u


Actual Results:  first whatever disappears, then I get a bell

Expected Results:  whatever should disappear, then reappear.

Additional info:

Comment 1 Karsten Hopp 2005-09-07 15:33:50 UTC
vim makes no claims to be absolutely POSIX compliant and IMHO multi-level
undo is what 99% of our users prefer. There's always the 'redo' comand CTRL-r
if want that last changes back.
If you insist on POSIX-like undo:
Please edit /etc/vimrc or your user .vimrc and a change 
  set nocompatible
to
  set compatible
or add that last line if there's no line with set nocompatible.


Comment 2 Kjetil T. Homme 2005-09-07 16:02:48 UTC
the bug is not about vim, it is about vi.  those who want multi-level undo, can
use vim.  in a POSIX system, the command 

    PATH=`getconf PATH` vi

MUST result in a version of the vi editor which complies with POSIX.  this is
not the case in Red Hat.  now, Red Hat doesn't make any claims of POSIX
compliance yet, but it is one of those things which needs to be fixed to be
certified.

btw, getconf PATH may return something other than /bin as the first element. 
Solaris does this, it puts some utilities in /usr/xpg4/bin in the cases where
changing the behaviour of the utilities in /bin would break too many old scripts.

such a change to getconf and a wrapper script /usr/xpg4/bin/vi containing just

#! /bin/sh

export VIMINIT=":set cp"
exec /bin/vi "$@"

would be enough to fix the POSIX incompatibility.