3

I'm using putty to ssh to Ubuntu with TERM=xterm-256color.

Inside vim, the home and end keys are not working properly. "Home" key makes vim enter in "Insert" mode and put a 'w' character. Similarly "End" key makes vim enter in "Insert" mode before putting a 'q' character.

The keys work fine outside vim. Home and End key puts the cursor at the beginning of the line or end of the line.

Also, this does not happen when I log in with TERM=linux set. Home and End keys inside vim function properly then.

3
  • This type of problem almost invariably comes down to the escape sequences being sent for various special keys. Check to make sure $TERM on the host you are connecting to corresponds to the settings in your PuTTY connection profile.
    – user
    Dec 24, 2016 at 12:31
  • @MichaelKjörling It's the same "xterm-256color" in both putty configuration as well in the host. Same behavior with xterm.
    – tcpip
    Dec 24, 2016 at 12:41
  • @MichaelKjörling I also tried editing escape sequences both by editing the terminfo file, compiling and exposing $TERMINFO variable. And also via editing /etc/vim/vimrc file and setting the proper values for both Home and End keys. No luck.
    – tcpip
    Dec 24, 2016 at 12:42

3 Answers 3

3

Finally. After hours of scouring the internet I stumbled upon something which I should've done much earlier.

Fixed it by checking "Disable application keypad mode" inside Terminal -> Features in PuTTY configuration. Answering it now for anyone who faces this problem.

1

Using export TERM=putty-256color solved my case for Ubuntu 20 with Putty.

Source: https://github.com/neovim/neovim/issues/4809

0

I got this behavior when I changed to screen-256color or tmux-256color, so I didn't want to change my terminfo.

If you like me are happy with your TERM setting you can also do a quick fix to reconfigure and as follows:

:set <Home>=<press Ctrl-V><press Home>
:set <End>=<press Ctrl-V><press End>

Above set <Home>= is a literal text you input, while the rest is what you press on your keyboard. Pressing Ctrl-V+Key adds the literal characters that result from pressing a key.

Trial and then add the above commands to your .vimrc to make the change permanent. You can also test the TERM variable:

if $TERM =~ '\v^(screen|tmux).*'
  set <Home>=^[OH
  set <End>=^[OF
endif

Above the \[ is a single character, which won't work to copy-paste directly.

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.