77

I'm running Ubuntu 11.04. I installed the Terminator Terminal Emulator 0.95, and Zsh, version 4.3.15.
I have (commonly known) problems with my keys inside the Zsh. At least these:

  • Home/End, nothing happens
  • Insert/Delete/PageUp/PageDown: a "~" is typed

I already tried some configurations for .zshrc which should solve the problem, but no approach really worked so far. Maybe this is related to the combination of Terminator and Zsh. I took the 2 configs on this page: https://bbs.archlinux.org/viewtopic.php?pid=428669.

Does oneone have a similar configuration (especially Terminator and Zsh) and figured out what needs to be inserted into the .zshrc to fix the key settings?

Eric
  • 2,636
  • 21
  • 25
Wolkenarchitekt
  • 20,170
  • 29
  • 111
  • 174

3 Answers3

202

To know the code of a key, execute cat, press enter, press the key, then Ctrl+C.

For me, Home sends ^[[H and End ^[[F, so i can put i my .zshrc in my home dir

bindkey  "^[[H"   beginning-of-line
bindkey  "^[[F"   end-of-line
bindkey  "^[[3~"  delete-char

These codes could change with the terminal emulator you use.

autoload zkbd ; zkbd will create a file with an array of keycodes to use, like bindkey "${key[Home]}" beginning-of-line, and you can source a different file depending on the terminal.

pdem
  • 3,880
  • 1
  • 24
  • 38
lolesque
  • 10,693
  • 5
  • 42
  • 42
  • 4
    The cat thing did not work for me, but this [blog post over here](http://blog.andrewbeacock.com/2007/08/how-to-get-home-end-keys-working-in.html) shows `od -c`which did the trick for me – flq Jul 09 '13 at 19:35
  • 1
    `read` works like `cat` for this. Just remember that `^[` is escape code, `\e` in `.inputrc`. – Victor Sergienko Jan 04 '15 at 10:22
  • 1
    I use '^V' followed by desired keystroke. Seems to work anywhere. – rr- Apr 09 '15 at 14:58
  • 3
    A list of available widgets such as `beginning-of-line` is available [here](http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Standard-Widgets). For instance, `delete-char` is the widget normally associated with the delete key. – Ruud Aug 07 '15 at 19:50
  • 1
    Have been trying to fix this for an hour and realized that other sollutions didn't work because my keyboard is set to swedish. Your cat trick fixed that, thanks! – Johan Bjäreholt Oct 24 '15 at 11:03
  • How would one switch out the different keyfiles created by zkbd for different shells, eg. ssh'ing into a box from terminator vs running zsh directly on the machine vs using PuTTY yields different keycodes – Aaron_H Apr 27 '16 at 02:31
  • Coming from windows to mac has been so painful and mapping these keys in zshrc worked first shot. Just remember to source ~/.zshrc and then get working – httpete Feb 24 '21 at 21:31
40

Thanks to @lolesque, but the solution doesn't work with me. After using zkbd to check my key binding, I came out the below solution. BTW, my $TERM is xterm.

bindkey  "^[[1~"   beginning-of-line
bindkey  "^[[4~"   end-of-line

Hope it helps.

Eric
  • 2,636
  • 21
  • 25
4

For me on WSL2 (Windows 10) this was it

bindkey "^[OH" beginning-of-line
bindkey "^[OF" end-of-line

The cat trick did not work for me as it printed ^[[H as in the accepted answer but I was able to find out the ^[OH sequence by typing Ctrl+v Home in the new Window Terminal running zsh.

esamatti
  • 18,293
  • 11
  • 75
  • 82