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

Re: unable to map ctrl-1

Expand Messages
  • MisterW
    ... Doing some testing I have been unable to find a key that I cannot map ctrl to on vim.exe in a command prompt. ctrl 1-10 work as do = - ` / . Can anyone
    Message 1 of 10 , Mar 31, 2009
    • 0 Attachment
      On Apr 1, 3:14 pm, "John Beckett" <johnb.beck...@...> wrote:
      > MisterW wrote:
      > > Why then does vim.exe running in a cmd window allow me to map
      > > <C-1> when gvim won't?
      >
      > George Reilly has just explained that Ctrl-6, Ctrl-2, Ctrl-- are
      > special-cased in Windows (which I didn't know). Perhaps there is
      > also some special casing for Ctrl-1 ... sorry, I don't know.

      Doing some testing I have been unable to find a key that I cannot map
      ctrl to on vim.exe in a command prompt.
      ctrl 1-10 work as do = - ` / .

      Can anyone explain why gvim.exe differs?

      I'll have a look thru the source when I get a chance.

      Matt
      --~--~---------~--~----~------------~-------~--~----~
      You received this message from the "vim_use" maillist.
      For more information, visit http://www.vim.org/maillist.php
      -~----------~----~----~----~------~----~------~--~---
    • Tony Mechelynck
      ... Indeed. Instead of Ctrl-1, which is not portable, not ASCII, and unknown to Vim s cooked input mode, you may want to map one of the following nearby keys
      Message 2 of 10 , Apr 1, 2009
      • 0 Attachment
        On 01/04/09 04:52, John Beckett wrote:
        >
        > MisterW wrote:
        >> Gvim 72 on XP won't let me map certain ctrl key combinations.
        >> Specifically it won't map any of CTRL 1 through to 10. If I
        >> type
        >>
        >> CTRL-V CTRL-1
        >>
        >> I get nothing. Only 2 and 6 actually print anything. Other
        >> applications make use of these keys, and vim itself uses
        >> CTRL-6. Is there something that can be done to make this work?
        >
        > No. The problem is that Vim is designed to be portable; it works
        > on many operating systems and tries to minimise the amount of
        > special code used for dealing with a particular OS.
        >
        > It's not Ctrl-6, it is Ctrl-^ which is part of the venerable
        > ASCII system. There is a lot more than you want to know at
        > http://en.wikipedia.org/wiki/ASCII
        >
        > If you search for "^^" on that page (Ctrl-^) you will see the
        > list of valid Ctrl keys.
        >
        > I know this news is a bit shocking, but I've found that as I
        > learned more of the Vim way of doing things, my desire to map
        > commands to weird character combinations has declined.
        >
        > John

        Indeed.

        Instead of Ctrl-1, which is not portable, not ASCII, and unknown to
        Vim's "cooked" input mode, you may want to map one of the following
        nearby keys instead (based on my Belgian keyboard):

        ² (the key just left of the "one" key)
        ³ (the same, with Shift)
        <S-F1> (Shift-F1)
        Note: F1 without Shift is an alias for ":help" in Vim so you might not
        want to use that as the {lhs} of a mapping. Otherwise most Fn and
        Shift-Fn keys are "safe" to use a {lhs}es in Vim. Other "safe" keys for
        Normal mode but usually not Insert mode, are any keys producing
        upper-ASCII codes -- these will depend on your national keyboard: à, ç,
        ù, é, è, µ and £ on my Belgian keyboard, probably ø and Ø in Danish or
        Norwegian, ł in Polish, ß and possibly umlauted vowels in German, á é í
        ó ú in Spanish, etc.

        The first two example mappings above use upper-ASCII characters, namely
        (on my keyboard) 0xB2 and 0xB3; Shift-F1 is accessible to application
        programs on every OS where I've worked. (Ctrl-F1 isn't accessible to
        gvim, or to any other X11 GUI, in my present openSUSE system, where the
        KDE winmanager preempts it for "switch to virtual desktop #1.)


        The only "printable keys" whose Ctrl counterparts are defined in (7-bit)
        ASCII and therefore usable by Vim are the following:

        - 0x40 to 0x5F including all Latin uppercase: the Ctrl combo maps to the
        result of bitwise AND with 0x1F;
        - Latin lowercase, which are aliases for the corresponding uppercase;
        - the question mark 0x3F, whose Ctrl counterpart is DEL 0x7F.

        If some of them are not on your keyboard, you can use something like the
        following (which I use because I'm not sure if and where the Ctrl-] key,
        a very useful key for help and tag navigatyion in Vim, exists on my
        keyboard):

        :noremap <F9> <C-]>


        Best regards,
        Tony.
        --
        A student, in hopes of understanding the Lambda-nature, came to
        Greenblatt. As they spoke a Multics system hacker walked by. "Is it
        true," asked the student, "that PL-1 has many of the same data types as
        Lisp?" Almost before the student had finished his question, Greenblatt
        shouted, "FOO!", and hit the student with a stick.

        --~--~---------~--~----~------------~-------~--~----~
        You received this message from the "vim_use" maillist.
        For more information, visit http://www.vim.org/maillist.php
        -~----------~----~----~----~------~----~------~--~---
      • Tony Mechelynck
        ... The following are actual examples copied from my vimrc: map using F9, a safe mapping, because my keyboard doesn t gracefully handle
        Message 3 of 10 , Apr 1, 2009
        • 0 Attachment
          On 01/04/09 06:14, John Beckett wrote:
          >
          > MisterW wrote:
          >> Why then does vim.exe running in a cmd window allow me to map
          >> <C-1> when gvim won't?
          >
          > George Reilly has just explained that Ctrl-6, Ctrl-2, Ctrl-- are
          > special-cased in Windows (which I didn't know). Perhaps there is
          > also some special casing for Ctrl-1 ... sorry, I don't know.
          >
          >>> I know this news is a bit shocking, but I've found that as I
          >>> learned more of the Vim way of doing things, my desire to map
          >>> commands to weird character combinations has declined.
          >>
          >> Are you saying you don't make much use of mappings?
          >>
          >> I'm a long time vim user and I find there's an ever
          >> increasing list of things I want to map. I don't consider
          >> control 1-10 a wierd char combination, It's a fairly common
          >> idiom for switching between tabs and the like.
          >
          > Sorry for the POV "weird" comment. It is true that I don't make
          > much use of key mappings (I certainly have some, but not for
          > buffer switching). Sometimes when I'm working on a particular
          > project I will put uppercase marks in files I want to quickly
          > return to. Or I might have a set of special mappings just for
          > the project (and I might use the keypad with stuff like<k1>).
          >
          > I'm sure you don't need this tip, but FWIW there is a tip that
          > maps:
          > ,l : list buffers
          > ,b ,f ,g : go back/forward/last-used
          > ,1 ,2 ,3 : go to buffer 1/2/3 etc
          > http://vim.wikia.com/wiki/Easier_buffer_switching
          >
          > That is the sort of thing I would do given I can't use Ctrl-2
          > etc.
          >
          > John

          The following are actual examples copied from my vimrc:

          map <F9> <C-]>
          " using F9, a 'safe' mapping, because my keyboard doesn't
          " gracefully handle Ctrl-]. Nowadays I know that it's
          " Ctrl-AltGr-$ but that's not practical.

          inoremap <Space> <Space><Left><Right>
          " redefining a standard key, here to create an undo point

          if version < 700
          cnoreabbrev h bot h
          else
          cnoreabbrev <expr> h
          \ ((getcmdtype() == ':' && getcmdpos() <= 2)?
          \ 'bot h' : 'h')
          endif
          map <F1> :bot help<CR>
          " redefines again, to open the help at bottom

          map µ :&&<CR>
          " mapping an upper-ASCII key
          " this one redoes the latest :substitute

          map <F2> :cnext<CR>
          map <S-F2> :cprev<CR>
          " two 'related' F keys, for quickfix navigation

          map <F11> <C-W>w
          map <S-F11> <C-W>W
          imap <F11> <C-O><C-W>w
          imap <S-F11> <C-O><C-W>W
          " 'related' F keys, for split-windows navigation
          " in both Insert/Replace and Normal/Visual

          As you can see, I limit myself to {lhs}es chosen among F and Shift-F
          keys, Normal-mode-upper-ASCII, and intentional redefines, so there will
          be no unexpected clash with either existing Vim commands or keys
          snatched by some OS before Vim gets them.

          The use of µ may seem "weird" but it is an upper-ASCII key, therefore
          not used by Vim in Normal mode, and passed by every OS to the app as a
          "printable" key (once my national keyboard is configured, of course).


          Best regards,
          Tony.
          --
          Anything is good if it's made of chocolate.

          --~--~---------~--~----~------------~-------~--~----~
          You received this message from the "vim_use" maillist.
          For more information, visit http://www.vim.org/maillist.php
          -~----------~----~----~----~------~----~------~--~---
        • Tony Mechelynck
          ... gvim interfaces differetly with the keyboard. On Windows, I m not sure what the difference is, but I guess Windows delivers different bytecodes for
          Message 4 of 10 , Apr 1, 2009
          • 0 Attachment
            On 01/04/09 06:50, MisterW wrote:
            >
            > On Apr 1, 3:14 pm, "John Beckett"<johnb.beck...@...> wrote:
            >> MisterW wrote:
            >>> Why then does vim.exe running in a cmd window allow me to map
            >>> <C-1> when gvim won't?
            >>
            >> George Reilly has just explained that Ctrl-6, Ctrl-2, Ctrl-- are
            >> special-cased in Windows (which I didn't know). Perhaps there is
            >> also some special casing for Ctrl-1 ... sorry, I don't know.
            >
            > Doing some testing I have been unable to find a key that I cannot map
            > ctrl to on vim.exe in a command prompt.
            > ctrl 1-10 work as do = - ` / .
            >
            > Can anyone explain why gvim.exe differs?
            >
            > I'll have a look thru the source when I get a chance.
            >
            > Matt

            gvim interfaces differetly with the keyboard.

            On Windows, I'm not sure what the difference is, but I guess Windows
            delivers different bytecodes for "console" programs running in the "Dos
            Box", usually (in "Western" countries) in cp437 or cp850, and for "GUI"
            programs which have their own windows, and may run in, for instance,
            Unicode or cp1252.

            On X11, gvim interfaces directly with the X11 server via its own
            "builtin_gui" termcap while Vim has an additional intermediate layer to
            go through, namely the terminal, and different console programs running
            at the same time for a single user on a single machine can still get
            different bytecodes for the same keys depending on whether they run in
            the Linux console, in "true" xterm, in xterm emulated by konsole, in
            vt100 emulated by konsole, in gnome-terminal, etc.

            On the Mac, I believe there are similar differences between gvim and
            Console Vim but I don't know the details.


            Best regards,
            Tony.
            --
            There are many intelligent species in the universe. They all own
            cats.

            --~--~---------~--~----~------------~-------~--~----~
            You received this message from the "vim_use" maillist.
            For more information, visit http://www.vim.org/maillist.php
            -~----------~----~----~----~------~----~------~--~---
          Your message has been successfully submitted and would be delivered to recipients shortly.