Quantcast

Unable to map Ctrl+Shift+Z

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Unable to map Ctrl+Shift+Z

Marwan Al-Sabbagh

Hi,
   I'm trying to map the keys CTRL+Z to undo, and CTRL+SHIFT+Z to
redo. I've tried the following mappings:

inoremap <C-Z> undo_test
inoremap <C-S-Z> redo_test

  when I press CTRL+Z or CTRL+SHIFT+Z they produce the same result,
inserting the text redo_test. When I run imap to see the current
mappings I get:

<C-Z>    * redo_test

  vim seems to treat <C-Z> and <C-S-Z> as the same key being mapped.
this is further confirmed when I do the following:

In insert mode, pressed CTRL-V. pressed CTRL+Z, got
^Z

In insert mode, pressed CTRL-V. pressed CTRL+SHIFT+Z, got
^Z

  this is however not the case with other keys like CTRL+SHIFT+Right
and CTRL+SHIFT+Right. In that case vim sees the difference and I get
two mappings.

In insert mode, pressed CTRL-V. pressed CTRL+Right, got
<C-Right>

In insert mode, pressed CTRL-V. pressed CTRL+SHIFT+Right, got
<C-S-Right>

  I'm running the following:

gvim 7.1
Ubuntu Linux 8.04

  any help is much appreciated.

cheers,
Marwan

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

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Unable to map Ctrl+Shift+Z

Ben Schmidt

[...]
>   vim seems to treat <C-Z> and <C-S-Z> as the same key being mapped.
> this is further confirmed when I do the following:
[...]
>   this is however not the case with other keys like CTRL+SHIFT+Right
> and CTRL+SHIFT+Right. In that case vim sees the difference and I get
> two mappings.
[...]
> gvim 7.1

What you are seeing is normal. It's a limitation Vim has that's leftover
from terminals where there was no distinction between shifted and
unshifted control keys. Since then, some terminals are able to
distinguish between various modified cursor keys, and Vim has been
updated to recognise these, but it still hasn't been updated to in any
way distinguish shifted and unshifted 'letter' control keys.

Ben.




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

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Unable to map Ctrl+Shift+Z

Bill McCarthy
In reply to this post by Marwan Al-Sabbagh

On Mon 17-Nov-08 6:04am -0600, Marwan Al-Sabbagh wrote:

> I'm trying to map the keys CTRL+Z to undo, and CTRL+SHIFT+Z to
> redo. I've tried the following mappings:
>
> inoremap <C-Z>                  undo_test
> inoremap <C-S-Z>                redo_test

As Ben pointed out, the Control key doesn't recognize case :-(
However the Meta/Alt key does on my Windows machine:
 
    :map <m-z> :echo "Meta z"<CR>
    :map <m-Z> :echo "Meta Z"<CR>

Works fine.

--
Best regards,
Bill



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

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Unable to map Ctrl+Shift+Z

Tony Mechelynck

On 17/11/08 20:09, Bill McCarthy wrote:

> On Mon 17-Nov-08 6:04am -0600, Marwan Al-Sabbagh wrote:
>
>> I'm trying to map the keys CTRL+Z to undo, and CTRL+SHIFT+Z to
>> redo. I've tried the following mappings:
>>
>> inoremap<C-Z>                   undo_test
>> inoremap<C-S-Z>                 redo_test
>
> As Ben pointed out, the Control key doesn't recognize case :-(
> However the Meta/Alt key does on my Windows machine:
>
>      :map<m-z>  :echo "Meta z"<CR>
>      :map<m-Z>  :echo "Meta Z"<CR>
>
> Works fine.
>

Just beware of using them in Insert mode if you use accented characters:
to Vim, Alt-z is ú "small u with acute" and Alt-Z (Alt-shift-z) is Ú
"capital U with acute". Similarly for other Alt-key combinations.

The safest keys to map (keys that don't have any meaning to Vim) are the
F keys, except F1 which means Help, and, on some systems, F10 which
means Menu. Also, to use them together with Shift, Ctrl and/or Alt, you
may have to check which combinations Vim can detect. (On my Linux system
with KDE, the window manager intercepts Ctrl-Fn and Alt-Fn to switch
virtual desktops, the kernel intercepts Ctrl-Alt-Fn to switch virtual
consoles, and no program ever sees any of them. Shift-Fn can be used
though.)


Best regards,
Tony.
--
What garlic is to salad, insanity is to art.

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

Loading...