在 readline 手册中
# man readline
下面介绍如何向后搜索和向前搜索。
reverse-search-history (C-r)
Search backward starting at the current line and moving `up' through the history as necessary. This is an incremental search.
forward-search-history (C-s)
Search forward starting at the current line and moving `down' through the history as necessary. This is an incremental search.
当我按下 ctrl+r 并输入“apt-get”时,我可以通过连续按下 ctrl+r 来执行反向搜索历史记录。但是当我按下 ctrl+s 时,终端并没有向前移动。我做错了什么吗?
另外 Meta 前缀“M-”代表什么键?
答案1
该序列C-s
取自终端驱动程序,如您所见
stty -a | grep '\^S'
要释放序列以供 readline 使用,请将停止终端序列设置为其他序列,例如
stty stop ^J
或者将其完全删除
stty stop undef
此后C-s
将在给定的终端中工作。
设置它~/.bashrc
以使其在每个终端上工作。
正如前面所指出的,序列M-
意味着Alt关键。
答案2
除了按照上面的建议分配不同的 TTY“停止”字符之外,如果您不打算使用它,您可以将其完全删除(我倾向于不这样做),如下所示:
$ stty stop undef
然后 readline 可以使用 control-s 进行前向搜索,并且不会因为添加了新的停止字符而出现任何奇怪的行为。
答案3
forward-search-history (Cs) 不起作用(尽管它在手册页中)。
“M-”代表 Alt 键修饰键。
答案4
请不要使用:
stty stop ^J
但
stty stop ^P
或者其他任何东西,因为这^J
会给 ssh 带来很大的问题。(无论如何我都不知道为什么。)我登录后发现Enter反斜杠不起作用。或者我必须输入:
stty sane
export TERM=linux
在我想打字之前
ssh root@192...
所以
stty stop ^P
同时解决了两个问题。