Putty SSH: CTRL+Cursor keys don't work skip to previous/next word

31

22

When I am connected to my local Ubuntu dev server with putty (from my Windows 7 box) via SSH, the following key combinations don't work to move the cursor forward and backward on word boundaries:

  • Ctrl+Left Arrow on the cursor pad
  • Ctrl+Right Arrow on the cursor pad

The cursor only moves one character at a time. I'm using bash.

user26767

Posted 2010-01-31T21:15:20.320

Reputation: 521

bash uses Emacs key bindings by default, so Alt+B and Alt+F will move backward/forward one word. You can change to vi bindings if you want and move by w – phuclv – 2018-07-02T02:19:26.687

Answers

45

Add these two lines to your ~/.inputrc file on the destination machine:

"\eOD": backward-word
"\eOC": forward-word

To make sure that they are the correct sequences, at a Bash prompt, type Ctrl-V Ctrl-LeftArrow and Ctrl-V Ctrl-RightArrow, you should see:

^[OD^[OC

When you start a new session, the keys will be available or you can press Ctrl-xCtrl-r to re-read the ~/.inputrc file for the current session.

Paused until further notice.

Posted 2010-01-31T21:15:20.320

Reputation: 86 075

Great! Worked for Ubuntu 14.04 for me, and my putty is running on a Windows 7 box. – Edwin Yip – 2016-05-01T10:01:12.803

Doesn't work with Putty on win10 – nZeus – 2018-02-22T21:41:55.253

@nZeus: The character sequences may be different in your case. What do the Ctrl sequences output for you? – Paused until further notice. – 2018-02-22T22:49:31.710

It works now. I thought I should create this file on the client PC, but I just tried to do it on the server and now it works :+1: – nZeus – 2018-03-06T09:03:01.100

Would a similar trick work for deleting whole words? – Casebash – 2011-11-01T04:00:26.003

@Casebash: Try bind -P | grep kill-word to show you the existing key bindings for deleting whole words. You can change the bindings in a similar manner to my answer above, if needed. – Paused until further notice. – 2011-11-02T15:46:31.443

I noticed that OpenSuSE (12.3) had bound these sequences already to backward-char and forward-char, so rather than just adding these lines, I had to replace the lines that already contained the bindings. – palswim – 2013-11-01T18:15:47.183

4

For the Linux console:

"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\e[5~": beginning-of-history
"\e[6~": end-of-history
"\e[3~": delete-char
"\e[2~": quoted-insert

7.7. Creating the /etc/inputrc File

Meetai.com

Posted 2010-01-31T21:15:20.320

Reputation: 611