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

itagomo
  • 734

4 Answers4

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.

yPhil
  • 1,557
  • 14
  • 25
  • 2
    this is too long ago ... already reinstalled ubuntu – itagomo May 07 '13 at 05: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 '14 at 19:17
  • 1
    Why not mess with inputrc? At least Bash uses readline that reads its configuration from inputrc. – jarno Jan 05 '20 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 05 '21 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
schmudu
  • 103
  • 3
  • only the first 2 lines are required – davidchoo12 Jul 12 '19 at 05:05
  • @davidchoo12 oh, what are the key bindings of the later lines? – jarno Jan 03 '20 at 19:37
  • @jarno i'm not sure but just using the first 2 lines worked for me – davidchoo12 Jan 05 '20 at 03: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 05 '20 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..

drake01
  • 3,457
  • 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 '12 at 01: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 '12 at 03: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 '12 at 09:21
  • anyone who can help? – itagomo Jul 19 '12 at 06: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.

Banjo
  • 21