Loading ...
Sorry, an error occurred while loading the content.

Re: compatibility with Sun's original vi for command :su

Expand Messages
  • Bram Moolenaar
    ... The POSIX spec has a bug: it says that :s means :substitute, which means anything starting with :s means :substitute, including :su. But then ... Relevant
    Message 1 of 7 , Jun 25, 2013
    • 0 Attachment
      Christian Brabandt wrote:

      > On Mon, June 24, 2013 23:54, Paul Maier wrote:
      > > Hi,
      > >
      > > the original vi on Sun took :su as :suspend,
      > > whereas vim takes :su as :substitute.
      > >
      > > I am very used to typing :su.
      > >
      > > Would it be possible for VIM 7.4 to add a new compatibility flag to
      > > cpoptions
      > > about the meaning of :su ?
      > >
      > > suggested compatible flag: :su = :suspend, :s = :substitute
      > > without the flag: :su = :substitute
      > >
      >
      > Looks like a bug to me. POSIX also requires :su to be used for
      > :suspend (http://pubs.opengroup.org/onlinepubs/007908799/xcu/ex.html)
      >
      > Do we need a new cpo setting here, or should it be enough to
      > patch vim to take :su as :suspend?

      The POSIX spec has a bug: it says that :s means :substitute, which means
      anything starting with :s means :substitute, including :su. But then
      :suspend can be abbreviated to :su, that's a conflict.

      Relevant quotes:

      For each of the commands listed below, the command can be
      entered as the abbreviation (those characters in the Synopsis
      command word preceding the [), the full command (all characters
      shown for the command word, omitting the [ and ]), or any subset
      of the characters of the full command down to the abbreviation.
      For example, the args command (shown as ar[gs] in the Synopsis)
      can be entered as ar, arg or args.

      [...]

      Substitute

      Synopsis: [range] s[ubstitute] [/pattern/repl/[options] [count] [flags]]

      [...]

      Suspend

      Synopsis: su[spend][!]


      Making an exception for :su to mean :suspend instead of :substitute
      would be weird.

      --
      GALAHAD: No. Look, I can tackle this lot single-handed!
      GIRLS: Yes, yes, let him Tackle us single-handed!
      "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

      /// Bram Moolenaar -- Bram@... -- http://www.Moolenaar.net \\\
      /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
      \\\ an exciting new programming language -- http://www.Zimbu.org ///
      \\\ help me help AIDS victims -- http://ICCF-Holland.org ///

      --
      --
      You received this message from the "vim_use" maillist.
      Do not top-post! Type your reply below the text you are replying to.
      For more information, visit http://www.vim.org/maillist.php

      ---
      You received this message because you are subscribed to the Google Groups "vim_use" group.
      To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@....
      For more options, visit https://groups.google.com/groups/opt_out.
    • Paul Maier
      ... The compatibility mode tries to emulate the behaviour of original Sun s vi, even if it is a bug there. Vim does this at several places. With a new cpo
      Message 2 of 7 , Jun 26, 2013
      • 0 Attachment
        Bram wrote:
        > The POSIX spec has a bug: it says that :s means :substitute, which means
        > anything starting with :s means :substitute, including :su. But then
        > :suspend can be abbreviated to :su, that's a conflict.

        The compatibility mode tries to emulate the behaviour of original Sun's vi,
        even if it is a bug there. Vim does this at several places.

        With a new cpo flag, the user would have a choice to configure vim to personal
        habits. (I have been using original Sun vi for 10 years, typing :su, not
        considering that I am using a bug. Now I am used to it.)


        Tony wrote:
        > cnoreabbrev <expr> su
        > \ ((getcmdtype() == ':' && getcmdpos() <= 3)? 'suspend' : 'su')

        Thanks Tony, this works 100% great!


        In case you developer guys don't want a new cpo flag, maybe you want to add
        Tony's line to the help page.
        (see :help Y for an example of such a line in the help)


        Regards,
        Paul


        --
        --
        You received this message from the "vim_use" maillist.
        Do not top-post! Type your reply below the text you are replying to.
        For more information, visit http://www.vim.org/maillist.php

        ---
        You received this message because you are subscribed to the Google Groups "vim_use" group.
        To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@....
        For more options, visit https://groups.google.com/groups/opt_out.
      Your message has been successfully submitted and would be delivered to recipients shortly.