On Sunday 12 February 2006 07:51, jared r r spiegel wrote:
> On Sat, Feb 11, 2006 at 05:17:29PM -0500, Nick Guenther wrote:
> > Yeah, it does that. I don't know why, I assume historical reasons, and
> > I would like to learn from someone here who does know. Use backspace
> > instead.
> >
> > On 2/11/06, Martin Schrvder <[EMAIL PROTECTED]> wrote:
> > > Hi,
> > > on my freshly installed 3.7 in bash the delete key sends an ~
> > > instead of [del]. How can I fix this?
>
>   it *is* sending del.  rather, the characters sent when you strike the
>   delete key are recognized by the shell and the shell executes the
>   editing command "delete-char-backward".   problem is it also sends
>   a tilde after the sequence that the shell recognizes.
>
>   ^[[3~ is what i get here if i just go to a normal console terminal
>   and hit delete.  that is one character more than my shell is listening
>   for.
>
>   i believe, at least with respect to ksh, bound keys are editing commands
>   that are executed when the shell sees a a control character, which may
>   be have a prefix-character in front of it, come across.
>   the ksh manpage (/ for bind) describes it better than i do,
>   but basically, look at it like this:
>
>   ^[[3~ is three parts.  ^[[, 3, and ~.  ^[[ == ^X, 3 == 3, ~ == ~.
>
>   when the shell sees that, it recognizes "^[[" as 'prefix-2', or ^X.
>   ^X3 is (i think?) set to 'delete-char-backward'.  at that point, the
> shell does that.  the ~ was not part of the sequence of keys the shell
> recognized because it is too many chars.  you get a "prefix" and a "control
> char", not a prefix and two control chars.  if you type:
>
> blah
>
>   and hit 'delete', usually you'll end up with
>
> bla~
>
>   because it did the delete-char-backward, which killed the 'h', but then
>   the '~' showed up after any shell-recognition was done and so it made
>   it out to the terminal as a normal character.
>
>   a hackish way around that is to use '-m' and make it so
>   that the shell substitutes "^[[3" with a control-X.  eg:
>
> $ bind -m '^[[3'='^X'
>
>   ( where '^X' isn't "<shift>-<6>, <shift>-<x>", but rather:
>   "<control>-<v>, <control>-<x>". )
>
>   and then
>
> $ bind '^X~'=delete-char-backward
>
>   which makes it to that when the shell sees '^[[3', it substitutes that
> for a real ^X.  if i'm hitting <delete>, the ~ is also sent by my keypress,
> but at that point, the sequence has become '^X~', which then executes
> 'delete-char-backward'.
>
>   perhaps bash is the same...


And what about the home and end keys? Any way to make them work?

-- 
viq

----------------------------------------------------------------------
Poznaj Stefana! Zmien komunikator! >>> http://link.interia.pl/f1924

Reply via email to