34

I'm on my Ubuntu 12.04. Every time I'm editing text, I use ctrl + left/right to move/jump between words. Recently, I installed xscreensaver and changed keyboard shortcuts to activate my screensaver. But then, Ctrl + left stoped responding to normally (move to the next word to the left). Ctrl + right still jumps to next word to the right. The problem occurs whether I'm using the terminal, Gedit or even typing text in webpages.

I reverted back to gnome-screensaver, removed xscreensaver (also fixed my keyboard shortcuts). But the issue remains.

I tried to copy contents from /etc/inputrc to ~/.inputrc (by default, I don't have ~/.inputrc). I got some info here: Strange characters appearing when I use the Ctrl and Arrow keys to navigate

Please help.

EDIT: Here's my ~/.inputrc:

# /etc/inputrc - global inputrc for libreadline
# See readline(3readline) and `info rluserman' for more information.
# Be 8 bit clean.
set input-meta on
set output-meta on
# To allow the use of 8bit-characters like the german umlauts, uncomment
# the line below. However this makes the meta key not work as a meta key,
# which is annoying to those which don't need to type in 8-bit characters.

# set convert-meta off

# try to enable the application keypad when it is called.  Some systems
# need this to enable the arrow keys.
# set enable-keypad on

# see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys

# do not bell on tab-completion
# set bell-style none
# set bell-style visible

# some defaults / modifications for the emacs mode
$if mode=emacs

# allow the use of the Home/End keys
"\e[1~": beginning-of-line
"\e[4~": end-of-line

# allow the use of the Delete/Insert keys
"\e[3~": delete-char
"\e[2~": quoted-insert

# mappings for "page up" and "page down" to step to the beginning/end
# of the history
# "\e[5~": beginning-of-history
# "\e[6~": end-of-history

# alternate mappings for "page up" and "page down" to search the history
# "\e[5~": history-search-backward
# "\e[6~": history-search-forward

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

$if term=rxvt
"\e[8~": end-of-line
"\eOc": forward-word
"\eOd": backward-word
$endif

# for non RH/Debian xterm, can't hurt for RH/Debian xterm
# "\eOH": beginning-of-line
# "\eOF": end-of-line

# for freebsd console
# "\e[H": beginning-of-line
# "\e[F": end-of-line

$endif

if I remove /etc/inputrc, here's what I get if I hold CTRL then press right arrow five times: pressing ctrl+right arrow

Unlike the first image above, holding CTRL and pressing left arrow more than once will not print out ;5D again... it's like it's accepting the command once and doesn't do it anymore .. see below image: pressing ctrl+left arrow

2

4 Answers 4

51

1 - In ~/.zshrc

bindkey '^[[1;5D' backward-word
bindkey '^[[1;5C' forward-word

2 - Or in ~/.bashrc

bind '"\e[1;5D" backward-word' 
bind '"\e[1;5C" forward-word'

... And now ctrl + left / right jump words in byobu / tmux.

3 - Don't mess with inputrc.

4
  • 2
    this is too long ago ... already reinstalled ubuntu
    – itagomo
    May 7, 2013 at 5:38
  • 3
    Similarly if you have a Bash shell, in your ~/.bashrc file add bind '"\e[1;5D" backward-word' bind '"\e[1;5C" forward-word'
    – ishmael
    Mar 20, 2014 at 19:17
  • 1
    Why not mess with inputrc? At least Bash uses readline that reads its configuration from inputrc.
    – jarno
    Jan 5, 2020 at 20:48
  • This didn't work for me and the reason was - my terminal was producing different chars - ^[[1;3D and ^[[1;3C. One way to check what characters are in your terminal is to run od -c and then press alt + arrow.
    – michalbrz
    May 5, 2021 at 12:12
8

I had this same problem. I fixed it by copying these lines to my ~/.inputrc file:

"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word
4
  • only the first 2 lines are required Jul 12, 2019 at 5:05
  • @davidchoo12 oh, what are the key bindings of the later lines?
    – jarno
    Jan 3, 2020 at 19:37
  • @jarno i'm not sure but just using the first 2 lines worked for me Jan 5, 2020 at 3:31
  • Also Alt-Right and Alt-Left do the same thing by default, but I do not know where that is configured, or is it just the default for Bash. Personally, I configured them to do commands shell-forward-word and shell-backward-word, respectively, because they have non key bindings by default.
    – jarno
    Jan 5, 2020 at 21:10
2

Create inputrc file using touch ~/.inputrc.
Copy the accepted answer's content in the link you referred to i.e. Strange characters appearing when I use the Ctrl and Arrow keys to navigate , to this file by opening the file ~/.inputrc using some text editor. Save it.
Read the file using bind ~/.inputrc command or restart a new terminal. Things should work..

4
  • i already made my ~/.inputrc. same content as what my /etc/inputrc has. the problem here is "CTRL + Left arrow" command don't jump to the next word to the left. but aside from that, all functions work. any other solution?
    – itagomo
    Jul 13, 2012 at 1:43
  • It seems the binding for ctrl+left arrow is being overridden somehow. Could you include the exact content of the inputrc file? 2nd possibility can be the line might be malformed. By the way, Is the binding for ctrl+left combination the last line of the ~/.inputrc file?
    – drake01
    Jul 13, 2012 at 3:38
  • edited post .. see above .. additional info, skipping words to the right works by holding (must not release) the CTRL key then pressing right key once every time I want to jump through words.. but going to the left, I need to release the CTRL key every time I'm skipping words ..
    – itagomo
    Jul 13, 2012 at 9:21
  • anyone who can help?
    – itagomo
    Jul 19, 2012 at 6:53
2

I figured out that skipping words to the left by triggering Ctrl+Left didn't work (even not when I added some code into ~/.inputrc or ~/.zshrc) because by default this shortcut is already used in Ubuntu (it resizes the current window horizontally). You can change the default shortcut in the System -> Preferences -> Keyboard Shortcut menu. I just replaced Ctrl+Left by Ctrl+Down to liberate it. After this replacement, skipping words to the left using Ctrl+Left works fine! Even without ~/.inputrc or ~/.zshc.

1
  • been searching solutions for this since very long. This was a very simple and efficient one! Thanks. Dec 11, 2017 at 21:56

You must log in to answer this question.

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