按键绑定会停止键盘输入回显,并扰乱 PS1 提示符

按键绑定会停止键盘输入回显,并扰乱 PS1 提示符

我希望 Bash 在按下 时清除回滚历史记录Ctrl+L,尤其是当我运行带有大量输出的命令时;我希望回滚到第一个输出行,而不会超出上一个输出。而且,开始一个新选项卡,然后切换回上一个选项卡并关闭它,这实际上不是一个选项;在我的笔记本电脑上,这是 、Ctrl+Shift+TCtrl+Fn+PgDnCtrl+D输入起来有点麻烦。按照 中的建议如何真正清除终端?.bashrc,我在文件的定义后添加了以下行PS1

PS1="\u@\h \w\n\$ "
bind -x '"\C-L": tput reset'

但是,我随后发现,在取消长时间运行的 Bash 命令后,终端在我输入时停止回显标准输入,并开始显示修改后的PS1提示。我最终将范围缩小到按下Ctrl+L,然后启动和中断长时间运行的命令(对于此示例find / | head)。

hwalters@Wintermute ~
$ 
hwalters@Wintermute ~
$ 
hwalters@Wintermute ~
$ (press Ctrl+L)
hwalters@Wintermute ~
$ find / | head
/
/proc
/proc/fb
/proc/fs
/proc/fs/ext4
/proc/fs/ext4/dm-0
/proc/fs/ext4/dm-0/options
/proc/fs/ext4/dm-0/mb_groups
/proc/fs/ext4/dm-0/es_shrinker_info
/proc/fs/ext4/nvme0n1p2
hwalters@Wintermute ~
$ hwalters@Wintermute ~
$ hwalters@Wintermute ~
$ hwalters@Wintermute ~
$ hello
hwalters@Wintermute ~
$ world
hwalters@Wintermute ~
$ 

Enter我列出了出错前后按几次的结果。请注意两行输出helloworld,它们是在我输入echo hello和之后显示的echo worldecho命令和参数在我输入时没有显示,但已被执行。

注意,这确实不是如果我输入tput reset而不是按Ctrl+L,就会发生这种情况,所以这是输入和按键绑定的某种组合。我最初认为这可能是屏幕重置和我通常使用的彩色提示的组合,但在本例中,它也发生在原始提示中。有什么想法吗?

如果有任何区别,我在 Ubuntu(16.04)中使用 Gnome Terminal(3.18.3)。

相关内容