Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 154947
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T10:04:08+00:00 2026-05-11T10:04:08+00:00

I’m running zsh as the default shell on a Ubuntu box, and everything works

  • 0

I’m running zsh as the default shell on a Ubuntu box, and everything works fine using gnome-terminal (which as far as I know emulates xterm). When I login from a windows box via ssh and putty (which also emulates xterm) suddendly the home/end keys no longer work.

I’ve been able to solve that adding these lines to my zshrc file…

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

…but I’m still wondering what’s wrong here. Any idea?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-11T10:04:09+00:00Added an answer on May 11, 2026 at 10:04 am

    I found it’s a combination:

    One

    The ZSH developers do not think that ZSH should define the actions of the Home, End, Del, … keys.

    Debian and Ubuntu fix this by defining the normal actions the average user would expect in the global /etc/zsh/zshrc file. Following the relevant code (it is the same on Debian and Ubuntu):

    if [[ '$TERM' != emacs ]]; then [[ -z '$terminfo[kdch1]' ]] || bindkey -M emacs '$terminfo[kdch1]' delete-char [[ -z '$terminfo[khome]' ]] || bindkey -M emacs '$terminfo[khome]' beginning-of-line [[ -z '$terminfo[kend]' ]] || bindkey -M emacs '$terminfo[kend]' end-of-line [[ -z '$terminfo[kich1]' ]] || bindkey -M emacs '$terminfo[kich1]' overwrite-mode [[ -z '$terminfo[kdch1]' ]] || bindkey -M vicmd '$terminfo[kdch1]' vi-delete-char [[ -z '$terminfo[khome]' ]] || bindkey -M vicmd '$terminfo[khome]' vi-beginning-of-line [[ -z '$terminfo[kend]' ]] || bindkey -M vicmd '$terminfo[kend]' vi-end-of-line [[ -z '$terminfo[kich1]' ]] || bindkey -M vicmd '$terminfo[kich1]' overwrite-mode  [[ -z '$terminfo[cuu1]' ]] || bindkey -M viins '$terminfo[cuu1]' vi-up-line-or-history [[ -z '$terminfo[cuf1]' ]] || bindkey -M viins '$terminfo[cuf1]' vi-forward-char [[ -z '$terminfo[kcuu1]' ]] || bindkey -M viins '$terminfo[kcuu1]' vi-up-line-or-history [[ -z '$terminfo[kcud1]' ]] || bindkey -M viins '$terminfo[kcud1]' vi-down-line-or-history [[ -z '$terminfo[kcuf1]' ]] || bindkey -M viins '$terminfo[kcuf1]' vi-forward-char [[ -z '$terminfo[kcub1]' ]] || bindkey -M viins '$terminfo[kcub1]' vi-backward-char  # ncurses fogyatekos [[ '$terminfo[kcuu1]' == '^[O'* ]] && bindkey -M viins '${terminfo[kcuu1]/O/[}' vi-up-line-or-history [[ '$terminfo[kcud1]' == '^[O'* ]] && bindkey -M viins '${terminfo[kcud1]/O/[}' vi-down-line-or-history [[ '$terminfo[kcuf1]' == '^[O'* ]] && bindkey -M viins '${terminfo[kcuf1]/O/[}' vi-forward-char [[ '$terminfo[kcub1]' == '^[O'* ]] && bindkey -M viins '${terminfo[kcub1]/O/[}' vi-backward-char [[ '$terminfo[khome]' == '^[O'* ]] && bindkey -M viins '${terminfo[khome]/O/[}' beginning-of-line [[ '$terminfo[kend]' == '^[O'* ]] && bindkey -M viins '${terminfo[kend]/O/[}' end-of-line [[ '$terminfo[khome]' == '^[O'* ]] && bindkey -M emacs '${terminfo[khome]/O/[}' beginning-of-line [[ '$terminfo[kend]' == '^[O'* ]] && bindkey -M emacs '${terminfo[kend]/O/[}' end-of-line fi 

    So, if you are connecting to a Debian or Ubuntu box, you don’t have to do anything. Everything should work automagically (if not, see below).

    But… if you are connecting to another box (e.g. FreeBSD), there might be no user friendly default zshrc. The solution is of course to add the lines from the Debian/Ubuntu zshrc to your own .zshrc.

    Two

    Putty sends xterm as terminal type to the remote host. But messes up somewhere and doesn’t send the correct control codes for Home, End, … that one would expect from an xterm. Or an xterm terminal isn’t expected to send those or whatever… (Del key does work in xterm however, if you configure it in ZSH). Also notice that your Numpad-keys act funny in Vim for example with xterm terminal.

    The solution is to configure Putty to send another terminal type. I’ve tried xterm-color and linux. xterm-color fixed the Home/End problem, but the Numpad was still funny. Setting it to linux fixed both problems.

    You can set terminal type in Putty under Connection -> Data. Do not be tempted to set your terminal type in your .zshrc with export TERM=linux, that is just wrong. The terminal type should be specified by your terminal app. So that if, for example, you connect from a Mac box with a Mac SSH client it can set it’s own terminal type.

    Notice that TERM specifies your terminal type and has nothing to do with the host you are connecting to. I can set my terminal type to linux in Putty and connect to FreeBSD servers without problems.

    So, fix both these things and you should be fine 🙂

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 65k
  • Answers 65k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • added an answer You can do it like this: var elem = document.getElementById('ELEMENT_ID_HERE');… May 11, 2026 at 11:07 am
  • added an answer You should use the build in WCF tracing and logging.… May 11, 2026 at 11:07 am
  • added an answer Already found the answer. The thing can be achieved by… May 11, 2026 at 11:07 am

Related Questions

I keep getting tasks that are above my skill level. How can I address this without coming accross as grossly incompetent?
I have a web-service that I will be deploying to dev, staging and production.
I'm thinking of starting a wiki, probably on a low cost LAMP hosting account.
I have the following tables in my database that have a many-to-many relationship, which
I'm using the RESTful authentication Rails plugin for an app I'm developing. I'm having
I recently printed out Jeff Atwood's Understanding The Hardware blog post and plan on
I find that getting Unicode support in my cross-platform apps a real pain in
I would like to test a string containing a path to a file for
I'm getting this problem: PHP Warning: mail() [function.mail]: SMTP server response: 550 5.7.1 Unable
I'm an Information Architect and JavaScript developer by trade nowadays, but recently I've been

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.