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?

  • 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

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 

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.