为什么 ctrl + 左箭头不能跳过单词?

为什么 ctrl + 左箭头不能跳过单词?

我使用的是 Ubuntu 12.04。每次编辑文本时,我都会使用ctrl+ left/right在单词之间移动/跳转。最近,我安装了 xscreensaver 并更改了键盘快捷键以激活屏幕保护程序。但是,Ctrl+left停止响应正常(移动到左侧的下一个单词)。Ctrl+right仍然跳转到右侧的下一个单词。无论我使用终端、Gedit 还是在网页中输入文本,都会出现此问题。

我恢复了 gnome-screensaver,删除了 xscreensaver(还修复了我的键盘快捷键)。但问题仍然存在。

我尝试将内容从复制/etc/inputrc~/.inputrc(默认情况下,我没有 ~/.inputrc)。我在这里得到了一些信息:使用 Ctrl 和箭头键导航时出现奇怪的字符

请帮忙。

编辑:这是我的~/.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

如果我删除 /etc/inputrc,那么按住 CTRL 然后按向右箭头五次就会得到以下结果: 按 ctrl+向右箭头

与上面的第一张图不同,按住 CTRL 并多次按下左箭头不会;5D再次打印出来……就像它接受了一次命令但不再执行一样……见下图: 按 ctrl+左箭头

答案1

1 - 在~/.zshrc

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

2 - 或者~/.bashrc

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

...现在byobu/tmux 中的ctrl+ left/right跳转单词。

3——别惹inputrc

答案2

我也遇到了同样的问题。我通过将这些行复制到我的~/.inputrc文件中解决了这个问题:

"\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

答案3

使用 创建 inputrc 文件touch ~/.inputrc
复制您引用的链接中接受的答案的内容,即使用 Ctrl 和箭头键导航时出现奇怪的字符,使用一些文本编辑器打开文件 ~/.inputrc 来访问此文件。保存它。
使用命令读取文件bind ~/.inputrc或重新启动新终端。一切应该正常。

答案4

我发现通过触发 Ctrl+Left 来向左跳过单词不起作用(即使我在 ~/.inputrc 或 ~/.zshrc 中添加了一些代码也不起作用),因为默认情况下此快捷方式已在 Ubuntu 中使用(它会水平调整当前窗口的大小)。您可以在系统 -> 首选项 -> 键盘快捷键菜单中更改默认快捷方式。我刚刚用 Ctrl+Down 替换了 Ctrl+Left 来释放它。替换后,使用 Ctrl+Left 向左跳过单词就可以正常工作了!即使没有 ~/.inputrc 或 ~/.zshc。

相关内容