On 27/05/11 17:00, Daniel Fishman wrote:
On Fri, 27 May 2011 15:32:06 +0200, Tony 
Mechelynck<[email protected]>  wrote:


1. For non-printable keys outside the ASCII or Unicode "universe", how
they are represented is at the mercy of the keyboard driver and terminal.

2. For historical reasons, on many terminals, the backspace key does not
send a backspace code, nor does the delete key send a delete code. See,
among others, :help :fixdel

And indeed this is the case on my machine. But I know that on my terminal
'Backspace' sends ascii code 127 (I know it because 'showkey' tells me that),
which is<Del>  special key. Why then vim mistakenly recognizes it as<BS>  key,
which is ascii code 8?

Probably because Vim somehow knows (maybe from the termcap or terminfo database for your terminal) that your Backspace key sends 127. Now when you hit the Backspace key, Vim interprets it as the Backspace key, and you're telling me this is wrong? You ought to be happy.


3. Ctrl-K (in Insert mode) is overloaded: when followed by _two_ ASCII
or Unicode keys, which may be control characters but the latter facility
is rarely used, it ushers in a digraph (q.v.); when followed by one
non-Unicode "special key", it inseers that key's<>  notation. Ctrl-K
Ctrl-H is still waiting for the second half of the digraph (we're in the
former case); only then will it look up in its table to see that there
is no defined digraph for that key pair. You could see this by looking
at the bottom right of the screen with 'showcmd' true

This is incorrect. Quoting from the documentation:

----------------------------------------------------
If a digraph with {char1}{char2} does not exist, Vim searches for a digraph
{char2}{char1}.  This helps when you don't remember which character comes
first.

Note that when you enter CTRL-K {char1}, where {char1} is a special key, Vim
enters the code for that special key.  This is not a digraph.
----------------------------------------------------

OK then; ...that there is no defined digraph for that key pair, and also not for the same two characters in the opposite order. Do I have to always spell everything out all the way if I don't want to be accused of "not being correct"? With 'showcmd' true, you could still have seen ^K^H waiting for some additional character at the bottom right corner of your screen.


It means that when vim recognizes {char1} as a special key, it knows that
it is not a digraph and does not wait for {char2} (at least this is what
supposed to happen). It means that if after<ctrl-k>  <ctrl-h>  vim still
waits for {char2}, then<ctrl-h>  was not recognized as a special key, which
is the problem I am talking about.

Ctrl-H is indeed not a "special" key (like Home, End, F1, F2, etc., which have no representation in ASCII or even in Unicode), it is an ASCII control key. Without the Ctrl modifier it is even a printing key.


5. All this means that the sentence "insert the key name by pressing
CTRL-K and then the key you want the name for" is misleading for
printing or control keys, including some of those listed under ":help
keycodes".

According to what I have written above, the sentence is correct for control
keys. I agree that it is misleading for printable charaters.

P.S.: I checked and found that there is no digraph '<2' or '2<'.
Therefore, '<ctrl-k><2' should print '<lt>2', since after you type 2 vim
should understand that neither '<2' not '2<' is a digraph, and print name
of special character and the additional redundant char '2'.
Instead, it just prints 2.


The less-than key is not a special key, it is a printing key. What is strange here is that after Ctrl-K < I can type any number of digits in gvim, the sequence is not terminated; it only terminates (with a beep) once I hit a nondigit. _That_ could be a bug.


Best regards,
Tony.
--
Q:  What's a light-year?
A:  One-third less calories than a regular year.

--
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

Reply via email to