124

In the default Cygwin installation, using CTRL-LEFTARROW or CTRL-RIGHTARROW simply prints 5C or 5D instead of skipping a word at a time as expected.

Home/End keys work properly, so remapping should be possible.

2
  • Note that this question addresses Cygwin, but can have general application to Unix/Linux systems. If you are using PuTTY and find that the solutions here don't work for you, take a look at a question specifically about what codes to use for PuTTY.
    – palswim
    Sep 27, 2017 at 21:37
  • This also happened to me under a full linux; on some advice online, I added a ~/.inputrc file - which annulled all the linux mint defaults. You can get them back by adding $include /etc/inputrc to the top of your ~/.inputrc (assuming that /etc/inputrc is your system-wide inputrc, which it is on Linux Mint)
    – user208769
    Oct 17, 2019 at 14:44

5 Answers 5

167

Found a solution, posting it here for posterity.

Add the following lines to ~/.inputrc (C:\cygwin\home\<username>\.inputrc):

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

When done you can press C-x C-r to re-read the .inputrc file for the current session.

Things to note if you want other similar customisations: Use 5A and 5B for up and down arrows, and 2x for shifted versions.

The "official" key mappings are described in the Bash Reference Manual, but for a quick way to find a key mapping, in bash:

  1. type Ctrl+V
  2. type the key sequence you are interested in (e.g., Alt+). This would print ^[[1;3C
  3. remove the leading ^[ and replace it with \e to make \e[1;3C
  4. place this value in your .inputrc file.
1
  • Some keyboard codes are not showing at all like <kbd>Shift</kbd> + <kbd>Enter</kbd>. How do I find these keyboard codes via Mintty/Windows/Cygwin? Apr 6, 2016 at 12:06
21

You can reload file .inputrc via:

bind -f ~/.inputrc

Source

2
  • 3
    This is useful, but not really an answer to the question - perhaps it would be better as a comment to another answer? Jan 12, 2017 at 14:29
  • Added to @Tom's answer above
    – dovetalk
    May 20, 2017 at 15:54
9

In case you want something that'll work without custom environment settings, for instance when working on a shared account on a server or just to limit the amount of custom configuration being used, Bash has built-ins for this that work in Cygwin.

Namely Alt+f to move forward and Alt+b to move backward.

http://www.gnu.org/software/bash/manual/html_node/Commands-For-Moving.html

1
  • 4
    Thanks, though I am aware of those keys and do use them. I just also use the arrow keys when it's convenient and don't want them spewing escape codes instead of doing the sane thing and moving the cursor.
    – Tom
    Mar 20, 2013 at 22:23
1

When using rxvt with cygwin I found the solution at this link worked for me: control_arrow_keys_in_rxvt.

Add the following lines to ~/.inputrc :

"\eOd": backward-word
"\eOc": forward-word
1
  • That's when an additional layer is changing the transmitted keys (but it doesn't answer the question asked). Nov 3, 2012 at 20:46
0

This solution also works in msys2 consoles:

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

Just place these key combinations in the .inputrc file.

1
  • This is just a part of the accepted answer.
    – CristiFati
    Feb 2, 2021 at 21:59

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .