Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I cannot get Home and End keys to work for zsh under Cygwin. Various sources seem to suggest that

bindkey '\e[1~' beginning-of-line
bindkey '\e[4~' end-of-line

will fix the problem but this does not work for me. Strangely, after I enter

bindkey "\e[3~" delete-char

the Delete button starts working (before that it just outputs ~).

Does anyone has an idea what is going on?

I'm on Windows XP and I am using the latest versions of the available Cygwin packages.

UPDATE: This seems to be a problem with mintty, if I run cygwin.bat that launches the Windows command prompt, then everything works fine. Maybe it is related to this bug?

share|improve this question
    
If you call read, what does it output when you press Home and End respectively? – slhck May 30 '12 at 12:18
    
If i run read from the terminal, and then press Home, the cursor jumps at the top of the screen. Is this what you meant? – mavroprovato May 30 '12 at 12:52
    
Then you have to configure your terminal to actually pass these commands to the shell. No idea how this works in Windows though. – slhck May 30 '12 at 12:57
up vote 5 down vote accepted

With the help of the mintty mailing list (https://groups.google.com/forum/?fromgroups#!topic/mintty-discuss/v4b86DBNI80) I found the answer. The lines that I need to add to .zshrc are

bindkey '\e[H' beginning-of-line
bindkey '\e[F' end-of-line 
share|improve this answer
    
Such an easy solution, thanks! – blong Aug 16 '12 at 14:29

Here my complete list of additional useful bindings (corrected to remove colons from commands).

# ctrl-left/right
bindkey "\e[1;5C" forward-word
bindkey "\e[1;5D" backward-word

# ctrl-backspace/delete
bindkey "\C-_" backward-kill-word
bindkey "\e[3;5~" kill-word

# alt-backspace
bindkey "\e\d" undo

bindkey "\e[3~" delete-char
bindkey '\e[H' beginning-of-line
bindkey '\e[F' end-of-line
share|improve this answer

You must log in to answer this question.

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