![自定义回滚缓冲区导航键](https://linux22.com/image/173618/%E8%87%AA%E5%AE%9A%E4%B9%89%E5%9B%9E%E6%BB%9A%E7%BC%93%E5%86%B2%E5%8C%BA%E5%AF%BC%E8%88%AA%E9%94%AE.png)
我正在使用基于 VTE 的终端。通过在 bash 会话中手动发送以下命令,我看到回滚缓冲区向上移动了一行,因此我非常有信心转义序列是正确的:
printf "\e[2T"
然后我将其添加到我的.inputrc
但它不起作用。我尝试了各种按键和转义序列的组合,但没有成功:每当我按下它时CTRLk,它就会退出 vi 插入模式,仅此而已。
这是我的完整版.inputrc
set editing-mode vi
# Line cursor in editing mode, block cursor in command mode
set vi-ins-mode-string \1\e[5 q\2
set vi-cmd-mode-string \1\e[2 q\2
set show-mode-in-prompt on
set keymap vi-insert
Control-l: clear-screen
Control-k: "\e[2T"
Control-j: "\e[S"
set keymap vi-command
Control-k: "\e[2T"
Control-j: "\e[S"
答案1
正如 @egmont 在评论中强调的那样,用于滚动回滚缓冲区的键绑定硬编码在 libvte 中。
有一些基于vte的终端,例如终结者或者蒂利克斯,允许自定义用于管理回滚缓冲区的键绑定。我不知道这是如何实现的,但是经过我自己的测试,我可以确认这正是我想要的。