Docker Keybinding

问题

docker 这么久,有一个问题一直令人不爽:ctrl+p 向上翻行的时候,总会吞掉一行。

但因为容器只是用来作为运行环境,而且还可以用箭头来进行翻动,就一直留着没去解决它。

今天解决了一堆 DaRemote 关于 Top 10 Processes 的 bug,不想再继续写代码;而儿子又睡着,终于无聊得想来着手解决这个恼人的问题。

原因

产生这个问题的原因非常简单:docker 容器的 detach 快捷键默认是 ctrl+p, ctrl+q。当系统收到第一个 第一个 ctrl+p 的时候,会等待后面的按钮来判断是否快捷键,如果后面的 ctrl+q 则无论按什么键都会把 ctrl+p 和后面的按钮一起发送。

所以,如果后面的按钮是 ctrl+p 或是是 上下键 ,就会出现中间被吞掉一行的错觉。

解决

解决方法也是非常简单:修改 detachKeys 的键绑定。它存储在 ~/.docker/config.json 文件中(如果没有可以自己创建),如下:

{
"detachKeys": "ctrl-q,ctrl-q"
}

其他

docker 的另外一个问题,是使用 docker attach 进入某些容器时,不会出现提示符,需要再按任意键才行。
这个问题下次再研究。