On 12/09/09 18:58, Michael Henry wrote:
> On 09/12/2009 07:25 AM, Ismael Barros² wrote:
>
>>  Looks like ":wq!" on the back would actually be a great
>>  conversation starter!
>
> In that vein, I find this an interesting topic for a
> conversation :-)
>
> One of things I really enjoy about this mailing list is the
> opportunity to improve my Vim knowledge.  I often end up at the
> :help command to read (or, often enough, re-read) about the
> topic at hand.  Realizing I didn't know with certainty how :wq!
> worked, I checked the help:
>
> :wq [++opt]             Write the current file and quit.  Writing fails when
>                          the file is read-only or the buffer does not have a
>                          name.  Quitting fails when the last file in the
>                          argument list has not been edited.
>
> :wq! [++opt]            Write the current file and quit.  Writing fails when
>                          the current buffer does not have a name.
>
> When I was first learning Vim, I thought :wq was actually just a
> shortcut way of writing two commands together (:w and :q), and I
> spent some time trying to generalize to the rules for combining
> commands.  In reality, of course, it's just a separate command
> that takes its name from the other two.
>
> I went to the help today because I realized I didn't know
> whether the "!" was, loosely speaking, applying to the :w
> portion or the :q portion of the :wq command.  From the manual
> again:
>
> :w[rite] [++opt]    Write the whole buffer to the current file.  This is
>              the normal way to save changes to a file.  It fails
>              when the 'readonly' option is set or when there is
>              another reason why the file can't be written.
>              For ++opt see |++opt|, but only ++bin, ++nobin, ++ff
>              and ++enc are effective.
>
> :w[rite]! [++opt]    Like ":write", but forcefully write when 'readonly' is
>              set or there is another reason why writing was
>              refused.
>              Note: This may change the permission and ownership of
>              the file and break (symbolic) links.  Add the 'W' flag
>              to 'cpoptions' to avoid this.
>
> :q[uit]            Quit the current window.  Quit Vim if this is the last
>              window.  This fails when changes have been made and
>              Vim refuses to |abandon| the current buffer, and when
>              the last file in the argument list has not been
>              edited.
>              If there are other tab pages and quitting the last
>              window in the current tab page the current tab page is
>              closed |tab-page|.
>
> :q[uit]!        Quit without writing, also when visible buffers have
>              changes.  Does not exit when there are changed hidden
>              buffers.  Use ":qall!" to exit always.
>
> Given the above, I think the "!" in ":wq!" seems to apply to
> both the :w and the :q operations implied by :wq, in that a
> read-only file will be forcibly written (as if via :w!) and the
> quit will succeed even in the face of unvisited files in the
> argument list (as if via :q!).  Does this seem like the correct
> interpretation?  I'd like to think of it this way, but only if
> that's actually what's going on.  I did a test or two, and I
> note that both :q! and :wq! fail to actually quit if a hidden
> buffer has unsaved changes (a feature described in the help for
> :q! but not for :wq!).
>
> Michael Henry

I think it is. I don't use :wq myself (I use :x instead), but it seems 
:wq! is equivalent to :w! | q! the way :wq is (more or less) equivalent 
to :w | q


Best regards,
Tony.
-- 
Don't steal; thou'lt never thus compete successfully in business.
Cheat.
                -- Ambrose Bierce

--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_use" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---

Reply via email to