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


20

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

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

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

请帮忙。

编辑:这是我的 ~/.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 +向左箭头



您正在使用什么外壳?
Sergiy Kolodyazhnyy

Answers:


25

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'

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

3-不要惹恼inputrc


这太早了...已经重新安装了ubuntu
itagomo

3
同样,如果您具有Bash shell,则在〜/ .bashrc文件中,添加bind'“ \ e [1; 5D”向后单词'bind'“ \ e [1; 5C”
向往

3

我有同样的问题。我通过将这些行复制到我的~/.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

只需要前两行
davidchoo12

1

使用创建createrc文件touch ~/.inputrc。 通过使用一些文本编辑器打开〜/ .inputrc文件,
将您所引用的链接中接受的答案的内容复制到该文件中,即,当我使用Ctrl和方向键进行导航时出现的奇怪字符。保存。
使用bind ~/.inputrc命令读取文件或重新启动新终端。事情应该起作用。


我已经做了我的〜/ .inputrc。与/ etc / inputrc具有的内容相同。这里的问题是“ CTRL +向左箭头”命令不要跳到左边的下一个单词。但是除此之外,所有功能都可以正常工作。还有其他解决方案吗?
itagomo

似乎ctrl +向左键的绑定已被覆盖。您可以输入inputrc文件的确切内容吗?第二种可能是线路可能格式错误。顺便说一句,ctrl + left组合的绑定是~/.inputrc文件的最后一行吗?
drake01

编辑过的帖子..参见上文..其他信息,通过按住(必须不松开)CTRL键,然后每次想跳过单词时,都按一次右键,可以使单词向右跳..但是要向左走,每次我跳过单词时都释放CTRL键..
itagomo 2012年

谁能帮忙?
itagomo

1

我发现通过触发Ctrl + Left来向左跳过单词是行不通的(即使当我将某些代码添加到〜/ .inputrc或〜/ .zshrc中时也不行),因为默认情况下,此快捷方式已在Ubuntu中使用(它会调整大小)当前窗口水平)。您可以在系统->首选项->键盘快捷方式菜单中更改默认快捷方式。我只是用Ctrl + Down代替了Ctrl + Left来解放它。替换之后,使用Ctrl + Left向左跳过单词效果很好!即使没有〜/ .inputrc或〜/ .zshc。


长期以来一直在寻找解决方案。这是一个非常简单有效的方法!谢谢。
rizwanhudda
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.