4

I was trying to map 'q!' to 'Q!' in .vimrc ? I tried the following but not working. :command Q! q! Please provide any suggestion to mitigate this issue. Thank you.

3 Answers 3

3

You just have to give

:command Q q

Similarly, you can do for other commands like,

:command WQ wq
:command W w
3
  • Thank you for your suggestion. ":command Q q" is working perfectly, but the problem creates when I try to map the key "q!" (which is quit without implementing the changes.)
    – Bhaiti
    May 20, 2015 at 11:52
  • In that case, you could simply do ZQ in Normal mode although it takes some rewiring to remember! :) May 20, 2015 at 11:58
  • Thank you. However It is better to stick with q!.
    – Bhaiti
    May 20, 2015 at 12:04
2

This worked perfectly for me:

:command-bang Q q<bang>

From vim's help (:h command-bang):

Special cases                           :command-bang :command-bar
                                        :command-register :command-buffer
There are some special cases as well:

        -bang       The command can take a ! modifier (like :q or :w)

and

Replacement text

The replacement text for a user defined command is scanned for special escape
sequences, using <...> notation.  Escape sequences are replaced with values
from the entered command line, and all other text is copied unchanged.  The
resulting string is executed as an Ex command. [...]

The valid escape sequences are
        [...]
        <bang>  (See the '-bang' attribute) Expands to a ! if the
                command was executed with a ! modifier, otherwise
                expands to nothing.
        [...]
1

Try that:

:cmap Q! q!

Maps Q! in command mode to q!.

1
  • Thank you. It works fine. But If I take time to type ! after Q, It doesn't work. When I type Q! quickly it automatically gets changed to q!. Nevertheless I am not that slow in typing. Thank you once again.
    – Bhaiti
    May 20, 2015 at 12:00

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .