2

我想要做的很简单:使用 readline 启动文件 inputrc 向我的程序之一添加键绑定,但此外,由于我的程序不产生任何输出,我不希望命令名称出现在 stdout 上。

我的问题是:

.inputrc 内容:

"\e[1;5A":'pipe_send\n'

当我按 ctrl+uparrow 时,命令行上出现“pipe_send”:

[ alexkag@$$$$$:: / ]                                                  
$ pipe_send

我想要的是没有pipe_send出现在命令行上,就像 readline 提供的命令一样,例如 history-search-backward、history-search-forward 等。你知道有什么方法吗?也许我不应该使用readline?注意:我的键绑定只能在 bash 中可见,而不是对整个系统可见。

4

1 回答 1

0

正如 gniourf_gniourf 在评论中提到的,解决方案是:

bind -x '"\e[1;5A":pipe_send'

bind -x每当按下某个键时,都会告诉 bash 执行命令:

-x keyseq:shell-command

每当输入 keyeq 时,都会执行 shell-command。执行 shell-command 时,shell 将 READLINE_LINE 变量设置为 Readline 行缓冲区的内容,并将 READLINE_POINT 变量设置为插入点的当前位置。如果执行的命令更改了 READLINE_LINE 或 READLINE_POINT 的值,这些新值将反映在编辑状态中。

\e[1;5A是发送的终端代码CtrlUp

于 2016-03-03T00:44:05.323 回答