“ CTRL + arrow / s”的gnome终端ANSI转义序列是什么?


10

我正在尝试将bash配置~/.inputrc为这些设置
(注意:指的是左右箭头键)

  • Ctrl+ -应该跳回一个字
  • Ctrl+ -应该向前跳一个字

目前,我已经拥有了~/.inputrc它,但是它不起作用。Ctrl + arrow什么都不产生。

"\eC-5C":forward-word
"\eC-5D":backward-word

我确定我的转义顺序是错误的。组合
的正确转义顺序是Ctrl + arrow什么?

  • 终端:gnome终端内部的tmux

Answers:


14

侏儒终端(更恰当地VTE)模仿xterm的转义序列的某些版本。它执行的紧密程度取决于VTE的版本。

相关的xterm文档在XTerm控制序列PC样式功能键部分中。

您正在寻找的是一个字符串\e[1;5D(用于控制左箭头),其中5表示control修饰符。

在ncurses的,您可以使用这些字符串看infocmp -x,作为值kUP5kDN5kLFT5kRIT5。例如:

    kDN5=\E[1;5B,
    kLFT5=\E[1;5D,
    kRIT5=\E[1;5C,        
    kUP5=\E[1;5A,

感谢您的回复并链接到资源。这为我解决了问题!
the_velour_fog '16

16

查找键序列的代码的最简单方法是使用ctrl- v

因此,您键入ctrl Vctrl 得到:

^[[1;5C

这是一种写ESC[1;5C或的方式\e[1;5C


哇酷。您是否知道gnome-terminal的预期功能,还是偶然发现的东西?
the_velour_fog '16

zsh(bindkey|grep 'quoted-insert')和bash(bind -p|grep 'quoted-insert')都具有键绑定,以输出设置为的键代码<c-v>
kba与莫妮卡一起站在

1
值得的是,Ctrl-V在Vim的插入和命令模式下执行相同的功能。
joeytwiddle

4
@the_velour_fog Ctrl + V的意思是“插入下一个字符,而不是将其解释为终端命令”可追溯到Unix早期。这是内核命令行处理的功能,已被更复杂的输入系统(例如bash,zsh,vi,...)模仿...
Gilles'SO- stop

1
@kba并不是唯一的记录。Bash实际上是由它依赖的GNU Readline库提供的,该库也将其绑定到<c-q>与要复制的Emacs键绑定相匹配的位置。具有讽刺意味的是,Zsh还将其绑定到两者<c-v><c-q>但是仅当您启用Vim模式时才绑定。Readline也可用于Python import rlcompleter增强等其他功能。(来源:tiswww.case.edu/php/chet/readline/readline.html#SEC9man zshzle
ssokolow
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.